From cd134e785e789abc2898e1a240021c1d70b5c4bf Mon Sep 17 00:00:00 2001 From: Chris Li Date: Mon, 20 Jun 2016 14:59:33 -0400 Subject: [PATCH] Search Inclusion selection + Main combined interface --- .../Check.imageset/Contents.json | 21 ++++++++ .../Check.imageset/success.png | Bin 0 -> 1911 bytes .../CheckBlue.imageset/Contents.json | 21 ++++++++ .../CheckBlue.imageset/success-1.png | Bin 0 -> 3406 bytes .../Controller/LibraryDownloadTBVC.swift | 6 +-- Kiwix-iOS/Controller/LibraryOnlineTBVC.swift | 6 +-- .../Controller/Search/LangLocalCVC.swift | 20 ++++++- .../{ => Search}/SearchHistoryTBVC.swift | 0 .../{ => Search}/SearchLocalBooksCVC.swift | 0 .../{ => Search}/SearchTabController.swift | 0 .../Controller/SearchScopeSelectTBVC.swift | 32 ++++++----- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Storyboard/Main.storyboard | 50 +++++++++++------- Kiwix-iOS/View/ArticleCells.swift | 19 ------- Kiwix-iOS/View/BookCollectionCell.swift | 23 -------- Kiwix-iOS/View/CollectionViewCells.swift | 13 +++++ ...okTableCell.swift => TableViewCells.swift} | 43 +++++++++++++-- Kiwix.xcodeproj/project.pbxproj | 46 ++++++---------- .../xcschemes/Kiwix-iOS.xcscheme | 2 +- 19 files changed, 186 insertions(+), 118 deletions(-) create mode 100644 Kiwix-iOS/Assets.xcassets/Check.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/Check.imageset/success.png create mode 100644 Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/success-1.png rename Kiwix-iOS/Controller/{ => Search}/SearchHistoryTBVC.swift (100%) rename Kiwix-iOS/Controller/{ => Search}/SearchLocalBooksCVC.swift (100%) rename Kiwix-iOS/Controller/{ => Search}/SearchTabController.swift (100%) delete mode 100644 Kiwix-iOS/View/ArticleCells.swift delete mode 100644 Kiwix-iOS/View/BookCollectionCell.swift rename Kiwix-iOS/View/{BookTableCell.swift => TableViewCells.swift} (75%) diff --git a/Kiwix-iOS/Assets.xcassets/Check.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Check.imageset/Contents.json new file mode 100644 index 00000000..e5c10e38 --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/Check.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "success.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/Check.imageset/success.png b/Kiwix-iOS/Assets.xcassets/Check.imageset/success.png new file mode 100644 index 0000000000000000000000000000000000000000..744364180fc915c547884a6b7253d53f0566cae0 GIT binary patch literal 1911 zcmZ`)c|6mNAODWIY0|Nl965S;Fl&>WwsOp|<%%(9TFjBvl;c^p5xJAf5k_eUjf&L7 z=7^`3>Cu6wTv3G7h>&>JpT9qTf4txC*ZcGNykGA>KN)U#M=&vTzG^nB^;aekXjG;tp`%y&p>iI#QoZ@KvJ z#V=ZszR6XRTmIYN9*Z(V5@9E9Q5wxo<{>dt@H8IJIECUXA_Qo7@ zDXceh?%0NEW8FtpZdsp~@Ca9+I#AhQZsrof=LAEnhSQy(dMy;#Zl8d>3b-ydPZ!G_ zoz$8Rryg()MtA?)aoM+EGXb|Ff83*;^F{tGnb28}g({vwB;gfgcOrtLuY|q^QKWix zEIGT?JzxE4oNe>QnfQTMT*<`N)R##EqgN%%0#ezi?Kv~<-V!ehv(Js_{mW=$o{nI; zZyTdcbhdq%0?i8Qek|@g#FxzxzO#p=FAR8s-7Ic8mO`?iyu;ZtQ+Y`mA^t1pSRyhX zesyx)W;}Nxw|5$DD<#N(WhhO4^9z5!0@Ruf@8m1(SlF{Mvk2fKpMdvkVsr+RpXmzD zbn<~n7hQ;2N<9gX6^JBI$|LM*CbPDoY0T(4P5$2Vdo2XWeXGBWPQn_^C``bNFqeJJ zTbF8Eu!rJN+UkWn&?(Kjy^QpIk`Bv%)1FJtYBGWEZp~Rq(2M zlgwMcciLD0hM^Ew*pQsR{z@v*ZBySudgI(ON8Ngr?GBW)?Bw>tF}q|QPc&Y z!1D{B`epXDVpJEy>6%CTXN7@2En5V!j6PLoCdY3yA_ZGf`ualz##-f~z{wr15uv^1 zizrLZStEATjk<8aXkzutrRRZR`nC5~OHdC?Kqe+W#Uh+n^0gP}`usq3P;|ytgegmh z@mz%KA#T$vbk?R1Ww&)hnO8;SyDI{ZbP!ML$i81(lADmBZ^FjFTpxOi@~h(U-B<*P zZjH2}XF=Thma_oeVRbQE9PYY(vthbKAJfX5Td@V?_poEUZ zq_JDW;a0YhfgdMboljQrQ7G34{i%l7Q8OY1(|+OShVVu)H{3s;R_5mwT6Wu=;&F^3#^RmKus&l;@0_G4_>@n)3KQngA*_a%_|q0h8S z)v#(0VYuO?OGdP~T7_VQyh z9l8@QSvst}r_nXuLB5$qJW`>XT(`%U%Xl?Q)m%BcWRqlJrxY&mQnAu@BJnViwg0TW zxI!q1)%tExQtgby+dbQ(onCs{4;8eCi<~m)#3Cn~Ss@j3(mB}=hFpf4m-fdDCd%zb z;X_X?SkJl6JTdyoP`0`ETgPV3DQmLO_ z;h%EL!Hp~do2Y<`eDoqw^X5Pf2w`f3M0g<)mMEm93CaM0v_v4ZxQI{x6NrvENj{bE{{x=W>3-q> u?017_%&FM8kh3HpE-nsEJ{?I74WW?WF=xX{7OeM*j{qloydCFAaPoh+KVfJ9 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/Contents.json new file mode 100644 index 00000000..0b165efb --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "success-1.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/success-1.png b/Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/success-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbdd0aed28a3d6d82c2ebca3fec4de7ccb2fc37 GIT binary patch literal 3406 zcmZ`+3p|tSAK!|_5K4){8b!)x?uNB&F6+3|T+T$8ZECs9*@m&oa#FcOl&o?|x>_WZ z+(LxhCOQaF;m9S|NG`{JQ|BCipUys?cklCjf4}eZ{e6GW`@Eme8+pjiN(!t91^@t3 zIBP6ka7PO-F_7Rtlloha;09#it;_-0O*@7J6Y&6R7X|%|qK(frBD;Y?^SO~+Rkd+jsj~SF; zdkBJ|(J2spm>x_UiULC*5K}tY8;QqS{-6tHX3*nIW&jcn4-O871?$3S^kZ;@v9U2+ zTL-SAqb11DVubiJi7YLDhU)i4{$2-5VUXz5049~@4-u|Q^r8ha&7e@B&_BQLbuy{m z|0?-2e%KNigbO2Z1WX(LGa7|O{STTj@}D#^=^s}Cfpp&$Ph=9D;!E+P_%j&-9^$8R zg5Lf^{J$bu#DMQ&D^2|F%~V)95>H{!d;^6oaPp@zQ97n8hStLWcH}z?L-PxuQy2^Z z4W<8svKm{PPxw~`g+TnxSdFe_*wd*3t3+X8D8vti)!5p6m!B%EMprR}%|{-hvM9a; zELG6b6(0tArtqHz))Fx^UmD#ZfJmYUD_fzgg4SlQ$hiEM%&NdDBAJ9_1bUsIkeI9X zOR#GzPrn1@H~1>p6#mm}Q^B)=Au?%nM;gr+wc^50IECoK1pBu({)1`?7oMY4=j!{RT|ot>76leC|9%6Yz@9Ug zumFHqB@TPQkp&!Z^$FPAz6DhrYLrV+-M-H^q*)^7Gg_>5v7EeHyiqT*>rC~oijZyA zUV}iUb(ex3WT9^|Q>poGiD?)V4%m!t#sY|n z+h5-}+LT7fSzy)|+dXM(w*&qmiViv~*KB_rrzl>=c4F!1IPQV3nnP=6D-5j_@U z&!4(jsq7kxJtYPf6I*BTV4F_(whdrwfMzZdNA=6rYqg@qDqar?%<3G9>o{LkU2Aqw z7VnUuBQ3fY)OosSuhHF%!&POMhSA!Up)rBXij4hOP)-3#kprK{H-*3>PSs_`4C-$9=vUv#PWh;w%1?PaJbvP5h| z^|7={-FuDac?ER{PJUQ?5Yu=p|3uPsx>dhen&y$p65VkoMKU}7BjlwN`gi{5QxApV zQl4ifV9$`@OICU|d|_D0%Th*Z-5lTEaN>AQdXI`67v#N!X<*4par&r5Cuhyk@06tf zvT0DaL5ehYWmIn7WcqG6reOKb{Vd0A(KmqsspF;33iV}6OE>lP$x+>kYIe)1i){o- z(!Iefy=`{!saMbQB^1U@K;;t#hoPoBBNE$0yCrfThM6o@H7XoG?UWRQR4)1EfGd9nnd;$eaR!VXnCq#fGn~}(hs#?*MOOCmo0P`hd+hiXFq-S?S>=$V>9#waZ+x= zo9ZgII5Zo}Cp$`VScIOE`{b zF8neblY<_dFL%S0;3JJ5l2obQE$`gP6%I$D%)>NFcMy8P?H<=fohWt?r-mYPeF>;)lzS>6$cR?ls@pmYpK zlv14rKfR@Uw3Md2IA0lhH)T>{AgE&kt)%-|CO@xosK%H6g6;D;9X%LpraV!zvsutNmi+k}Q#yAKt1Z%vS| zeQFP)M;m;NzRpYs#<#q^5_I8lMT9)A7Ux|_xW~7pd1dZocxA&;Z8E)usPK>6)4_fW zB5<=9QQ2MO$V*$42lBIg0%kHiVpd|uoS#aYtpZD=is&uL!Ci6_Pe5tMiy1Hw*{f%X%Df_7n4|1#nMCDR3wC(9l}Tm<$EmVxyzxpz>~4oBacd z-ou*_Q`0dR5W1Ypjvl(FyT#OtG!-2JsFdUk{t23XKzCn=3DqYkQ5L%aBJ$To=d6#7 z`+rKMxak&RP%?CQmHjn%q{u= zyY1Y-6n~Ubf#_v!0=;W8ZM@!Jwo%Ti@D_&CYwXVbQ%ulUaJ zu6lsR8|M)2bDe3mQ)`2PS0mA4Q8 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Controller/LibraryDownloadTBVC.swift b/Kiwix-iOS/Controller/LibraryDownloadTBVC.swift index b75a08e5..7b43311c 100644 --- a/Kiwix-iOS/Controller/LibraryDownloadTBVC.swift +++ b/Kiwix-iOS/Controller/LibraryDownloadTBVC.swift @@ -10,7 +10,7 @@ import UIKit import CoreData import DZNEmptyDataSet -class LibraryDownloadTBVC: UITableViewController, NSFetchedResultsControllerDelegate, BookTableCellDelegate, DownloadProgressReporting, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate { +class LibraryDownloadTBVC: UITableViewController, NSFetchedResultsControllerDelegate, TableCellDelegate, DownloadProgressReporting, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate { // MARK: - Override @@ -38,9 +38,9 @@ class LibraryDownloadTBVC: UITableViewController, NSFetchedResultsControllerDele Network.sharedInstance.delegate = nil } - // MARK: - BookTableCellDelegate + // MARK: - TableCellDelegate - func didTapOnAccessoryViewForCell(cell: BookTableCell) { + func didTapOnAccessoryViewForCell(cell: UITableViewCell) { guard let indexPath = tableView.indexPathForCell(cell), let downloadTask = fetchedResultController.objectAtIndexPath(indexPath) as? DownloadTask, let book = downloadTask.book else {return} diff --git a/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift b/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift index 5683da5a..94836323 100644 --- a/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift +++ b/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift @@ -11,7 +11,7 @@ import CoreData import DZNEmptyDataSet import DateTools -class LibraryOnlineTBVC: UITableViewController, NSFetchedResultsControllerDelegate, BookTableCellDelegate, LTBarButtonItemDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate { +class LibraryOnlineTBVC: UITableViewController, NSFetchedResultsControllerDelegate, TableCellDelegate, LTBarButtonItemDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate { var booksShowingDetail = Set() var messsageLabelRefreshTimer: NSTimer? @@ -44,9 +44,9 @@ class LibraryOnlineTBVC: UITableViewController, NSFetchedResultsControllerDelega } - // MARK: - BookTableCellDelegate + // MARK: - TableCellDelegate - func didTapOnAccessoryViewForCell(cell: BookTableCell) { + func didTapOnAccessoryViewForCell(cell: UITableViewCell) { guard let indexPath = tableView.indexPathForCell(cell), let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} switch book.spaceState { diff --git a/Kiwix-iOS/Controller/Search/LangLocalCVC.swift b/Kiwix-iOS/Controller/Search/LangLocalCVC.swift index 05668ca6..815dc18e 100644 --- a/Kiwix-iOS/Controller/Search/LangLocalCVC.swift +++ b/Kiwix-iOS/Controller/Search/LangLocalCVC.swift @@ -55,17 +55,35 @@ class LangLocalCVC: UIViewController, UICollectionViewDataSource, UICollectionVi return CGSizeMake(size.width + 30, height) } + func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets { + let numberOfItems = collectionView.numberOfItemsInSection(section) + + var width: CGFloat = 0 + for item in 0.. CGFloat { + return 10 + } + // MARK: - Fetched Result Controller var blockOperation = NSBlockOperation() let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext lazy var fetchedResultController: NSFetchedResultsController = { let fetchRequest = NSFetchRequest(entityName: "Language") - fetchRequest.fetchBatchSize = 20 let descriptor = NSSortDescriptor(key: "name", ascending: true) let predicate = NSPredicate(format: "books.isLocal CONTAINS true") fetchRequest.sortDescriptors = [descriptor] fetchRequest.predicate = predicate + fetchRequest.fetchBatchSize = 20 fetchRequest.fetchLimit = 5 let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: nil, cacheName: "LangLocalFRC") fetchedResultsController.delegate = self diff --git a/Kiwix-iOS/Controller/SearchHistoryTBVC.swift b/Kiwix-iOS/Controller/Search/SearchHistoryTBVC.swift similarity index 100% rename from Kiwix-iOS/Controller/SearchHistoryTBVC.swift rename to Kiwix-iOS/Controller/Search/SearchHistoryTBVC.swift diff --git a/Kiwix-iOS/Controller/SearchLocalBooksCVC.swift b/Kiwix-iOS/Controller/Search/SearchLocalBooksCVC.swift similarity index 100% rename from Kiwix-iOS/Controller/SearchLocalBooksCVC.swift rename to Kiwix-iOS/Controller/Search/SearchLocalBooksCVC.swift diff --git a/Kiwix-iOS/Controller/SearchTabController.swift b/Kiwix-iOS/Controller/Search/SearchTabController.swift similarity index 100% rename from Kiwix-iOS/Controller/SearchTabController.swift rename to Kiwix-iOS/Controller/Search/SearchTabController.swift diff --git a/Kiwix-iOS/Controller/SearchScopeSelectTBVC.swift b/Kiwix-iOS/Controller/SearchScopeSelectTBVC.swift index 8c6ee345..31c87b40 100644 --- a/Kiwix-iOS/Controller/SearchScopeSelectTBVC.swift +++ b/Kiwix-iOS/Controller/SearchScopeSelectTBVC.swift @@ -9,7 +9,7 @@ import UIKit import CoreData -class SearchScopeSelectTBVC: UITableViewController, NSFetchedResultsControllerDelegate { +class SearchScopeSelectTBVC: UITableViewController, TableCellDelegate, NSFetchedResultsControllerDelegate { override func viewDidLoad() { super.viewDidLoad() @@ -24,11 +24,19 @@ class SearchScopeSelectTBVC: UITableViewController, NSFetchedResultsControllerDe let titleDescriptor = NSSortDescriptor(key: "title", ascending: true) fetchRequest.sortDescriptors = [langDescriptor, titleDescriptor] fetchRequest.predicate = NSPredicate(format: "isLocal == true") - let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: nil, cacheName: "ScopeFRC") + let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: "language.name", cacheName: "ScopeFRC") fetchedResultsController.delegate = self fetchedResultsController.performFetch(deleteCache: false) return fetchedResultsController }() + + // MARK: - Table Cell Delegate + + func didTapOnAccessoryViewForCell(cell: UITableViewCell) { + guard let indexPath = tableView.indexPathForCell(cell), + let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} + book.includeInSearch = !book.includeInSearch + } // MARK: - Table view data source @@ -49,24 +57,22 @@ class SearchScopeSelectTBVC: UITableViewController, NSFetchedResultsControllerDe func configureCell(cell: UITableViewCell, atIndexPath indexPath: NSIndexPath) { guard let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} - guard let cell = cell as? BasicBookCell else {return} + guard let cell = cell as? CheckMarkBookCell else {return} + cell.delegate = self cell.titleLabel.text = book.title cell.subtitleLabel.text = book.detailedDescription cell.favIcon.image = UIImage(data: book.favIcon ?? NSData()) cell.hasPic = book.hasPic cell.hasIndex = book.hasIndex - - cell.accessoryType = book.includeInSearch ? .Checkmark : .None + cell.isChecked = book.includeInSearch } override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { - if section == 0 { - return NSLocalizedString("Books included in search", comment: "Search Scope Control") - } else { - return "" - } + guard tableView.numberOfSections > 1 else {return nil} + guard let languageName = fetchedResultController.sections?[section].name else {return nil} + return languageName } // MARK: Table view delegate @@ -83,8 +89,10 @@ class SearchScopeSelectTBVC: UITableViewController, NSFetchedResultsControllerDe } override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { - guard let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} - book.includeInSearch = !book.includeInSearch + guard let mainVC = parentViewController?.parentViewController as? MainVC, + let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} + mainVC.hideSearch() + mainVC.loadMainPage(book) tableView.deselectRowAtIndexPath(indexPath, animated: true) } diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 8c2d8662..96903faf 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -36,7 +36,7 @@ CFBundleSignature ???? CFBundleVersion - 248 + 291 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Storyboard/Main.storyboard b/Kiwix-iOS/Storyboard/Main.storyboard index 0d14989c..114f4c20 100644 --- a/Kiwix-iOS/Storyboard/Main.storyboard +++ b/Kiwix-iOS/Storyboard/Main.storyboard @@ -255,6 +255,7 @@ + @@ -359,7 +360,6 @@ - @@ -370,24 +370,17 @@ - - - - - - - - + - - + + @@ -451,16 +452,20 @@ + + + + @@ -472,15 +477,18 @@ - - + + + + + @@ -502,6 +510,7 @@ + @@ -533,7 +542,6 @@ - @@ -978,6 +986,7 @@ + @@ -1098,7 +1107,6 @@ - @@ -1107,11 +1115,11 @@ - + - + @@ -1121,7 +1129,7 @@ - + @@ -1167,6 +1175,8 @@ + + diff --git a/Kiwix-iOS/View/ArticleCells.swift b/Kiwix-iOS/View/ArticleCells.swift deleted file mode 100644 index 69de2c43..00000000 --- a/Kiwix-iOS/View/ArticleCells.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// SearchResultCell.swift -// Kiwix -// -// Created by Chris Li on 8/13/15. -// Copyright © 2015 Chris Li. All rights reserved. -// - -import UIKit - -class ArticleCell: UITableViewCell { - @IBOutlet weak var favIcon: UIImageView! - @IBOutlet weak var hasPicIndicator: UIView! - @IBOutlet weak var titleLabel: UILabel! -} - -class ArticleSnippetCell: ArticleCell { - @IBOutlet weak var snippetLabel: UILabel! -} \ No newline at end of file diff --git a/Kiwix-iOS/View/BookCollectionCell.swift b/Kiwix-iOS/View/BookCollectionCell.swift deleted file mode 100644 index 460f4102..00000000 --- a/Kiwix-iOS/View/BookCollectionCell.swift +++ /dev/null @@ -1,23 +0,0 @@ - -// -// BookCollectionCell.swift -// Kiwix -// -// Created by Chris Li on 1/31/16. -// Copyright © 2016 Chris. All rights reserved. -// - -import UIKit - -class BookCollectionCell: UICollectionViewCell, UIGestureRecognizerDelegate { - - @IBOutlet weak var favIcon: UIImageView! - @IBOutlet weak var titleLabel: UILabel! - @IBOutlet weak var languageLabel: UILabel! - @IBOutlet weak var dateLabel: UILabel! - - override func awakeFromNib() { - favIcon.layer.cornerRadius = 4.0 - favIcon.layer.masksToBounds = true - } -} diff --git a/Kiwix-iOS/View/CollectionViewCells.swift b/Kiwix-iOS/View/CollectionViewCells.swift index a7907ec8..ce842706 100644 --- a/Kiwix-iOS/View/CollectionViewCells.swift +++ b/Kiwix-iOS/View/CollectionViewCells.swift @@ -17,3 +17,16 @@ class LocalLangCell: UICollectionViewCell { backgroundColor = UIColor.themeColor } } + +class BookCollectionCell: UICollectionViewCell, UIGestureRecognizerDelegate { + + @IBOutlet weak var favIcon: UIImageView! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var languageLabel: UILabel! + @IBOutlet weak var dateLabel: UILabel! + + override func awakeFromNib() { + favIcon.layer.cornerRadius = 4.0 + favIcon.layer.masksToBounds = true + } +} diff --git a/Kiwix-iOS/View/BookTableCell.swift b/Kiwix-iOS/View/TableViewCells.swift similarity index 75% rename from Kiwix-iOS/View/BookTableCell.swift rename to Kiwix-iOS/View/TableViewCells.swift index 748bfa26..15f704f3 100644 --- a/Kiwix-iOS/View/BookTableCell.swift +++ b/Kiwix-iOS/View/TableViewCells.swift @@ -8,8 +8,9 @@ import UIKit -// MARK: - Normal Cells +// MARK: - Book Cells +/* Book Cell With P & I indicator */ class BasicBookCell: UITableViewCell { private let hasPicIndicatorOrange = UIColor(red: 1, green: 0.5, blue: 0, alpha: 1) private let hasIndexIndicatorBlue = UIColor(red: 0.304706, green: 0.47158, blue: 1, alpha: 1) @@ -40,6 +41,28 @@ class BasicBookCell: UITableViewCell { } } +/* Book Cell With P & I indicator, a check mark on the right */ +class CheckMarkBookCell: BasicBookCell { + @IBOutlet weak var accessoryImageView: LargeHitZoneImageView! + weak var delegate: TableCellDelegate? + + override func awakeFromNib() { + super.awakeFromNib() + let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(CheckMarkBookCell.handleTap)) + accessoryImageView.addGestureRecognizer(tapGestureRecognizer) + } + + var isChecked: Bool = false { + didSet { + accessoryImageView.highlighted = isChecked + } + } + + func handleTap() { + self.delegate?.didTapOnAccessoryViewForCell(self) + } +} + class LocalBookCell: UITableViewCell { @IBOutlet weak var favIcon: UIImageView! @IBOutlet weak var titleLabel: UILabel! @@ -72,7 +95,7 @@ class BookTableCell: UITableViewCell { @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var subtitleLabel: UILabel! @IBOutlet weak var accessoryImageView: LargeHitZoneImageView! - weak var delegate: BookTableCellDelegate? + weak var delegate: TableCellDelegate? var accessoryImageTintColor: UIColor? { didSet { @@ -113,8 +136,20 @@ class BookTableCell: UITableViewCell { } } +// MARK: - Article Cell + +class ArticleCell: UITableViewCell { + @IBOutlet weak var favIcon: UIImageView! + @IBOutlet weak var hasPicIndicator: UIView! + @IBOutlet weak var titleLabel: UILabel! +} + +class ArticleSnippetCell: ArticleCell { + @IBOutlet weak var snippetLabel: UILabel! +} + // MARK: - Protocol -protocol BookTableCellDelegate: class { - func didTapOnAccessoryViewForCell(cell: BookTableCell) +protocol TableCellDelegate: class { + func didTapOnAccessoryViewForCell(cell: UITableViewCell) } \ No newline at end of file diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index cef37121..d214405e 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -66,10 +66,8 @@ 971A101D1D0228E8007FC62C /* adjustlayoutiPad.js in Resources */ = {isa = PBXBuildFile; fileRef = 971A101A1D0228E8007FC62C /* adjustlayoutiPad.js */; }; 971A101E1D0228E8007FC62C /* adjustlayoutiPhone.js in Resources */ = {isa = PBXBuildFile; fileRef = 971A101B1D0228E8007FC62C /* adjustlayoutiPhone.js */; }; 971A101F1D0228E8007FC62C /* getTableOfContents.js in Resources */ = {isa = PBXBuildFile; fileRef = 971A101C1D0228E8007FC62C /* getTableOfContents.js */; }; - 971A102B1D022AD5007FC62C /* ArticleCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10231D022AD5007FC62C /* ArticleCells.swift */; }; 971A102C1D022AD5007FC62C /* BarButtonItems.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10241D022AD5007FC62C /* BarButtonItems.swift */; }; - 971A102D1D022AD5007FC62C /* BookCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10251D022AD5007FC62C /* BookCollectionCell.swift */; }; - 971A102E1D022AD5007FC62C /* BookTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10261D022AD5007FC62C /* BookTableCell.swift */; }; + 971A102E1D022AD5007FC62C /* TableViewCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10261D022AD5007FC62C /* TableViewCells.swift */; }; 971A102F1D022AD5007FC62C /* Logo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10271D022AD5007FC62C /* Logo.swift */; }; 971A10301D022AD5007FC62C /* LTBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10281D022AD5007FC62C /* LTBarButtonItem.swift */; }; 971A10311D022AD5007FC62C /* RefreshHUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10291D022AD5007FC62C /* RefreshHUD.swift */; }; @@ -85,9 +83,6 @@ 971A10461D022CB2007FC62C /* SearchVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10451D022CB2007FC62C /* SearchVC.swift */; }; 971A104A1D022CBE007FC62C /* SearchResultTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10471D022CBE007FC62C /* SearchResultTBVC.swift */; }; 971A104B1D022CBE007FC62C /* SearchScopeSelectTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10481D022CBE007FC62C /* SearchScopeSelectTBVC.swift */; }; - 971A104C1D022CBE007FC62C /* SearchTabController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10491D022CBE007FC62C /* SearchTabController.swift */; }; - 971A104E1D022CD9007FC62C /* SearchLocalBooksCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A104D1D022CD9007FC62C /* SearchLocalBooksCVC.swift */; }; - 971A10501D022CDF007FC62C /* SearchHistoryTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A104F1D022CDF007FC62C /* SearchHistoryTBVC.swift */; }; 971A10521D022D9D007FC62C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10511D022D9D007FC62C /* AppDelegate.swift */; }; 971A10581D022DAD007FC62C /* LibraryDownloadTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10531D022DAD007FC62C /* LibraryDownloadTBVC.swift */; }; 971A10591D022DAD007FC62C /* LibraryLocalBookDetailTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971A10541D022DAD007FC62C /* LibraryLocalBookDetailTBVC.swift */; }; @@ -115,7 +110,6 @@ 973BCCF31CEB3FA400F10B44 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 973BCCF21CEB3FA400F10B44 /* Assets.xcassets */; }; 973BCD011CEB3FA500F10B44 /* Kiwix_OSXTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973BCD001CEB3FA500F10B44 /* Kiwix_OSXTests.swift */; }; 973BCD0C1CEB3FA500F10B44 /* Kiwix_OSXUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973BCD0B1CEB3FA500F10B44 /* Kiwix_OSXUITests.swift */; }; - 973BCD191CEB402900F10B44 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 973BCD171CEB402900F10B44 /* Info.plist */; }; 973BCD1A1CEB402900F10B44 /* KiwixTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973BCD181CEB402900F10B44 /* KiwixTests.swift */; }; 973BCD1E1CEB403700F10B44 /* SnapshotAutomation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973BCD1C1CEB403700F10B44 /* SnapshotAutomation.swift */; }; 973C8D5C1C25F945007272F9 /* Preference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973C8D5B1C25F945007272F9 /* Preference.swift */; }; @@ -384,10 +378,8 @@ 971A101B1D0228E8007FC62C /* adjustlayoutiPhone.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = adjustlayoutiPhone.js; sourceTree = ""; }; 971A101C1D0228E8007FC62C /* getTableOfContents.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = getTableOfContents.js; sourceTree = ""; }; 971A10201D022A34007FC62C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Kiwix-iOS/Info.plist"; sourceTree = SOURCE_ROOT; }; - 971A10231D022AD5007FC62C /* ArticleCells.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ArticleCells.swift; sourceTree = ""; }; 971A10241D022AD5007FC62C /* BarButtonItems.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BarButtonItems.swift; sourceTree = ""; }; - 971A10251D022AD5007FC62C /* BookCollectionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookCollectionCell.swift; sourceTree = ""; }; - 971A10261D022AD5007FC62C /* BookTableCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookTableCell.swift; sourceTree = ""; }; + 971A10261D022AD5007FC62C /* TableViewCells.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewCells.swift; sourceTree = ""; }; 971A10271D022AD5007FC62C /* Logo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logo.swift; sourceTree = ""; }; 971A10281D022AD5007FC62C /* LTBarButtonItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LTBarButtonItem.swift; sourceTree = ""; }; 971A10291D022AD5007FC62C /* RefreshHUD.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefreshHUD.swift; sourceTree = ""; }; @@ -403,9 +395,6 @@ 971A10451D022CB2007FC62C /* SearchVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SearchVC.swift; path = "Kiwix-iOS/Controller/SearchVC.swift"; sourceTree = SOURCE_ROOT; }; 971A10471D022CBE007FC62C /* SearchResultTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SearchResultTBVC.swift; path = "Kiwix-iOS/Controller/SearchResultTBVC.swift"; sourceTree = SOURCE_ROOT; }; 971A10481D022CBE007FC62C /* SearchScopeSelectTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SearchScopeSelectTBVC.swift; path = "Kiwix-iOS/Controller/SearchScopeSelectTBVC.swift"; sourceTree = SOURCE_ROOT; }; - 971A10491D022CBE007FC62C /* SearchTabController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SearchTabController.swift; path = "Kiwix-iOS/Controller/SearchTabController.swift"; sourceTree = SOURCE_ROOT; }; - 971A104D1D022CD9007FC62C /* SearchLocalBooksCVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SearchLocalBooksCVC.swift; path = "Kiwix-iOS/Controller/SearchLocalBooksCVC.swift"; sourceTree = SOURCE_ROOT; }; - 971A104F1D022CDF007FC62C /* SearchHistoryTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SearchHistoryTBVC.swift; path = "Kiwix-iOS/Controller/SearchHistoryTBVC.swift"; sourceTree = SOURCE_ROOT; }; 971A10511D022D9D007FC62C /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 971A10531D022DAD007FC62C /* LibraryDownloadTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LibraryDownloadTBVC.swift; path = "Kiwix-iOS/Controller/LibraryDownloadTBVC.swift"; sourceTree = SOURCE_ROOT; }; 971A10541D022DAD007FC62C /* LibraryLocalBookDetailTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LibraryLocalBookDetailTBVC.swift; path = "Kiwix-iOS/Controller/LibraryLocalBookDetailTBVC.swift"; sourceTree = SOURCE_ROOT; }; @@ -544,6 +533,9 @@ 97BA32A31CEBC29500339A47 /* RootWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RootWindowController.swift; path = "Kiwix-OSX/Controllers/RootWindowController.swift"; sourceTree = SOURCE_ROOT; }; 97D452BB1D16FF010033666F /* LangLocalCVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LangLocalCVC.swift; path = "Kiwix-iOS/Controller/Search/LangLocalCVC.swift"; sourceTree = SOURCE_ROOT; }; 97D452BD1D1723FF0033666F /* CollectionViewCells.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewCells.swift; sourceTree = ""; }; + 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; }; 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; }; @@ -820,10 +812,8 @@ 971A10221D022AD5007FC62C /* View */ = { isa = PBXGroup; children = ( - 971A10231D022AD5007FC62C /* ArticleCells.swift */, 971A10241D022AD5007FC62C /* BarButtonItems.swift */, - 971A10251D022AD5007FC62C /* BookCollectionCell.swift */, - 971A10261D022AD5007FC62C /* BookTableCell.swift */, + 971A10261D022AD5007FC62C /* TableViewCells.swift */, 97D452BD1D1723FF0033666F /* CollectionViewCells.swift */, 971A10271D022AD5007FC62C /* Logo.swift */, 971A10281D022AD5007FC62C /* LTBarButtonItem.swift */, @@ -978,15 +968,14 @@ name = Preference; sourceTree = ""; }; - 9768957A1CB6A35E00F02686 /* Dashboard */ = { + 9768957A1CB6A35E00F02686 /* Old */ = { isa = PBXGroup; children = ( - 971A10491D022CBE007FC62C /* SearchTabController.swift */, - 971A104D1D022CD9007FC62C /* SearchLocalBooksCVC.swift */, - 971A104F1D022CDF007FC62C /* SearchHistoryTBVC.swift */, - 971A10481D022CBE007FC62C /* SearchScopeSelectTBVC.swift */, + 97D452BF1D1871E70033666F /* SearchHistoryTBVC.swift */, + 97D452C01D1871E70033666F /* SearchLocalBooksCVC.swift */, + 97D452C11D1871E70033666F /* SearchTabController.swift */, ); - name = Dashboard; + name = Old; sourceTree = ""; }; 9771DC4B1C37278E009ECFF0 /* Setting */ = { @@ -1262,8 +1251,9 @@ isa = PBXGroup; children = ( 971A10451D022CB2007FC62C /* SearchVC.swift */, - 9768957A1CB6A35E00F02686 /* Dashboard */, + 971A10481D022CBE007FC62C /* SearchScopeSelectTBVC.swift */, 971A10471D022CBE007FC62C /* SearchResultTBVC.swift */, + 9768957A1CB6A35E00F02686 /* Old */, ); name = Search; sourceTree = ""; @@ -1445,7 +1435,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0720; + LastUpgradeCheck = 0730; ORGANIZATIONNAME = Chris; TargetAttributes = { 973BCCE81CEB3FA400F10B44 = { @@ -1557,7 +1547,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 973BCD191CEB402900F10B44 /* Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1821,7 +1810,6 @@ 979CB6C31D05C520005E1BA1 /* UIUserNotifications+Operations.swift in Sources */, 971A10361D022B02007FC62C /* AboutVC.swift in Sources */, 971A102C1D022AD5007FC62C /* BarButtonItems.swift in Sources */, - 971A10501D022CDF007FC62C /* SearchHistoryTBVC.swift in Sources */, 971A10301D022AD5007FC62C /* LTBarButtonItem.swift in Sources */, 971A103F1D022C42007FC62C /* LibraryAutoRefreshTBVC.swift in Sources */, 979CB67F1D05C44F005E1BA1 /* NetworkObserver.swift in Sources */, @@ -1844,7 +1832,7 @@ 970103FB1C6824FA00DC48F6 /* RefreshLibraryOperation.swift in Sources */, 971A10651D022E0A007FC62C /* MainVC.swift in Sources */, 971A106F1D022E62007FC62C /* DownloadProgress.swift in Sources */, - 971A102E1D022AD5007FC62C /* BookTableCell.swift in Sources */, + 971A102E1D022AD5007FC62C /* TableViewCells.swift in Sources */, 979CB64F1D05C44F005E1BA1 /* LocationCapability-tvOS.swift in Sources */, 979CB6591D05C44F005E1BA1 /* UserNotificationCapability.swift in Sources */, 97254FDF1C2644560056950B /* ZIMMultiReader.swift in Sources */, @@ -1863,7 +1851,6 @@ 979CB65F1D05C44F005E1BA1 /* HealthCondition.swift in Sources */, 979CB6B51D05C520005E1BA1 /* GroupOperation.swift in Sources */, 97B50C7F1CA1E4810010BD79 /* UIOperations.swift in Sources */, - 971A104E1D022CD9007FC62C /* SearchLocalBooksCVC.swift in Sources */, 977998741C1E0B7900B1DD5E /* Book+CoreDataProperties.swift in Sources */, 979CB6871D05C44F005E1BA1 /* TimeoutObserver.swift in Sources */, 971A10661D022E0A007FC62C /* MainVCLoading.swift in Sources */, @@ -1875,7 +1862,6 @@ 97E60A061D10504000EBCB9D /* LibraryBackupTBVC.swift in Sources */, 974570F41C2DABB500680E43 /* ZIMMultiReaderAPI.swift in Sources */, 979CB6511D05C44F005E1BA1 /* PassbookCapability.swift in Sources */, - 971A104C1D022CBE007FC62C /* SearchTabController.swift in Sources */, 971A105C1D022DAD007FC62C /* LibraryTabBarController.swift in Sources */, 971A10461D022CB2007FC62C /* SearchVC.swift in Sources */, 9779987B1C1E1C9600B1DD5E /* Extensions.swift in Sources */, @@ -1892,7 +1878,6 @@ 979CB6431D05C44F005E1BA1 /* CalendarCapability.swift in Sources */, 979CB6AD1D05C520005E1BA1 /* BlockOperation.swift in Sources */, 979CB6B11D05C520005E1BA1 /* DelayOperation.swift in Sources */, - 971A102B1D022AD5007FC62C /* ArticleCells.swift in Sources */, 973C8D5C1C25F945007272F9 /* Preference.swift in Sources */, 979CB6B91D05C520005E1BA1 /* NSLock+Operations.swift in Sources */, 975B90FE1CEB909100D13906 /* iOSExtensions.swift in Sources */, @@ -1920,7 +1905,6 @@ 979CB6B31D05C520005E1BA1 /* Dictionary+Operations.swift in Sources */, 979CB64B1D05C44F005E1BA1 /* LocationCapability-iOS.swift in Sources */, 979CB6611D05C44F005E1BA1 /* LocationCondition.swift in Sources */, - 971A102D1D022AD5007FC62C /* BookCollectionCell.swift in Sources */, 971A10601D022DF2007FC62C /* LanguageTBVC.swift in Sources */, 971A106A1D022E15007FC62C /* BookmarkHUDVC.swift in Sources */, 971A106C1D022E50007FC62C /* Utilities.swift in Sources */, diff --git a/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Kiwix-iOS.xcscheme b/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Kiwix-iOS.xcscheme index 4fa30884..e0af121d 100644 --- a/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Kiwix-iOS.xcscheme +++ b/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Kiwix-iOS.xcscheme @@ -1,6 +1,6 @@