--- /dev/null
+//
+// FolioReaderPageIndicator.swift
+// FolioReaderKit
+//
+// Created by Heberti Almeida on 10/09/15.
+// Copyright (c) 2015 Folio Reader. All rights reserved.
+//
+
+import UIKit
+
+class FolioReaderPageIndicator: UIView {
+ var pagesLabel: UILabel!
+ var minutesLabel: UILabel!
+ var totalMinutes: Int!
+ var totalPages: Int!
+ var currentPage: Int = 1 {
+ didSet { self.reloadViewWithPage(self.currentPage) }
+ }
+
+ fileprivate var readerConfig: FolioReaderConfig
+ fileprivate var folioReader: FolioReader
+
+ init(frame: CGRect, readerConfig: FolioReaderConfig, folioReader: FolioReader) {
+ self.readerConfig = readerConfig
+ self.folioReader = folioReader
+
+ super.init(frame: frame)
+
+ let color = self.folioReader.isNight(self.readerConfig.nightModeBackground, UIColor.white)
+ backgroundColor = color
+ layer.shadowColor = color.cgColor
+ layer.shadowOffset = CGSize(width: 0, height: -6)
+ layer.shadowOpacity = 1
+ layer.shadowRadius = 4
+ layer.shadowPath = UIBezierPath(rect: bounds).cgPath
+ layer.rasterizationScale = UIScreen.main.scale
+ layer.shouldRasterize = true
+
+ pagesLabel = UILabel(frame: CGRect.zero)
+ pagesLabel.font = UIFont(name: "Avenir-Light", size: 10)!
+ pagesLabel.textAlignment = NSTextAlignment.right
+ addSubview(pagesLabel)
+
+ minutesLabel = UILabel(frame: CGRect.zero)
+ minutesLabel.font = UIFont(name: "Avenir-Light", size: 10)!
+ minutesLabel.textAlignment = NSTextAlignment.right
+ // minutesLabel.alpha = 0
+ addSubview(minutesLabel)
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("storyboards are incompatible with truth and beauty")
+ }
+
+ func reloadView(updateShadow: Bool) {
+ minutesLabel.sizeToFit()
+ pagesLabel.sizeToFit()
+
+ let fullW = pagesLabel.frame.width + minutesLabel.frame.width
+ minutesLabel.frame.origin = CGPoint(x: frame.width/2-fullW/2, y: 2)
+ pagesLabel.frame.origin = CGPoint(x: minutesLabel.frame.origin.x+minutesLabel.frame.width, y: 2)
+
+ if updateShadow {
+ layer.shadowPath = UIBezierPath(rect: bounds).cgPath
+ self.reloadColors()
+ }
+ }
+
+ func reloadColors() {
+ let color = self.folioReader.isNight(self.readerConfig.nightModeBackground, UIColor.white)
+ backgroundColor = color
+
+ // Animate the shadow color change
+ let animation = CABasicAnimation(keyPath: "shadowColor")
+ let currentColor = UIColor(cgColor: layer.shadowColor!)
+ animation.fromValue = currentColor.cgColor
+ animation.toValue = color.cgColor
+ animation.fillMode = kCAFillModeForwards
+ animation.isRemovedOnCompletion = false
+ animation.duration = 0.6
+ animation.delegate = self
+ animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
+ layer.add(animation, forKey: "shadowColor")
+
+ minutesLabel.textColor = self.folioReader.isNight(UIColor(white: 1, alpha: 0.3), UIColor(white: 0, alpha: 0.6))
+ pagesLabel.textColor = self.folioReader.isNight(UIColor(white: 1, alpha: 0.6), UIColor(white: 0, alpha: 0.9))
+ }
+
+ fileprivate func reloadViewWithPage(_ page: Int) {
+ let pagesRemaining = self.folioReader.needsRTLChange ? totalPages-(totalPages-page+1) : totalPages-page
+
+ if pagesRemaining == 1 {
+ pagesLabel.text = " " + self.readerConfig.localizedReaderOnePageLeft
+ }
+// else {
+// pagesLabel.text = " \(pagesRemaining) " + self.readerConfig.localizedReaderManyPagesLeft
+// }
+ else if pagesRemaining == 0 {
+ pagesLabel.text = "0 stron do końca"
+ }
+ else if pagesRemaining < 5 {
+ pagesLabel.text = " \(pagesRemaining) " + self.readerConfig.localizedReaderManyPagesLeft
+ }
+ else {
+ pagesLabel.text = " \(pagesRemaining) " + "stron do końca"
+ }
+
+ // PD: Changed
+
+ minutesLabel.text = ""
+// let minutesRemaining = Int(ceil(CGFloat((pagesRemaining * totalMinutes)/totalPages)))
+// if minutesRemaining > 1 {
+// minutesLabel.text = "\(minutesRemaining) " + self.readerConfig.localizedReaderManyMinutes+" ·"
+// } else if minutesRemaining == 1 {
+// minutesLabel.text = self.readerConfig.localizedReaderOneMinute+" ·"
+// } else {
+// minutesLabel.text = self.readerConfig.localizedReaderLessThanOneMinute+" ·"
+// }
+
+ reloadView(updateShadow: false)
+ }
+}
+
+extension FolioReaderPageIndicator: CAAnimationDelegate {
+ func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
+ // Set the shadow color to the final value of the animation is done
+ if let keyPath = anim.value(forKeyPath: "keyPath") as? String , keyPath == "shadowColor" {
+ let color = self.folioReader.isNight(self.readerConfig.nightModeBackground, UIColor.white)
+ layer.shadowColor = color.cgColor
+ }
+ }
+}