added iOS source code
[wl-app.git] / iOS / Pods / FolioReaderKit / Source / PageViewController.swift
diff --git a/iOS/Pods/FolioReaderKit/Source/PageViewController.swift b/iOS/Pods/FolioReaderKit/Source/PageViewController.swift
new file mode 100644 (file)
index 0000000..97e34cd
--- /dev/null
@@ -0,0 +1,147 @@
+//
+//  PageViewController.swift
+//  FolioReaderKit
+//
+//  Created by Heberti Almeida on 14/07/16.
+//  Copyright © 2016 FolioReader. All rights reserved.
+//
+
+import UIKit
+
+class PageViewController: UIPageViewController {
+
+    var segmentedControl: UISegmentedControl!
+    var viewList = [UIViewController]()
+    var segmentedControlItems = [String]()
+    var viewControllerOne: UIViewController!
+    var viewControllerTwo: UIViewController!
+    var index: Int
+    fileprivate var readerConfig: FolioReaderConfig
+    fileprivate var folioReader: FolioReader
+
+    // MARK: Init
+
+    init(folioReader: FolioReader, readerConfig: FolioReaderConfig) {
+        self.folioReader = folioReader
+        self.readerConfig = readerConfig
+        self.index = self.folioReader.currentMenuIndex
+        super.init(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
+
+        self.edgesForExtendedLayout = UIRectEdge()
+        self.extendedLayoutIncludesOpaqueBars = true
+    }
+
+    required init?(coder: NSCoder) {
+        fatalError("storyboards are incompatible with truth and beauty")
+    }
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+
+        segmentedControl = UISegmentedControl(items: segmentedControlItems)
+        segmentedControl.addTarget(self, action: #selector(PageViewController.didSwitchMenu(_:)), for: UIControlEvents.valueChanged)
+        segmentedControl.selectedSegmentIndex = index
+        segmentedControl.setWidth(100, forSegmentAt: 0)
+        segmentedControl.setWidth(100, forSegmentAt: 1)
+        self.navigationItem.titleView = segmentedControl
+
+        viewList = [viewControllerOne, viewControllerTwo]
+
+        viewControllerOne.didMove(toParentViewController: self)
+        viewControllerTwo.didMove(toParentViewController: self)
+
+        self.delegate = self
+        self.dataSource = self
+
+        self.view.backgroundColor = UIColor.white
+        self.setViewControllers([viewList[index]], direction: .forward, animated: false, completion: nil)
+
+        // FIXME: This disable scroll because of highlight swipe to delete, if you can fix this would be awesome
+        for view in self.view.subviews {
+            if view is UIScrollView {
+                let scroll = view as! UIScrollView
+                scroll.bounces = false
+            }
+        }
+        
+        //PD: changed
+        let greenColor = UIColor(red:0.00, green:0.51, blue:0.53, alpha:1.00)
+        let tintColor = folioReader.isNight(greenColor, UIColor.white)
+
+        let closeImage = UIImage(readerImageNamed: "icon-navbar-close")?.imageTintColor(tintColor)?.withRenderingMode(.alwaysOriginal)// ignoreSystemTint(withConfiguration: readerConfig)
+        self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: closeImage, style: .plain, target: self, action: #selector(dismiss as () -> Void))
+    }
+
+    override func viewWillAppear(_ animated: Bool) {
+        super.viewWillAppear(animated)
+        configureNavBar()
+    }
+
+    //PD: changed
+    func configureNavBar() {
+        
+        let greenColor = UIColor(red:0.00, green:0.51, blue:0.53, alpha:1.00)
+        let navBackground = folioReader.isNight(self.readerConfig.nightModeMenuBackground, greenColor)
+        let tintColor = folioReader.isNight(greenColor, UIColor.white)
+        let navText = tintColor
+        let font = UIFont(name: "Avenir-Light", size: 17)!
+        setTranslucentNavigation(color: navBackground, tintColor: tintColor, titleColor: navText, andFont: font)
+    }
+    
+    // MARK: - Segmented control changes
+
+    @objc func didSwitchMenu(_ sender: UISegmentedControl) {
+        self.index = sender.selectedSegmentIndex
+        let direction: UIPageViewControllerNavigationDirection = (index == 0 ? .reverse : .forward)
+        setViewControllers([viewList[index]], direction: direction, animated: true, completion: nil)
+        self.folioReader.currentMenuIndex = index
+    }
+
+    // MARK: - Status Bar
+
+    //PD: changed
+    override var preferredStatusBarStyle : UIStatusBarStyle {
+        return .lightContent //self.folioReader.isNight(.lightContent, .default)
+    }
+}
+
+// MARK: UIPageViewControllerDelegate
+
+extension PageViewController: UIPageViewControllerDelegate {
+
+    func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
+
+        if finished && completed {
+            let viewController = pageViewController.viewControllers?.last
+            segmentedControl.selectedSegmentIndex = viewList.index(of: viewController!)!
+        }
+    }
+}
+
+// MARK: UIPageViewControllerDataSource
+
+extension PageViewController: UIPageViewControllerDataSource {
+
+    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
+
+        let index = viewList.index(of: viewController)!
+        if index == viewList.count - 1 {
+            return nil
+        }
+
+        self.index = self.index + 1
+        return viewList[self.index]
+    }
+
+    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
+
+        let index = viewList.index(of: viewController)!
+        if index == 0 {
+            return nil
+        }
+
+        self.index = self.index - 1
+        return viewList[self.index]
+    }
+}
+