diff --git a/Kiwix-iOS/Assets.xcassets/Wiki.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Compass.imageset/Contents.json
similarity index 87%
rename from Kiwix-iOS/Assets.xcassets/Wiki.imageset/Contents.json
rename to Kiwix-iOS/Assets.xcassets/Compass.imageset/Contents.json
index bc080854..0a79bf16 100644
--- a/Kiwix-iOS/Assets.xcassets/Wiki.imageset/Contents.json
+++ b/Kiwix-iOS/Assets.xcassets/Compass.imageset/Contents.json
@@ -10,7 +10,7 @@
},
{
"idiom" : "universal",
- "filename" : "wikipedia5.png",
+ "filename" : "compass.png",
"scale" : "3x"
}
],
diff --git a/Kiwix-iOS/Assets.xcassets/Compass.imageset/compass.png b/Kiwix-iOS/Assets.xcassets/Compass.imageset/compass.png
new file mode 100644
index 00000000..eab29929
Binary files /dev/null and b/Kiwix-iOS/Assets.xcassets/Compass.imageset/compass.png differ
diff --git a/Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/Contents.json
index 0e99f802..0de111d9 100644
--- a/Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/Contents.json
+++ b/Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/Contents.json
@@ -10,7 +10,7 @@
},
{
"idiom" : "universal",
- "filename" : "list.png",
+ "filename" : "list-1.png",
"scale" : "3x"
}
],
diff --git a/Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/list-1.png b/Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/list-1.png
new file mode 100644
index 00000000..34a6fec4
Binary files /dev/null and b/Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/list-1.png differ
diff --git a/Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/list.png b/Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/list.png
deleted file mode 100644
index f8c11399..00000000
Binary files a/Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/list.png and /dev/null differ
diff --git a/Kiwix-iOS/Assets.xcassets/Wiki.imageset/wikipedia5.png b/Kiwix-iOS/Assets.xcassets/Wiki.imageset/wikipedia5.png
deleted file mode 100644
index 1be694eb..00000000
Binary files a/Kiwix-iOS/Assets.xcassets/Wiki.imageset/wikipedia5.png and /dev/null differ
diff --git a/Kiwix-iOS/Controller/MainVC.swift b/Kiwix-iOS/Controller/MainVC.swift
index a460db54..159cead6 100644
--- a/Kiwix-iOS/Controller/MainVC.swift
+++ b/Kiwix-iOS/Controller/MainVC.swift
@@ -1,5 +1,5 @@
//
-// MainVC2.swift
+// MainVC.swift
// Kiwix
//
// Created by Chris Li on 1/22/16.
@@ -11,9 +11,10 @@ import UIKit
class MainVC: UIViewController {
@IBOutlet weak var webView: UIWebView!
- var bookmarkVC: UIViewController?
- var libraryVC: UIViewController?
- var settingVC: UIViewController?
+ var tableOfContentController: TableOfContentController?
+ var bookmarkController: UIViewController?
+ var libraryController: UIViewController?
+ var settingController: UIViewController?
var searchVC: SearchVC?
let searchBar = SearchBar()
@@ -53,15 +54,18 @@ class MainVC: UIViewController {
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
- bookmarkVC = nil
- libraryVC = nil
- settingVC = nil
+ tableOfContentController = nil
+ bookmarkController = nil
+ libraryController = nil
+ settingController = nil
searchVC = nil
}
override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
- configureUIElements(self.traitCollection)
+ if previousTraitCollection?.horizontalSizeClass != traitCollection.horizontalSizeClass {
+ configureUIElements(traitCollection.horizontalSizeClass)
+ }
}
// MARK: - First Time Launch Alert
@@ -75,19 +79,19 @@ class MainVC: UIViewController {
// MARK: - Configure
- func configureUIElements(traitCollection: UITraitCollection) {
- switch traitCollection.horizontalSizeClass {
+ func configureUIElements(horizontalSizeClass: UIUserInterfaceSizeClass) {
+ switch horizontalSizeClass {
case .Regular:
navigationController?.toolbarHidden = true
toolbarItems?.removeAll()
- navigationItem.leftBarButtonItems = [navigateLeftButton, navigateRightButton, blankButton]
+ navigationItem.leftBarButtonItems = [navigateLeftButton, navigateRightButton, tableOfContentButton]
navigationItem.rightBarButtonItems = [settingButton, libraryButton, bookmarkButton]
case .Compact:
if !searchBar.isFirstResponder() {navigationController?.toolbarHidden = false}
navigationItem.leftBarButtonItems?.removeAll()
navigationItem.rightBarButtonItems?.removeAll()
let spaceButton = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil)
- toolbarItems = [navigateLeftButton, spaceButton, navigateRightButton, spaceButton, bookmarkButton, spaceButton, libraryButton, spaceButton, settingButton]
+ toolbarItems = [navigateLeftButton, spaceButton, navigateRightButton, spaceButton, tableOfContentButton, spaceButton, bookmarkButton, spaceButton, libraryButton, spaceButton, settingButton]
if UIDevice.currentDevice().userInterfaceIdiom == .Pad && searchBar.isFirstResponder() {
navigationItem.setRightBarButtonItem(cancelButton, animated: true)
}
@@ -99,6 +103,7 @@ class MainVC: UIViewController {
func configureButtonColor() {
configureNavigationButtonTint()
+ tableOfContentButton.tintColor = UIColor.grayColor()
libraryButton.tintColor = UIColor.grayColor()
settingButton.tintColor = UIColor.grayColor()
UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).tintColor = UIColor.themeColor
@@ -198,10 +203,10 @@ class MainVC: UIViewController {
lazy var navigateLeftButton: UIBarButtonItem = UIBarButtonItem(imageNamed: "LeftArrow", target: self, action: #selector(MainVC.navigateLeftButtonTapped))
lazy var navigateRightButton: UIBarButtonItem = UIBarButtonItem(imageNamed: "RightArrow", target: self, action: #selector(MainVC.navigateRightButtonTapped))
+ lazy var tableOfContentButton: UIBarButtonItem = UIBarButtonItem(imageNamed: "TableOfContent", target: self, action: #selector(MainVC.showTableOfContentButtonTapped))
lazy var bookmarkButton: LPTBarButtonItem = LPTBarButtonItem(imageName: "Star", highlightedImageName: "StarHighlighted", delegate: self)
lazy var libraryButton: UIBarButtonItem = UIBarButtonItem(imageNamed: "Library", target: self, action: #selector(MainVC.showLibraryButtonTapped))
lazy var settingButton: UIBarButtonItem = UIBarButtonItem(imageNamed: "Setting", target: self, action: #selector(MainVC.showSettingButtonTapped))
- lazy var blankButton: UIBarButtonItem = UIBarButtonItem(imageNamed: "BlankImage", target: nil, action: nil)
lazy var cancelButton: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Cancel, target: self, action: #selector(MainVC.cancelButtonTapped))
// MARK: - Actions
@@ -214,19 +219,26 @@ class MainVC: UIViewController {
webView.goForward()
}
+ func showTableOfContentButtonTapped(sender: UIBarButtonItem) {
+ guard let controller = tableOfContentController ?? UIStoryboard.main.initViewController(TableOfContentController.self) else {return}
+ controller.modalPresentationStyle = .Popover
+ controller.popoverPresentationController?.barButtonItem = sender
+ controller.popoverPresentationController?.permittedArrowDirections = [.Up, .Down]
+ controller.popoverPresentationController?.delegate = self
+ presentViewController(controller, animated: true, completion: nil)
+ }
+
func showLibraryButtonTapped() {
- guard let viewController = libraryVC ?? UIStoryboard.library.instantiateInitialViewController() else {return}
- //let viewController = UITabBarController()
- //viewController.viewControllers = [UITableViewController(), UITableViewController(), UITableViewController()]
+ guard let viewController = libraryController ?? UIStoryboard.library.instantiateInitialViewController() else {return}
viewController.modalPresentationStyle = .FormSheet
- libraryVC = viewController
+ libraryController = viewController
presentViewController(viewController, animated: true, completion: nil)
}
func showSettingButtonTapped() {
- guard let viewController = settingVC ?? UIStoryboard.setting.instantiateInitialViewController() else {return}
+ guard let viewController = settingController ?? UIStoryboard.setting.instantiateInitialViewController() else {return}
viewController.modalPresentationStyle = .FormSheet
- settingVC = viewController
+ settingController = viewController
presentViewController(viewController, animated: true, completion: nil)
}
@@ -234,5 +246,4 @@ class MainVC: UIViewController {
hideSearch()
navigationItem.setRightBarButtonItem(nil, animated: true)
}
-
}
diff --git a/Kiwix-iOS/Controller/MainVCWebViewD.swift b/Kiwix-iOS/Controller/MainVCDelegates.swift
similarity index 74%
rename from Kiwix-iOS/Controller/MainVCWebViewD.swift
rename to Kiwix-iOS/Controller/MainVCDelegates.swift
index 2fe98bc1..b373bd09 100644
--- a/Kiwix-iOS/Controller/MainVCWebViewD.swift
+++ b/Kiwix-iOS/Controller/MainVCDelegates.swift
@@ -1,5 +1,5 @@
//
-// MainVCWebViewD.swift
+// MainVCOtherD.swift
// Kiwix
//
// Created by Chris Li on 1/22/16.
@@ -8,7 +8,54 @@
import UIKit
-extension MainVC: UIWebViewDelegate, UIScrollViewDelegate {
+extension MainVC: LPTBarButtonItemDelegate, UISearchBarDelegate, UIPopoverPresentationControllerDelegate, UIWebViewDelegate, UIScrollViewDelegate {
+
+ // MARK: - LPTBarButtonItemDelegate
+
+ func barButtonTapped(sender: LPTBarButtonItem, gestureRecognizer: UIGestureRecognizer) {
+ guard sender == bookmarkButton else {return}
+
+ guard let controller = bookmarkController ?? UIStoryboard.main.initViewController("BookmarkNav", type: UINavigationController.self) else {return}
+ bookmarkController = controller
+ controller.modalPresentationStyle = .FormSheet
+ presentViewController(controller, animated: true, completion: nil)
+ }
+
+ func barButtonLongPressedStart(sender: LPTBarButtonItem, gestureRecognizer: UIGestureRecognizer) {
+ guard sender == bookmarkButton else {return}
+ guard !webView.hidden else {return}
+ guard let article = article else {return}
+ guard let bookmarkHUDVC = UIStoryboard.main.initViewController(BookmarkHUDVC.self) else {return}
+ UIApplication.appDelegate.window?.addSubview(bookmarkHUDVC.view)
+ article.isBookmarked = !article.isBookmarked
+ bookmarkHUDVC.show(article.isBookmarked)
+ configureBookmarkButton()
+ }
+
+ // MARK: - UISearchBarDelegate
+
+ func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
+ showSearch()
+ }
+
+ func searchBarCancelButtonClicked(searchBar: UISearchBar) {
+ hideSearch()
+ configureSearchBarPlaceHolder()
+ }
+
+ func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
+ searchVC?.searchText = searchText
+ }
+
+ func searchBarSearchButtonClicked(searchBar: UISearchBar) {
+ searchVC?.searchResultTBVC?.selectFirstResultIfPossible()
+ }
+
+ // MARK: - UIPopoverPresentationControllerDelegate
+
+ func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
+ return .None
+ }
// MARK: - UIWebViewDelegate
@@ -132,4 +179,5 @@ extension MainVC: UIWebViewDelegate, UIScrollViewDelegate {
}
}
}
+
}
\ No newline at end of file
diff --git a/Kiwix-iOS/Controller/MainVCLoading.swift b/Kiwix-iOS/Controller/MainVCLoading.swift
index 8bbff0e5..36014c35 100644
--- a/Kiwix-iOS/Controller/MainVCLoading.swift
+++ b/Kiwix-iOS/Controller/MainVCLoading.swift
@@ -29,10 +29,34 @@ extension MainVC {
// MARK: - JS
func getTOC(webView: UIWebView) {
- guard let context = webView.valueForKeyPath("documentView.webView.mainFrame.javaScriptContext") as? JSContext else {return}
- guard let path = NSBundle.mainBundle().pathForResource("getTableOfContents", ofType: "js") else {return}
- guard let jString = Utilities.contentOfFileAtPath(path) else {return}
- let value: JSValue = context.evaluateScript(jString)
- print(value.toArray())
+ guard let context = webView.valueForKeyPath("documentView.webView.mainFrame.javaScriptContext") as? JSContext,
+ let path = NSBundle.mainBundle().pathForResource("getTableOfContents", ofType: "js"),
+ let jString = Utilities.contentOfFileAtPath(path),
+ let elements = context.evaluateScript(jString).toArray() as? [[String: String]] else {return}
+ var headings = [HTMLHeading]()
+ for element in elements {
+ guard let heading = HTMLHeading(rawValue: element) else {continue}
+ headings.append(heading)
+ }
+ }
+}
+
+class HTMLHeading {
+ let id: String
+ let tagName: String
+ let textContent: String
+ let level: Int
+
+ init?(rawValue: [String: String]) {
+ let tagName = rawValue["tagName"] ?? ""
+ self.id = rawValue["id"] ?? ""
+ self.textContent = rawValue["textContent"] ?? ""
+ self.tagName = tagName
+ self.level = Int(tagName.stringByReplacingOccurrencesOfString("H", withString: "")) ?? -1
+
+ if id == "" {return nil}
+ if tagName == "" {return nil}
+ if textContent == "" {return nil}
+ if level == -1 {return nil}
}
}
\ No newline at end of file
diff --git a/Kiwix-iOS/Controller/MainVCOtherD.swift b/Kiwix-iOS/Controller/MainVCOtherD.swift
deleted file mode 100644
index 483f1f9f..00000000
--- a/Kiwix-iOS/Controller/MainVCOtherD.swift
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// MainVCOtherD.swift
-// Kiwix
-//
-// Created by Chris Li on 1/22/16.
-// Copyright © 2016 Chris. All rights reserved.
-//
-
-import UIKit
-
-extension MainVC: LPTBarButtonItemDelegate, UISearchBarDelegate {
-
- // MARK: - LPTBarButtonItemDelegate
-
- func barButtonTapped(sender: LPTBarButtonItem, gestureRecognizer: UIGestureRecognizer) {
- guard sender == bookmarkButton else {return}
-
- guard let controller = bookmarkVC ?? UIStoryboard.main.initViewController("BookmarkNav", type: UINavigationController.self) else {return}
- bookmarkVC = controller
- controller.modalPresentationStyle = .FormSheet
- presentViewController(controller, animated: true, completion: nil)
- }
-
- func barButtonLongPressedStart(sender: LPTBarButtonItem, gestureRecognizer: UIGestureRecognizer) {
- guard sender == bookmarkButton else {return}
- guard !webView.hidden else {return}
- guard let article = article else {return}
- guard let bookmarkHUDVC = UIStoryboard.main.initViewController(BookmarkHUDVC.self) else {return}
- UIApplication.appDelegate.window?.addSubview(bookmarkHUDVC.view)
- article.isBookmarked = !article.isBookmarked
- bookmarkHUDVC.show(article.isBookmarked)
- configureBookmarkButton()
- }
-
- // MARK: - UISearchBarDelegate
-
- func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
- showSearch()
- }
-
- func searchBarCancelButtonClicked(searchBar: UISearchBar) {
- hideSearch()
- configureSearchBarPlaceHolder()
- }
-
- func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
- searchVC?.searchText = searchText
- }
-
- func searchBarSearchButtonClicked(searchBar: UISearchBar) {
- searchVC?.searchResultTBVC?.selectFirstResultIfPossible()
- }
-}
\ No newline at end of file
diff --git a/Kiwix-iOS/Controller/TableOfContentController.swift b/Kiwix-iOS/Controller/TableOfContentController.swift
new file mode 100644
index 00000000..9fe0cda8
--- /dev/null
+++ b/Kiwix-iOS/Controller/TableOfContentController.swift
@@ -0,0 +1,73 @@
+//
+// TableOfContentController.swift
+// Kiwix
+//
+// Created by Chris Li on 6/26/16.
+// Copyright © 2016 Chris. All rights reserved.
+//
+
+import UIKit
+import DZNEmptyDataSet
+
+class TableOfContentController: UITableViewController, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
+
+ var headings = [String]()
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ tableView.emptyDataSetSource = self
+ tableView.emptyDataSetDelegate = self
+ tableView.tableFooterView = UIView()
+ }
+
+ override func viewWillAppear(animated: Bool) {
+ super.viewWillAppear(animated)
+ configurePreferredContentSize()
+ }
+
+ func configurePreferredContentSize() {
+ let count = headings.count
+ preferredContentSize = CGSizeMake(300, count == 0 ? 350 : CGFloat(count) * 44.0)
+ }
+
+ // MARK: - Table view data source
+
+ override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
+ return 1
+ }
+
+ override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return 0
+ }
+
+
+ override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
+
+
+ return cell
+ }
+
+
+ // MARK: - Empty table datasource & delegate
+
+ func imageForEmptyDataSet(scrollView: UIScrollView!) -> UIImage! {
+ return UIImage(named: "Compass")
+ }
+
+ func titleForEmptyDataSet(scrollView: UIScrollView!) -> NSAttributedString! {
+ let text = NSLocalizedString("Table Of Contents Not Available", comment: "Table Of Content, empty text")
+ let attributes = [NSFontAttributeName: UIFont.boldSystemFontOfSize(18.0),
+ NSForegroundColorAttributeName: UIColor.darkGrayColor()]
+ return NSAttributedString(string: text, attributes: attributes)
+ }
+
+ func verticalOffsetForEmptyDataSet(scrollView: UIScrollView!) -> CGFloat {
+ return 0
+ }
+
+ func spaceHeightForEmptyDataSet(scrollView: UIScrollView!) -> CGFloat {
+ return 30.0
+ }
+
+}
diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist
index 59bdd77b..da711ed3 100644
--- a/Kiwix-iOS/Info.plist
+++ b/Kiwix-iOS/Info.plist
@@ -36,7 +36,7 @@
CFBundleSignature
????
CFBundleVersion
- 706
+ 745
ITSAppUsesNonExemptEncryption
LSRequiresIPhoneOS
diff --git a/Kiwix-iOS/Storyboard/Main.storyboard b/Kiwix-iOS/Storyboard/Main.storyboard
index 54268e40..f1c86909 100644
--- a/Kiwix-iOS/Storyboard/Main.storyboard
+++ b/Kiwix-iOS/Storyboard/Main.storyboard
@@ -711,6 +711,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj
index 99dc6d56..740152d0 100644
--- a/Kiwix.xcodeproj/project.pbxproj
+++ b/Kiwix.xcodeproj/project.pbxproj
@@ -94,8 +94,7 @@
971A10601D022DF2007FC62C /* LanguageTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A105F1D022DF2007FC62C /* LanguageTBVC.swift */; };
971A10651D022E0A007FC62C /* MainVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10611D022E0A007FC62C /* MainVC.swift */; };
971A10661D022E0A007FC62C /* MainVCLoading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10621D022E0A007FC62C /* MainVCLoading.swift */; };
- 971A10671D022E0A007FC62C /* MainVCOtherD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10631D022E0A007FC62C /* MainVCOtherD.swift */; };
- 971A10681D022E0A007FC62C /* MainVCWebViewD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10641D022E0A007FC62C /* MainVCWebViewD.swift */; };
+ 971A10671D022E0A007FC62C /* MainVCDelegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10631D022E0A007FC62C /* MainVCDelegates.swift */; };
971A106A1D022E15007FC62C /* BookmarkHUDVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10691D022E15007FC62C /* BookmarkHUDVC.swift */; };
971A106C1D022E50007FC62C /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A106B1D022E50007FC62C /* Utilities.swift */; };
971A106F1D022E62007FC62C /* DownloadProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A106D1D022E62007FC62C /* DownloadProgress.swift */; };
@@ -260,6 +259,7 @@
97BA32A51CEBC36300339A47 /* RootWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BA32A31CEBC29500339A47 /* RootWindowController.swift */; };
97D452BC1D16FF010033666F /* RecentSearchCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D452BB1D16FF010033666F /* RecentSearchCVC.swift */; };
97D452BE1D1723FF0033666F /* CollectionViewCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D452BD1D1723FF0033666F /* CollectionViewCells.swift */; };
+ 97D55EF61D2075180081B523 /* TableOfContentController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D55EF51D2075180081B523 /* TableOfContentController.swift */; };
97DF23551CE807A1003E1E5A /* GlobalOperationQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97DF23541CE807A1003E1E5A /* GlobalOperationQueue.swift */; };
97E609F11D103DED00EBCB9D /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97E609F01D103DED00EBCB9D /* NotificationCenter.framework */; };
97E609F41D103DED00EBCB9D /* TodayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E609F31D103DED00EBCB9D /* TodayViewController.swift */; };
@@ -407,8 +407,7 @@
971A105F1D022DF2007FC62C /* LanguageTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LanguageTBVC.swift; path = "Kiwix-iOS/Controller/LanguageTBVC.swift"; sourceTree = SOURCE_ROOT; };
971A10611D022E0A007FC62C /* MainVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MainVC.swift; path = "Kiwix-iOS/Controller/MainVC.swift"; sourceTree = SOURCE_ROOT; };
971A10621D022E0A007FC62C /* MainVCLoading.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MainVCLoading.swift; path = "Kiwix-iOS/Controller/MainVCLoading.swift"; sourceTree = SOURCE_ROOT; };
- 971A10631D022E0A007FC62C /* MainVCOtherD.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MainVCOtherD.swift; path = "Kiwix-iOS/Controller/MainVCOtherD.swift"; sourceTree = SOURCE_ROOT; };
- 971A10641D022E0A007FC62C /* MainVCWebViewD.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MainVCWebViewD.swift; path = "Kiwix-iOS/Controller/MainVCWebViewD.swift"; sourceTree = SOURCE_ROOT; };
+ 971A10631D022E0A007FC62C /* MainVCDelegates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MainVCDelegates.swift; path = "Kiwix-iOS/Controller/MainVCDelegates.swift"; sourceTree = SOURCE_ROOT; };
971A10691D022E15007FC62C /* BookmarkHUDVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BookmarkHUDVC.swift; path = "Kiwix-iOS/Controller/BookmarkHUDVC.swift"; sourceTree = SOURCE_ROOT; };
971A106B1D022E50007FC62C /* Utilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Utilities.swift; path = "Kiwix-iOS/Model/Utilities.swift"; sourceTree = SOURCE_ROOT; };
971A106D1D022E62007FC62C /* DownloadProgress.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DownloadProgress.swift; path = "Kiwix-iOS/Model/DownloadProgress.swift"; sourceTree = SOURCE_ROOT; };
@@ -538,6 +537,7 @@
97D452BF1D1871E70033666F /* SearchHistoryTBVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SearchHistoryTBVC.swift; path = "Kiwix-iOS/Controller/Search/SearchHistoryTBVC.swift"; sourceTree = SOURCE_ROOT; };
97D452C01D1871E70033666F /* SearchLocalBooksCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SearchLocalBooksCVC.swift; path = "Kiwix-iOS/Controller/Search/SearchLocalBooksCVC.swift"; sourceTree = SOURCE_ROOT; };
97D452C11D1871E70033666F /* SearchTabController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SearchTabController.swift; path = "Kiwix-iOS/Controller/Search/SearchTabController.swift"; sourceTree = SOURCE_ROOT; };
+ 97D55EF51D2075180081B523 /* TableOfContentController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TableOfContentController.swift; path = "Kiwix-iOS/Controller/TableOfContentController.swift"; sourceTree = SOURCE_ROOT; };
97DF23541CE807A1003E1E5A /* GlobalOperationQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlobalOperationQueue.swift; sourceTree = ""; };
97E609EF1D103DED00EBCB9D /* Kiwix-iOSWidget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Kiwix-iOSWidget.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
97E609F01D103DED00EBCB9D /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; };
@@ -844,9 +844,7 @@
children = (
971A10611D022E0A007FC62C /* MainVC.swift */,
971A10621D022E0A007FC62C /* MainVCLoading.swift */,
- 971A10631D022E0A007FC62C /* MainVCOtherD.swift */,
- 971A10641D022E0A007FC62C /* MainVCWebViewD.swift */,
- 971A10691D022E15007FC62C /* BookmarkHUDVC.swift */,
+ 971A10631D022E0A007FC62C /* MainVCDelegates.swift */,
);
name = MainVC;
sourceTree = "";
@@ -1028,6 +1026,8 @@
972B007D1C35DBAB00B5FDC5 /* MainVC */,
97E108221C5D5A0D00E27FD3 /* Search */,
9771DC4B1C37278E009ECFF0 /* Setting */,
+ 97D55EF51D2075180081B523 /* TableOfContentController.swift */,
+ 971A10691D022E15007FC62C /* BookmarkHUDVC.swift */,
);
name = Controllers;
path = Kiwix;
@@ -1822,7 +1822,6 @@
979CB6711D05C44F005E1BA1 /* SilentCondition.swift in Sources */,
97D452BC1D16FF010033666F /* RecentSearchCVC.swift in Sources */,
979CB6651D05C44F005E1BA1 /* NoCancelledDependencies.swift in Sources */,
- 971A10681D022E0A007FC62C /* MainVCWebViewD.swift in Sources */,
970103FB1C6824FA00DC48F6 /* RefreshLibraryOperation.swift in Sources */,
971A10651D022E0A007FC62C /* MainVC.swift in Sources */,
971A106F1D022E62007FC62C /* DownloadProgress.swift in Sources */,
@@ -1833,7 +1832,7 @@
971A105A1D022DAD007FC62C /* LibraryLocalTBVC.swift in Sources */,
97E60A021D10423A00EBCB9D /* ShadowView.swift in Sources */,
979CB6BD1D05C520005E1BA1 /* Operation.swift in Sources */,
- 971A10671D022E0A007FC62C /* MainVCOtherD.swift in Sources */,
+ 971A10671D022E0A007FC62C /* MainVCDelegates.swift in Sources */,
978C58981C1CD86E0077AE47 /* Book.swift in Sources */,
978C58961C1CD86E0077AE47 /* Language.swift in Sources */,
971A10701D022E62007FC62C /* Network.swift in Sources */,
@@ -1886,6 +1885,7 @@
979CB6B71D05C520005E1BA1 /* LocationOperation.swift in Sources */,
971A102F1D022AD5007FC62C /* Logo.swift in Sources */,
979CB6451D05C44F005E1BA1 /* Capability.swift in Sources */,
+ 97D55EF61D2075180081B523 /* TableOfContentController.swift in Sources */,
971A104B1D022CBE007FC62C /* SearchScopeSelectVC.swift in Sources */,
977998771C1E0B7900B1DD5E /* Article+CoreDataProperties.swift in Sources */,
971187301CEB50FC00B9909D /* ZimReader.mm in Sources */,