--- /dev/null
+//
+// 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]
+ }
+}
+