added iOS source code
[wl-app.git] / iOS / Pods / FolioReaderKit / Source / FolioReaderPageIndicator.swift
diff --git a/iOS/Pods/FolioReaderKit/Source/FolioReaderPageIndicator.swift b/iOS/Pods/FolioReaderKit/Source/FolioReaderPageIndicator.swift
new file mode 100644 (file)
index 0000000..f6ca2b1
--- /dev/null
@@ -0,0 +1,132 @@
+//
+//  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
+        }
+    }
+}