X-Git-Url: https://git.mdrn.pl/wl-app.git/blobdiff_plain/53b27422d140022594fc241cca91c3183be57bca..48b2fe9f7c2dc3d9aeaaa6dbfb27c7da4f3235ff:/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 index 0000000..f6ca2b1 --- /dev/null +++ b/iOS/Pods/FolioReaderKit/Source/FolioReaderPageIndicator.swift @@ -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 + } + } +}