From 2dbaad1d9a644706e0621efd4b6bc2162d336309 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Sun, 26 Jun 2016 18:02:25 -0400 Subject: [PATCH] Table of contents --- .../Contents.json | 2 +- .../Compass.imageset/compass.png | Bin 0 -> 12094 bytes .../TableOfContent.imageset/Contents.json | 2 +- .../TableOfContent.imageset/list-1.png | Bin 0 -> 525 bytes .../TableOfContent.imageset/list.png | Bin 1056 -> 0 bytes .../Wiki.imageset/wikipedia5.png | Bin 1639 -> 0 bytes Kiwix-iOS/Controller/MainVC.swift | 51 +++++++----- ...VCWebViewD.swift => MainVCDelegates.swift} | 52 ++++++++++++- Kiwix-iOS/Controller/MainVCLoading.swift | 34 ++++++-- Kiwix-iOS/Controller/MainVCOtherD.swift | 53 ------------- .../Controller/TableOfContentController.swift | 73 ++++++++++++++++++ Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Storyboard/Main.storyboard | 28 +++++++ Kiwix.xcodeproj/project.pbxproj | 18 ++--- 14 files changed, 223 insertions(+), 92 deletions(-) rename Kiwix-iOS/Assets.xcassets/{Wiki.imageset => Compass.imageset}/Contents.json (87%) create mode 100644 Kiwix-iOS/Assets.xcassets/Compass.imageset/compass.png create mode 100644 Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/list-1.png delete mode 100644 Kiwix-iOS/Assets.xcassets/TableOfContent.imageset/list.png delete mode 100644 Kiwix-iOS/Assets.xcassets/Wiki.imageset/wikipedia5.png rename Kiwix-iOS/Controller/{MainVCWebViewD.swift => MainVCDelegates.swift} (74%) delete mode 100644 Kiwix-iOS/Controller/MainVCOtherD.swift create mode 100644 Kiwix-iOS/Controller/TableOfContentController.swift 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 0000000000000000000000000000000000000000..eab29929771baaf846c2012a736c9531ad3095a4 GIT binary patch literal 12094 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..34a6fec4c6a0ea165d66e1e121ebb1cca24baeb2 GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFfgqLVaENdFZ=@vN|v}rlmzFem6RtIr81P4m+NKbWfvzW7NqLs7p2dBXCnnv)EnRv z;`;ype;{*^fUs4I!hlZED+%%oW?*Dy5tUNZGBC1t2nb0`Dygb#=$J5R_M8PP z*KOFd_t5DZw;sHB_3rEUA38-`Yk@jzv5-BYN^frs^ie%FJBjs+IVU5k|d z|2tlMF=}0M#Iv?=uV)b0dz;JlFjbq~u)%nWh?9qia(#($ABx>XpZ^^i9I$*caaG7&lklf?* zRxxq!l~Nxms-8TdYH_+dtE)?;oT1^QeCpmy>H+eOwVlT#F3aXFUYS>V_3XA?cfCZ=LPtL zxc>kDAEeJ(aHdU4c`2{mDGO@67a&hzU3JQyeib+bz$|NV@u zZ`ibX=dJ@skDWey?)-&|mo8tqaqITo`wt#Idi?yw>o@N|eEjtJ+mD~W|NQkXzVHhe z{qsFt977@wzYRYgbl5;7rk&+@i4cda;+K2TD;9pgXT30dwu8p|_m(HP+GBKHzOr3w zx;fwG(rxqK4B`x@rU~~;_kQ|yPef4A_w+06eH{y%Yo8xo7dPioJ3eo-N&4lgs9h8GaL(s=dj^rZ?wOgKCr$Vn9l96HonLSu^AtD3uiX)ioIS<6 z&b~|d;p|c`)$skyJoTgBv?Xkl{S2j88~&6kEqYwk8pc!l^?J(AzL4fes;lgh-IQOx zb@nri;7!@KX@X=Q^Q*L=ZJ%3TIm~?c#ieM8=$>2l0#jvHt=OxqL{+f@ z-j!^+5$lYEB2Ub^x|I8d;rmO+`B{?Y@%>>x>!~KrHS5}xkMgCyCs(YN*(Un<-@I3c vF3#Eb=}G_H2*1R4CK<21r~kV3{1Jbm@D_*d8DD@=#lYa{>gTe~DWM4fgN`w) 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 1be694eb86d6bf751ef55448bed8040c3073b2c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639 zcmV-t2AKJYP){LYK~#90<(plIRaF$ne`ov{zj7*cA}5?uLZ)7ZC`Ltn&>RGH zpdbP%44G(>5~&G#NTptcdCn<+yU)4np1bedYxlsPd+#~xzxG<|?z8sV`|J}br6}eRMbR8!HLwU+-~qsZ2fqNF zN~vo_wXYZfh@z+t*a)+8r|){ ztYCHraC{2T3iKDj={WS8Hm8&{0Kf*IcM=_U(F<&t^Z)?$K&FI_yT}0blM(=61u$3! zPP-TcRunY=z!r37F15397y-5f4*)vR?I{BXrPzZoK}wxJS_V$#i=&btNCI#t{qwi= zgn|NqzUNErM4?E`3AwU;IVU_RMo1VP;+(IiJcqip7$l}nhzmfb42%wqj3@x;^0w5* z77MqP&AuV8l(l`a(Tg)Qx&de{10#!#R&M~%^ZCh~(v}MSSnCN@j2~MWU!wXy9}CdF z0@jjP6h+;@<1wVKfg8dGYJp|IWuOa)46wf2=cWT|%=a&I=&k{lqKCE99({H@vw>AH zdd@1Po&d;p|2mSFvDOPGP1Ata8BaLNfrXerd*r7B%|?D0cnp{pBU=r;WMq4Qh6KG4 z@N|Mdqd?tQ4glH`gtO=a8eA zAU0I0S&3ln->myx+2_%4Uu3&2z(|Gdx-1)R*@{&UdXPfEN9 z%y$B?T*z&8c*kPoUNF}W3v`~cZsWKf=)Ta2#VDg0;w*q(x@fR~*BJSXIBba#vye9|?4w2ddCH=u!$FwgYse3_w3t z#ztrKivnJk6979~|6!bY2)HS6!031}r4Jndhf|r;yiVajJlG=KP!H-1`C@ zL%>`k|9wjP4}pI6mNo!qoB-4!OQ=U2UK?-)n2Szkl7*OkhP$Q!`#V98?`ah%V5#HG zK>_C$u-M|v0JfR$?+W;%z{5F45()YszoEm2Pn-ZW3VHiIBS|f~b1Rii4`9{FI0nBrFJA`dE8~MEj+I|%ZzXcSqJ0Y_tVVA>`+|NH6*}H(h3beZq z3QK}nTmoiVj!Xf5lNjK+4RV#fZAR|Z0Csm)p=niTfln)-Ups@dlTd@ z10P3G6rlr9=rI843n3RjIRE6`z_kSV3+U{>2$&-*s5*?y`am{!gz5nRk490nHv2;< zbp>6{#vN}frG|lbnAm&%0rq?3?OwI5aB~6Udz#5m98NgBUS&9@Q87&*Wu0M z_Tlh|xz-TS-WJGzI-G>D0>yIX3y<8h=Gv#$xz!HOEr(Z{^9KUis;9$wE{I65&v9g( zbG-+>WYy^Oj?WxkgLS>foVy4A%1|1dv{!^AOJY(C0X3E*5qcdUdwrcbf862y3oLYk zko{veo8NB)v~$9eSgu9UeDRv&$X0VcV}3Wq@Z5sxN%R!C8hLFY!Nf(;JXUn1_!X$K zbk9bQ;mgeLuVQ$A0yCT-Jdt7zkvC zKPSZmpq_A>q^<)$r{E0{X0b+*?GIQ>M5`N#2F^*r70&6mHFD7CqY)`i<3?u?#NeX lEB@u_q6A<<17-gD{C}^lw#+uIsiyz{002ovPDHLkV1ffA? 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 */,