From c5f1f57728263cb474f4665fad7704e8c30f5024 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Wed, 3 Aug 2016 14:06:20 -0400 Subject: [PATCH 01/21] Migration + changes in UIOperation --- Kiwix-iOS/AppDelegate.swift | 2 +- Kiwix-iOS/Controller/LibraryOnlineTBVC.swift | 2 +- .../Controller/Main/MainController.swift | 2 +- .../Main/MainControllerShowHide.swift | 2 +- Kiwix-iOS/Model/Network.swift | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix.xcodeproj/project.pbxproj | 4 - Kiwix/Operations/GlobalOperationQueue.swift | 2 +- .../Operations/RefreshLibraryOperation.swift | 2 +- Kiwix/Operations/ScanLocalBookOperation.swift | 2 +- Kiwix/Operations/SearchOperation.swift | 2 +- Kiwix/Operations/UIOperations.swift | 93 +++++++++---------- .../URLSessionDownloadTaskOperation.swift | 2 +- .../UpdateWidgetDataSourceOperation.swift | 2 +- Kiwix/ReachabilityCondition.swift | 2 +- Kiwix/ZimMultiReader/ZimMultiReader.swift | 2 +- Podfile | 4 +- Podfile.lock | 10 +- 18 files changed, 68 insertions(+), 71 deletions(-) diff --git a/Kiwix-iOS/AppDelegate.swift b/Kiwix-iOS/AppDelegate.swift index cf684b2c6..a0dcead93 100644 --- a/Kiwix-iOS/AppDelegate.swift +++ b/Kiwix-iOS/AppDelegate.swift @@ -7,7 +7,7 @@ import UIKit import CoreData -import PSOperations +import Operations @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, OperationQueueDelegate { diff --git a/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift b/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift index ae848170e..790d39fef 100644 --- a/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift +++ b/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift @@ -101,7 +101,7 @@ class LibraryOnlineTBVC: UITableViewController, NSFetchedResultsControllerDelega } } else { guard !Preference.libraryHasShownPreferredLanguagePrompt else {return} - let operation = RefreshLibraryLanguageFilterAlert(libraryOnlineTBVC: self) + let operation = RefreshLibraryLanguageFilterAlert(presentationContext: self) GlobalOperationQueue.sharedInstance.addOperation(operation) } } diff --git a/Kiwix-iOS/Controller/Main/MainController.swift b/Kiwix-iOS/Controller/Main/MainController.swift index c3d5a8bef..8c670b9ea 100644 --- a/Kiwix-iOS/Controller/Main/MainController.swift +++ b/Kiwix-iOS/Controller/Main/MainController.swift @@ -8,7 +8,7 @@ // import UIKit -import PSOperations +import Operations class MainController: UIViewController { diff --git a/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift b/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift index ff660daff..b28a63196 100644 --- a/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift +++ b/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift @@ -191,7 +191,7 @@ extension MainController { func showGetStartedAlert() { guard !Preference.hasShowGetStartedAlert else {return} - let operation = GetStartedAlert(mainController: self) + let operation = GetStartedAlert(presentationContext: self) GlobalOperationQueue.sharedInstance.addOperation(operation) Preference.hasShowGetStartedAlert = true } diff --git a/Kiwix-iOS/Model/Network.swift b/Kiwix-iOS/Model/Network.swift index e980e32a8..f2dafbf63 100644 --- a/Kiwix-iOS/Model/Network.swift +++ b/Kiwix-iOS/Model/Network.swift @@ -7,7 +7,7 @@ // import CoreData -import PSOperations +import Operations class Network: NSObject, NSURLSessionDelegate, NSURLSessionDownloadDelegate, NSURLSessionTaskDelegate, OperationQueueDelegate { static let sharedInstance = Network() diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 102ec56a5..6cfac74e1 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.697 + 1.7.747 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index 414ffd90c..e2e99f51d 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -160,9 +160,7 @@ 977998771C1E0B7900B1DD5E /* Article+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 977998711C1E0B7900B1DD5E /* Article+CoreDataProperties.swift */; }; 977998781C1E0B7900B1DD5E /* Language+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 977998721C1E0B7900B1DD5E /* Language+CoreDataProperties.swift */; }; 9779987B1C1E1C9600B1DD5E /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779987A1C1E1C9600B1DD5E /* Extensions.swift */; }; - 9779A1C81D34225E0071EFAB /* AlertOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779A1C21D34225E0071EFAB /* AlertOperation.swift */; }; 9779A1C91D34225E0071EFAB /* GlobalOperationQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779A1C31D34225E0071EFAB /* GlobalOperationQueue.swift */; }; - 9779A1CA1D34225E0071EFAB /* NetworkObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779A1C41D34225E0071EFAB /* NetworkObserver.swift */; }; 9779A1CB1D34225E0071EFAB /* RefreshLibraryOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779A1C51D34225E0071EFAB /* RefreshLibraryOperation.swift */; }; 9779A1CC1D34225E0071EFAB /* SearchOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779A1C61D34225E0071EFAB /* SearchOperation.swift */; }; 9779A1CD1D34225E0071EFAB /* UIOperations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779A1C71D34225E0071EFAB /* UIOperations.swift */; }; @@ -1685,7 +1683,6 @@ 970C3DCA1CBD79450026A240 /* MigrationPolicy.swift in Sources */, 97E891691CA976E90001CA32 /* FileManager.swift in Sources */, 97E60A061D10504000EBCB9D /* LibraryBackupTBVC.swift in Sources */, - 9779A1CA1D34225E0071EFAB /* NetworkObserver.swift in Sources */, 971A105C1D022DAD007FC62C /* LibraryTabBarController.swift in Sources */, 971A10461D022CB2007FC62C /* SearchController.swift in Sources */, 9779987B1C1E1C9600B1DD5E /* Extensions.swift in Sources */, @@ -1704,7 +1701,6 @@ 971A102F1D022AD5007FC62C /* Logo.swift in Sources */, 97D55EF61D2075180081B523 /* TableOfContentsController.swift in Sources */, 9722122B1D3FCCE200C0DCF2 /* MainControllerShowHide.swift in Sources */, - 9779A1C81D34225E0071EFAB /* AlertOperation.swift in Sources */, 971A104B1D022CBE007FC62C /* SearchBooksVC.swift in Sources */, 977998771C1E0B7900B1DD5E /* Article+CoreDataProperties.swift in Sources */, 971C4F0E1D400F010027B7D2 /* UpdateWidgetDataSourceOperation.swift in Sources */, diff --git a/Kiwix/Operations/GlobalOperationQueue.swift b/Kiwix/Operations/GlobalOperationQueue.swift index fe6729629..81659cd67 100644 --- a/Kiwix/Operations/GlobalOperationQueue.swift +++ b/Kiwix/Operations/GlobalOperationQueue.swift @@ -6,7 +6,7 @@ // Copyright © 2016 Chris. All rights reserved. // -import PSOperations +import Operations class GlobalOperationQueue: OperationQueue { static let sharedInstance = GlobalOperationQueue() diff --git a/Kiwix/Operations/RefreshLibraryOperation.swift b/Kiwix/Operations/RefreshLibraryOperation.swift index 27dc49844..ee1034cd3 100644 --- a/Kiwix/Operations/RefreshLibraryOperation.swift +++ b/Kiwix/Operations/RefreshLibraryOperation.swift @@ -7,7 +7,7 @@ // import CoreData -import PSOperations +import Operations class RefreshLibraryOperation: GroupOperation { diff --git a/Kiwix/Operations/ScanLocalBookOperation.swift b/Kiwix/Operations/ScanLocalBookOperation.swift index a1f4678b5..cb38e883d 100644 --- a/Kiwix/Operations/ScanLocalBookOperation.swift +++ b/Kiwix/Operations/ScanLocalBookOperation.swift @@ -7,7 +7,7 @@ // import CoreData -import PSOperations +import Operations class ScanLocalBookOperation: Operation { private let context: NSManagedObjectContext diff --git a/Kiwix/Operations/SearchOperation.swift b/Kiwix/Operations/SearchOperation.swift index fd83c9baf..044d363a4 100644 --- a/Kiwix/Operations/SearchOperation.swift +++ b/Kiwix/Operations/SearchOperation.swift @@ -7,7 +7,7 @@ // import UIKit -import PSOperations +import Operations class SearchOperation: GroupOperation { let completionHandler: ([SearchResult]?) -> Void diff --git a/Kiwix/Operations/UIOperations.swift b/Kiwix/Operations/UIOperations.swift index bfc734302..a19aacf74 100644 --- a/Kiwix/Operations/UIOperations.swift +++ b/Kiwix/Operations/UIOperations.swift @@ -7,41 +7,40 @@ // import UIKit -import PSOperations +import Operations // MARK: - Alerts -class SpaceCautionAlert: AlertOperation { - init(book: Book, presentationContext: UIViewController?) { - super.init(presentationContext: presentationContext) - - let comment = "Library: Download Space Caution Alert" +class SpaceCautionAlert: AlertOperation { + let comment = "Library: Download Space Caution Alert" + init(book: Book, presentationContext: LibraryOnlineTBVC) { + super.init(presentAlertFrom: presentationContext) title = NSLocalizedString("Space Caution", comment: comment) message = NSLocalizedString("This book takes up more than 80% of the remaining space on your device. Are you sure you want to download it?", comment: comment) - addAction(NSLocalizedString("Download Anyway", comment: comment), style: .Default) { (action) -> Void in + addActionWithTitle(NSLocalizedString("Download Anyway", comment: comment), style: .Default) { (alert) in Network.sharedInstance.download(book) } - addAction(LocalizedStrings.cancel) + addActionWithTitle(LocalizedStrings.cancel) } } -class SpaceNotEnoughAlert: AlertOperation { - init(book: Book, presentationContext: UIViewController?) { - super.init(presentationContext: presentationContext) - - let comment = "Library: Download Space Not Enough Alert" +class SpaceNotEnoughAlert: AlertOperation { + let comment = "Library: Download Space Not Enough Alert" + init(book: Book, presentationContext: LibraryOnlineTBVC) { + super.init(presentAlertFrom: presentationContext) title = NSLocalizedString("Space Not Enough", comment: comment) message = NSLocalizedString("You don't have enough remaining space to download this book.", comment: comment) - addAction(LocalizedStrings.ok) + addActionWithTitle(LocalizedStrings.ok) } } -class RefreshLibraryLanguageFilterAlert: AlertOperation { +class RefreshLibraryLanguageFilterAlert: AlertOperation { + let comment = "Library: Language Filter Alert" let context = UIApplication.appDelegate.managedObjectContext - init(libraryOnlineTBVC: LibraryOnlineTBVC?) { - super.init(presentationContext: libraryOnlineTBVC) + init(presentationContext libraryOnlineTBVC: LibraryOnlineTBVC) { + super.init(presentAlertFrom: libraryOnlineTBVC) var preferredLanguageCodes = [String]() var preferredLanguageNames = [String]() @@ -69,60 +68,56 @@ class RefreshLibraryLanguageFilterAlert: AlertOperation { } }() - let comment = "Library: Language Filter Alert" - title = NSLocalizedString("Only Show Preferred Language?", comment: comment) message = NSLocalizedString("We have found you may know \(languageString), would you like to filter the library by these languages?", comment: comment) - addAction(LocalizedStrings.ok, style: .Default) { (action) in + addActionWithTitle(LocalizedStrings.ok, style: .Default) { (action) in self.context.performBlock({ let languages = Language.fetchAll(self.context) for language in languages { guard let code = language.code else {continue} language.isDisplayed = preferredLanguageCodes.contains(code) } - libraryOnlineTBVC?.refreshFetchedResultController() + libraryOnlineTBVC.refreshFetchedResultController() }) } - addAction(LocalizedStrings.cancel) + addActionWithTitle(LocalizedStrings.cancel) } - override func finished(errors: [NSError]) { + override func operationDidFinish(errors: [ErrorType]) { Preference.libraryHasShownPreferredLanguagePrompt = true } - func andJoinedString(a: String, b: String) -> String { + private func andJoinedString(a: String, b: String) -> String { return a + " " + LocalizedStrings.and + " " + b } } -class RefreshLibraryInternetRequiredAlert: AlertOperation { - override init(presentationContext: UIViewController?) { - super.init(presentationContext: presentationContext) - - let comment = "Library: Internet Required Alert" +class RefreshLibraryInternetRequiredAlert: AlertOperation { + let comment = "Library: Internet Required Alert" + init(presentationContext: LibraryOnlineTBVC) { + super.init(presentAlertFrom: presentationContext) title = NSLocalizedString("Internet Connection Required", comment: comment) message = NSLocalizedString("You need to connect to the Internet to refresh the library.", comment: comment) - addAction(LocalizedStrings.ok) + addActionWithTitle(LocalizedStrings.ok) } } -class GetStartedAlert: AlertOperation { - init(mainController: MainController?) { - super.init(presentationContext: mainController) - - let comment = "First Time Launch Message" +class GetStartedAlert: AlertOperation { + let comment = "First Time Launch Message" + init(presentationContext mainController: MainController) { + super.init(presentAlertFrom: mainController) title = NSLocalizedString("Welcome to Kiwix", comment: comment) message = NSLocalizedString("Add a Book to Get Started", comment: comment) - addAction(NSLocalizedString("Download", comment: comment), style: .Default) { (alert) in - mainController?.showLibraryButtonTapped() + addActionWithTitle(NSLocalizedString("Download", comment: comment), style: .Default) { (alert) in + mainController.showLibraryButtonTapped() } - addAction(NSLocalizedString("Import", comment: comment), style: .Default) { (alert) in + addActionWithTitle(NSLocalizedString("Import", comment: comment), style: .Default) { (alert) in let operation = ShowHelpPageOperation(type: .ImportBookLearnMore, presentationContext: mainController) GlobalOperationQueue.sharedInstance.addOperation(operation) } - addAction(NSLocalizedString("Dismiss", comment: comment)) + addActionWithTitle(NSLocalizedString("Dismiss", comment: comment)) } } @@ -130,19 +125,23 @@ class GetStartedAlert: AlertOperation { class ShowHelpPageOperation: Operation { private let type: WebViewControllerContentType - private weak var presentationContext: UIViewController? + private let presentationContext: UIViewController - init(type: WebViewControllerContentType, presentationContext: UIViewController?) { + init(type: WebViewControllerContentType, presentationContext: UIViewController) { self.type = type self.presentationContext = presentationContext + super.init() } override func execute() { - NSOperationQueue.mainQueue().addOperationWithBlock { - guard let controller = UIStoryboard.setting.instantiateViewControllerWithIdentifier("WebViewController") as? WebViewController else {return} - controller.page = self.type - let navController = UINavigationController(rootViewController: controller) - self.presentationContext?.presentViewController(navController, animated: true, completion: nil) - } + defer { finish() } + guard let controller = UIStoryboard.setting.instantiateViewControllerWithIdentifier("WebViewController") as? WebViewController else {return} + controller.page = self.type + + let operation = UIOperation(controller: UIViewController(), + displayControllerFrom: .Present(presentationContext), + inNavigationController: true, + sender: nil) + produceOperation(operation) } } diff --git a/Kiwix/Operations/URLSessionDownloadTaskOperation.swift b/Kiwix/Operations/URLSessionDownloadTaskOperation.swift index e3fec0b6b..e88c54956 100644 --- a/Kiwix/Operations/URLSessionDownloadTaskOperation.swift +++ b/Kiwix/Operations/URLSessionDownloadTaskOperation.swift @@ -6,7 +6,7 @@ // Copyright © 2016 Chris. All rights reserved. // -import PSOperations +import Operations private var URLSessionTaskOperationKVOContext = 0 diff --git a/Kiwix/Operations/UpdateWidgetDataSourceOperation.swift b/Kiwix/Operations/UpdateWidgetDataSourceOperation.swift index dd426aba3..ad3bf85f5 100644 --- a/Kiwix/Operations/UpdateWidgetDataSourceOperation.swift +++ b/Kiwix/Operations/UpdateWidgetDataSourceOperation.swift @@ -7,7 +7,7 @@ // import CoreData -import PSOperations +import Operations import NotificationCenter class UpdateWidgetDataSourceOperation: Operation { diff --git a/Kiwix/ReachabilityCondition.swift b/Kiwix/ReachabilityCondition.swift index 91ebbcef1..5d0fda75a 100644 --- a/Kiwix/ReachabilityCondition.swift +++ b/Kiwix/ReachabilityCondition.swift @@ -8,7 +8,7 @@ This file shows an example of implementing the OperationCondition protocol. import Foundation import SystemConfiguration -import PSOperations +import Operations /** This is a condition that performs a very high-level reachability check. diff --git a/Kiwix/ZimMultiReader/ZimMultiReader.swift b/Kiwix/ZimMultiReader/ZimMultiReader.swift index 259acf361..4b79eba0b 100644 --- a/Kiwix/ZimMultiReader/ZimMultiReader.swift +++ b/Kiwix/ZimMultiReader/ZimMultiReader.swift @@ -7,7 +7,7 @@ // import CoreData -import PSOperations +import Operations class ZimMultiReader: NSObject, DirectoryMonitorDelegate { static let sharedInstance = ZimMultiReader() diff --git a/Podfile b/Podfile index 5ff94190a..743d4dece 100644 --- a/Podfile +++ b/Podfile @@ -8,7 +8,7 @@ platform :ios, '9.0' pod 'DateTools' pod 'DZNEmptyDataSet' pod 'SwiftyUserDefaults' -pod 'PSOperations/Core', '~> 2.3' +pod 'Operations' end @@ -17,6 +17,6 @@ target 'Kiwix-OSX' do platform :osx, '10.10' pod 'DateTools' -pod 'SwiftyUserDefaults' +pod 'Operations' end diff --git a/Podfile.lock b/Podfile.lock index ce5b9c836..9e18de31a 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,21 +1,23 @@ PODS: - DateTools (1.7.0) - DZNEmptyDataSet (1.8) - - PSOperations/Core (2.3.0) + - Operations (3.0.0): + - Operations/Standard (= 3.0.0) + - Operations/Standard (3.0.0) - SwiftyUserDefaults (2.2.0) DEPENDENCIES: - DateTools - DZNEmptyDataSet - - PSOperations/Core (~> 2.3) + - Operations - SwiftyUserDefaults SPEC CHECKSUMS: DateTools: 53288ee8b905fdc75897a1e6b5cc0144b14cba60 DZNEmptyDataSet: d2351b2e8daefa40433ef292e246e21f6be31a7b - PSOperations: 81a4d50a4efe96f6d090dc0e7eb45d9fef79ff45 + Operations: c05cc4b2ad060201ab98cbacd5217876658b5f2c SwiftyUserDefaults: e7c8197a9d4068702e7f2406a968cae413b8de27 -PODFILE CHECKSUM: b9d1499b8e98a823777c72ddb35e782d499bac14 +PODFILE CHECKSUM: 272d9b2fa769891c415d6d95e406cd5808b07b27 COCOAPODS: 1.0.1 From 4ea03c6599bd1a6ed4bbb76598ae3ea11e540397 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Thu, 4 Aug 2016 16:40:18 -0400 Subject: [PATCH 02/21] Operation lib refactor --- Kiwix-iOS/AppDelegate.swift | 2 +- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Model/Network.swift | 8 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix.xcodeproj/project.pbxproj | 18 +-- Kiwix/Operations/AlertOperation.swift | 83 ------------ Kiwix/Operations/NetworkObserver.swift | 120 ------------------ .../Operations/RefreshLibraryOperation.swift | 19 +-- Kiwix/Operations/ScanLocalBookOperation.swift | 4 +- Kiwix/Operations/SearchOperation.swift | 5 +- .../URLSessionDownloadTaskOperation.swift | 5 +- Kiwix/ReachabilityCondition.swift | 115 ----------------- 12 files changed, 28 insertions(+), 355 deletions(-) delete mode 100644 Kiwix/Operations/AlertOperation.swift delete mode 100644 Kiwix/Operations/NetworkObserver.swift delete mode 100644 Kiwix/ReachabilityCondition.swift diff --git a/Kiwix-iOS/AppDelegate.swift b/Kiwix-iOS/AppDelegate.swift index a0dcead93..e209bd03e 100644 --- a/Kiwix-iOS/AppDelegate.swift +++ b/Kiwix-iOS/AppDelegate.swift @@ -10,7 +10,7 @@ import CoreData import Operations @UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate, OperationQueueDelegate { +class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? var mainController: MainController? { diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 77c6331cd..ab31dd59d 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.697 + 1.7.699 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Model/Network.swift b/Kiwix-iOS/Model/Network.swift index f2dafbf63..df3d2e8b2 100644 --- a/Kiwix-iOS/Model/Network.swift +++ b/Kiwix-iOS/Model/Network.swift @@ -106,7 +106,7 @@ class Network: NSObject, NSURLSessionDelegate, NSURLSessionDownloadDelegate, NSU // MARK: - OperationQueueDelegate - func operationQueue(operationQueue: OperationQueue, willAddOperation operation: NSOperation) { + func operationQueue(queue: OperationQueue, willAddOperation operation: NSOperation) { guard operationQueue.operationCount == 0 else {return} shouldReportProgress = true NSOperationQueue.mainQueue().addOperationWithBlock { () -> Void in @@ -114,7 +114,9 @@ class Network: NSObject, NSURLSessionDelegate, NSURLSessionDownloadDelegate, NSU } } - func operationQueue(operationQueue: OperationQueue, operationDidFinish operation: NSOperation, withErrors errors: [NSError]) { + func operationQueue(queue: OperationQueue, willFinishOperation operation: NSOperation, withErrors errors: [ErrorType]) {} + + func operationQueue(queue: OperationQueue, didFinishOperation operation: NSOperation, withErrors errors: [ErrorType]) { guard operationQueue.operationCount == 1 else {return} NSOperationQueue.mainQueue().addOperationWithBlock { () -> Void in self.timer?.invalidate() @@ -122,6 +124,8 @@ class Network: NSObject, NSURLSessionDelegate, NSURLSessionDownloadDelegate, NSU } } + func operationQueue(queue: OperationQueue, willProduceOperation operation: NSOperation) {} + // MARK: - NSURLSessionDelegate func URLSessionDidFinishEventsForBackgroundURLSession(session: NSURLSession) { diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 6cfac74e1..3085c8d48 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.747 + 1.7.768 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index e2e99f51d..481bfb12c 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ 7356F9FACBB84380CFC8F68F /* Pods_Kiwix_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC884ACBBA260AF741C4C4FE /* Pods_Kiwix_iOS.framework */; }; 970C3DCA1CBD79450026A240 /* MigrationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970C3DC91CBD79450026A240 /* MigrationPolicy.swift */; }; 970C61971D34243600087758 /* URLSessionDownloadTaskOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970C61961D34243600087758 /* URLSessionDownloadTaskOperation.swift */; }; - 970C61991D3429E400087758 /* ReachabilityCondition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970C61981D3429E400087758 /* ReachabilityCondition.swift */; }; 970C65501D398D5A007032F8 /* BookmarkControllerAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970C654F1D398D5A007032F8 /* BookmarkControllerAnimator.swift */; }; 970E68B21D37E1DD001E8514 /* SettingSearchTuneController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970E68B11D37E1DD001E8514 /* SettingSearchTuneController.swift */; }; 970E68B61D37E224001E8514 /* SettingSearchHistoryTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970E68B51D37E224001E8514 /* SettingSearchHistoryTBVC.swift */; }; @@ -273,7 +272,6 @@ 6DCB0E958A1083CA248C5A12 /* Pods-Kiwix-OSX.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Kiwix-OSX.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Kiwix-OSX/Pods-Kiwix-OSX.debug.xcconfig"; sourceTree = ""; }; 970C3DC91CBD79450026A240 /* MigrationPolicy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MigrationPolicy.swift; path = CoreData/Migration/MigrationPolicy.swift; sourceTree = ""; }; 970C61961D34243600087758 /* URLSessionDownloadTaskOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = URLSessionDownloadTaskOperation.swift; path = Operations/URLSessionDownloadTaskOperation.swift; sourceTree = ""; }; - 970C61981D3429E400087758 /* ReachabilityCondition.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReachabilityCondition.swift; sourceTree = ""; }; 970C654F1D398D5A007032F8 /* BookmarkControllerAnimator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BookmarkControllerAnimator.swift; path = "Kiwix-iOS/Controller/Bookmark/BookmarkControllerAnimator.swift"; sourceTree = SOURCE_ROOT; }; 970E68B11D37E1DD001E8514 /* SettingSearchTuneController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SettingSearchTuneController.swift; path = "Kiwix-iOS/Controller/Setting/SettingSearchTuneController.swift"; sourceTree = SOURCE_ROOT; }; 970E68B51D37E224001E8514 /* SettingSearchHistoryTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SettingSearchHistoryTBVC.swift; path = "Kiwix-iOS/Controller/Setting/SettingSearchHistoryTBVC.swift"; sourceTree = SOURCE_ROOT; }; @@ -412,9 +410,7 @@ 977998711C1E0B7900B1DD5E /* Article+CoreDataProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Article+CoreDataProperties.swift"; path = "Kiwix/CoreData/Article+CoreDataProperties.swift"; sourceTree = ""; }; 977998721C1E0B7900B1DD5E /* Language+CoreDataProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Language+CoreDataProperties.swift"; path = "Kiwix/CoreData/Language+CoreDataProperties.swift"; sourceTree = ""; }; 9779987A1C1E1C9600B1DD5E /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = Kiwix/Extensions.swift; sourceTree = ""; }; - 9779A1C21D34225E0071EFAB /* AlertOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AlertOperation.swift; path = Operations/AlertOperation.swift; sourceTree = ""; }; 9779A1C31D34225E0071EFAB /* GlobalOperationQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GlobalOperationQueue.swift; path = Operations/GlobalOperationQueue.swift; sourceTree = ""; }; - 9779A1C41D34225E0071EFAB /* NetworkObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NetworkObserver.swift; path = Operations/NetworkObserver.swift; sourceTree = ""; }; 9779A1C51D34225E0071EFAB /* RefreshLibraryOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RefreshLibraryOperation.swift; path = Operations/RefreshLibraryOperation.swift; sourceTree = ""; }; 9779A1C61D34225E0071EFAB /* SearchOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SearchOperation.swift; path = Operations/SearchOperation.swift; sourceTree = ""; }; 9779A1C71D34225E0071EFAB /* UIOperations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIOperations.swift; path = Operations/UIOperations.swift; sourceTree = ""; }; @@ -793,17 +789,6 @@ name = Shared; sourceTree = ""; }; - 973DD4031D343F09009D45DB /* Basic */ = { - isa = PBXGroup; - children = ( - 9779A1C21D34225E0071EFAB /* AlertOperation.swift */, - 9779A1C41D34225E0071EFAB /* NetworkObserver.swift */, - 970C61981D3429E400087758 /* ReachabilityCondition.swift */, - 9779A1C71D34225E0071EFAB /* UIOperations.swift */, - ); - name = Basic; - sourceTree = ""; - }; 973DD4261D36E395009D45DB /* Tools */ = { isa = PBXGroup; children = ( @@ -1106,11 +1091,11 @@ 97E5712A1CA0525300FF4F1D /* Operation */ = { isa = PBXGroup; children = ( - 973DD4031D343F09009D45DB /* Basic */, 9779A1C31D34225E0071EFAB /* GlobalOperationQueue.swift */, 9779A1C51D34225E0071EFAB /* RefreshLibraryOperation.swift */, 973DD4241D344558009D45DB /* ScanLocalBookOperation.swift */, 9779A1C61D34225E0071EFAB /* SearchOperation.swift */, + 9779A1C71D34225E0071EFAB /* UIOperations.swift */, 971C4F0D1D400F010027B7D2 /* UpdateWidgetDataSourceOperation.swift */, 970C61961D34243600087758 /* URLSessionDownloadTaskOperation.swift */, ); @@ -1721,7 +1706,6 @@ 970E68BB1D3809A3001E8514 /* MainControllerDelegates.swift in Sources */, 973DD4211D34434C009D45DB /* SearchResult.swift in Sources */, 9779A1C91D34225E0071EFAB /* GlobalOperationQueue.swift in Sources */, - 970C61991D3429E400087758 /* ReachabilityCondition.swift in Sources */, 978C589C1C1CD86E0077AE47 /* Article.swift in Sources */, 973DD41E1D34428F009D45DB /* ZimMultiReader.swift in Sources */, ); diff --git a/Kiwix/Operations/AlertOperation.swift b/Kiwix/Operations/AlertOperation.swift deleted file mode 100644 index 31ba58b68..000000000 --- a/Kiwix/Operations/AlertOperation.swift +++ /dev/null @@ -1,83 +0,0 @@ -/* -Copyright (C) 2015 Apple Inc. All Rights Reserved. -See LICENSE.txt for this sample’s licensing information - -Abstract: -This file shows how to present an alert as part of an operation. -*/ - -import UIKit -import PSOperations - -class AlertOperation: Operation { - // MARK: Properties - - private let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .Alert) - private let presentationContext: UIViewController? - - var title: String? { - get { - return alertController.title - } - - set { - alertController.title = newValue - name = newValue - } - } - - var message: String? { - get { - return alertController.message - } - - set { - alertController.message = newValue - } - } - - // MARK: Initialization - - init(presentationContext: UIViewController? = nil) { - self.presentationContext = presentationContext ?? UIApplication.sharedApplication().keyWindow?.rootViewController - - super.init() - - addCondition(AlertPresentation()) - - /* - This operation modifies the view controller hierarchy. - Doing this while other such operations are executing can lead to - inconsistencies in UIKit. So, let's make them mutally exclusive. - */ - addCondition(MutuallyExclusive()) - } - - func addAction(title: String, style: UIAlertActionStyle = .Default, handler: AlertOperation -> Void = { _ in }) { - let action = UIAlertAction(title: title, style: style) { [weak self] _ in - if let strongSelf = self { - handler(strongSelf) - } - - self?.finish() - } - - alertController.addAction(action) - } - - override func execute() { - guard let presentationContext = presentationContext else { - finish() - - return - } - - dispatch_async(dispatch_get_main_queue()) { - if self.alertController.actions.isEmpty { - self.addAction("OK") - } - - presentationContext.presentViewController(self.alertController, animated: true, completion: nil) - } - } -} diff --git a/Kiwix/Operations/NetworkObserver.swift b/Kiwix/Operations/NetworkObserver.swift deleted file mode 100644 index 60084e34e..000000000 --- a/Kiwix/Operations/NetworkObserver.swift +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright (C) 2015 Apple Inc. All Rights Reserved. -See LICENSE.txt for this sample’s licensing information - -Abstract: -Contains the code to manage the visibility of the network activity indicator -*/ - -import UIKit -import PSOperations - -/** - An `OperationObserver` that will cause the network activity indicator to appear - as long as the `Operation` to which it is attached is executing. -*/ -struct NetworkObserver: OperationObserver { - // MARK: Initilization - - init() { } - - func operationDidStart(operation: Operation) { - print("NetworkObserver: \(operation.name ?? "Unknown") operation did start") - dispatch_async(dispatch_get_main_queue()) { - // Increment the network indicator's "reference count" - NetworkIndicatorController.sharedIndicatorController.networkActivityDidStart() - } - } - - func operation(operation: Operation, didProduceOperation newOperation: NSOperation) { } - - func operationDidFinish(operation: Operation, errors: [NSError]) { - print("NetworkObserver: \(operation.name ?? "Unknown") operation did finish") - dispatch_async(dispatch_get_main_queue()) { - // Decrement the network indicator's "reference count". - NetworkIndicatorController.sharedIndicatorController.networkActivityDidEnd() - } - } - - func operationDidCancel(operation: Operation) { } -} - -/// A singleton to manage a visual "reference count" on the network activity indicator. -private class NetworkIndicatorController { - // MARK: Properties - - static let sharedIndicatorController = NetworkIndicatorController() - - private var activityCount = 0 - - private var visibilityTimer: Timer? - - // MARK: Methods - - func networkActivityDidStart() { - assert(NSThread.isMainThread(), "Altering network activity indicator state can only be done on the main thread.") - - activityCount += 1 - - updateIndicatorVisibility() - } - - func networkActivityDidEnd() { - assert(NSThread.isMainThread(), "Altering network activity indicator state can only be done on the main thread.") - - activityCount -= 1 - - updateIndicatorVisibility() - } - - private func updateIndicatorVisibility() { - if activityCount > 0 { - showIndicator() - } - else { - /* - To prevent the indicator from flickering on and off, we delay the - hiding of the indicator by one second. This provides the chance - to come in and invalidate the timer before it fires. - */ - visibilityTimer = Timer(interval: 1.0) { - self.hideIndicator() - } - } - } - - private func showIndicator() { - visibilityTimer?.cancel() - visibilityTimer = nil - UIApplication.sharedApplication().networkActivityIndicatorVisible = true - } - - private func hideIndicator() { - visibilityTimer?.cancel() - visibilityTimer = nil - UIApplication.sharedApplication().networkActivityIndicatorVisible = false - } -} - -/// Essentially a cancellable `dispatch_after`. -class Timer { - // MARK: Properties - - private var isCancelled = false - - // MARK: Initialization - - init(interval: NSTimeInterval, handler: dispatch_block_t) { - let when = dispatch_time(DISPATCH_TIME_NOW, Int64(interval * Double(NSEC_PER_SEC))) - - dispatch_after(when, dispatch_get_main_queue()) { [weak self] in - if self?.isCancelled == false { - handler() - } - } - } - - func cancel() { - isCancelled = true - } -} \ No newline at end of file diff --git a/Kiwix/Operations/RefreshLibraryOperation.swift b/Kiwix/Operations/RefreshLibraryOperation.swift index ee1034cd3..988f1fac0 100644 --- a/Kiwix/Operations/RefreshLibraryOperation.swift +++ b/Kiwix/Operations/RefreshLibraryOperation.swift @@ -25,7 +25,7 @@ class RefreshLibraryOperation: GroupOperation { // 0.Download library let url = NSURL(string: "http://www.kiwix.org/library.xml")! let task = NSURLSession.sharedSession().dataTaskWithURL(url) { [unowned parseOperation] (data, response, error) -> Void in - if let error = error {self.aggregateError(error)} + if let error = error {self.addFatalError(error)} parseOperation.xmlData = data } let fetchOperation = URLSessionTaskOperation(task: task) @@ -34,7 +34,8 @@ class RefreshLibraryOperation: GroupOperation { #if os(iOS) || os(watchOS) || os(tvOS) fetchOperation.addObserver(NetworkObserver()) #endif - fetchOperation.addCondition(ReachabilityCondition(host: url, allowCellular: Preference.libraryRefreshAllowCellularData)) + let reachibility = ReachabilityCondition(url: url, connectivity: Preference.libraryRefreshAllowCellularData ? .AnyConnectionKind : .ViaWiFi) + fetchOperation.addCondition(reachibility) if invokedAutomatically { addCondition(AllowAutoRefreshCondition()) @@ -45,8 +46,8 @@ class RefreshLibraryOperation: GroupOperation { parseOperation.addDependency(fetchOperation) } - override func finished(errors: [NSError]) { - completionHandler?(errors: errors) + override func operationDidFinish(errors: [ErrorType]) { + completionHandler?(errors: [NSError]()) } } @@ -129,22 +130,22 @@ class ParseLibraryOperation: Operation, NSXMLParserDelegate { } private struct AllowAutoRefreshCondition: OperationCondition { - static let name = "LibraryAllowAutoRefresh" - static let isMutuallyExclusive = false + let name = "LibraryAllowAutoRefresh" + let isMutuallyExclusive = false init() {} - func dependencyForOperation(operation: Operation) -> NSOperation? { + private func dependencyForOperation(operation: Operation) -> NSOperation? { return nil } - func evaluateForOperation(operation: Operation, completion: OperationConditionResult -> Void) { + private func evaluateForOperation(operation: Operation, completion: OperationConditionResult -> Void) { let allowAutoRefresh = !Preference.libraryAutoRefreshDisabled if allowAutoRefresh { completion(.Satisfied) } else { - let error = NSError(code: .ConditionFailed, userInfo: [OperationConditionKey: self.dynamicType.name]) + let error = NSError(domain: "", code: 1, userInfo: nil) completion(.Failed(error)) } } diff --git a/Kiwix/Operations/ScanLocalBookOperation.swift b/Kiwix/Operations/ScanLocalBookOperation.swift index cb38e883d..95e33c709 100644 --- a/Kiwix/Operations/ScanLocalBookOperation.swift +++ b/Kiwix/Operations/ScanLocalBookOperation.swift @@ -54,10 +54,10 @@ class ScanLocalBookOperation: Operation { updateCoreData() } - override func finished(errors: [NSError]) { + override func operationDidFinish(errors: [ErrorType]) { context.performBlockAndWait {self.context.saveIfNeeded()} NSManagedObjectContext.mainQueueContext.performBlockAndWait {NSManagedObjectContext.mainQueueContext.saveIfNeeded()} - NSOperationQueue.mainQueue().addOperationWithBlock { + NSOperationQueue.mainQueue().addOperationWithBlock { self.completionHandler(currentZimFileURLSnapshot: self.currentZimFileURLSnapshot, currentIndexFolderURLSnapshot: self.currentIndexFolderURLSnapshot, firstBookAdded: self.firstBookAdded) } diff --git a/Kiwix/Operations/SearchOperation.swift b/Kiwix/Operations/SearchOperation.swift index 044d363a4..cb12e6dbd 100644 --- a/Kiwix/Operations/SearchOperation.swift +++ b/Kiwix/Operations/SearchOperation.swift @@ -41,8 +41,7 @@ class SearchOperation: GroupOperation { addCondition(MutuallyExclusive()) } - override func finished(errors: [NSError]) { - //print("Search Operation finished, status \(cancelled ? "Canceled" : "Not Canceled"), \(NSDate().timeIntervalSinceDate(startTime))") + override func operationDidFinish(errors: [ErrorType]) { NSOperationQueue.mainQueue().addOperationWithBlock { self.completionHandler(self.cancelled ? nil : self.results) } @@ -58,6 +57,7 @@ private class SingleBookSearchOperation: Operation { self.zimReader = zimReader self.lowerCaseSearchTerm = lowerCaseSearchTerm self.completionHandler = completionHandler + super.init() } override private func execute() { @@ -80,6 +80,7 @@ private class SortSearchResultsOperation: Operation { init(completionHandler: ([SearchResult]) -> Void) { self.completionHandler = completionHandler + super.init() } override private func execute() { diff --git a/Kiwix/Operations/URLSessionDownloadTaskOperation.swift b/Kiwix/Operations/URLSessionDownloadTaskOperation.swift index e88c54956..e462d321e 100644 --- a/Kiwix/Operations/URLSessionDownloadTaskOperation.swift +++ b/Kiwix/Operations/URLSessionDownloadTaskOperation.swift @@ -20,14 +20,15 @@ public class URLSessionDownloadTaskOperation: Operation { self.task = downloadTask super.init() - addObserver(BlockObserver(cancelHandler: { _ in + addObserver(DidCancelObserver { _ in if self.produceResumeData { downloadTask.cancelByProducingResumeData({ (data) in }) } else { downloadTask.cancel() } - })) + } + ) } public func cancel(produceResumeData produceResumeData: Bool) { diff --git a/Kiwix/ReachabilityCondition.swift b/Kiwix/ReachabilityCondition.swift deleted file mode 100644 index 5d0fda75a..000000000 --- a/Kiwix/ReachabilityCondition.swift +++ /dev/null @@ -1,115 +0,0 @@ -/* -Copyright (C) 2015 Apple Inc. All Rights Reserved. -See LICENSE.txt for this sample’s licensing information - -Abstract: -This file shows an example of implementing the OperationCondition protocol. -*/ - -import Foundation -import SystemConfiguration -import Operations - -/** - This is a condition that performs a very high-level reachability check. - It does *not* perform a long-running reachability check, nor does it respond to changes in reachability. - Reachability is evaluated once when the operation to which this is attached is asked about its readiness. -*/ -struct ReachabilityCondition: OperationCondition { - static let hostKey = "Host" - static let name = "Reachability" - static let isMutuallyExclusive = false - - let host: NSURL - let allowCellular: Bool - - init(host: NSURL, allowCellular: Bool = true) { - self.host = host - self.allowCellular = allowCellular - } - - func dependencyForOperation(operation: Operation) -> NSOperation? { - return nil - } - - func evaluateForOperation(operation: Operation, completion: OperationConditionResult -> Void) { - ReachabilityController.requestReachability(host, allowCellular: allowCellular) { reachable in - if reachable { - completion(.Satisfied) - } - else { - let userInfo = ["title": "Network Error", - "message": "Unable connecting to the internet. Please check your connection."] - let error = NSError(code: .ConditionFailed, userInfo: userInfo) - completion(.Failed(error)) - } - } - } - -} - -/// A private singleton that maintains a basic cache of `SCNetworkReachability` objects. -private class ReachabilityController { - static var reachabilityRefs = [String: SCNetworkReachability]() - - static let reachabilityQueue = dispatch_queue_create("Operations.Reachability", DISPATCH_QUEUE_SERIAL) - - static func requestReachability(url: NSURL?, allowCellular: Bool, completionHandler: (Bool) -> Void) { - if let host = url?.host { - dispatch_async(reachabilityQueue) { - var ref = self.reachabilityRefs[host] - - if ref == nil { - let hostString = host as NSString - ref = SCNetworkReachabilityCreateWithName(nil, hostString.UTF8String) - } - - if let ref = ref { - self.reachabilityRefs[host] = ref - - let reachable = getReachibility(ref, allowCellular: allowCellular) - completionHandler(reachable) - } else { - completionHandler(false) - } - } - } else { - // Test for general internet connectibility - dispatch_async(reachabilityQueue) { - var zeroAddress = sockaddr_in() - zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress)) - zeroAddress.sin_family = sa_family_t(AF_INET) - - guard let ref = withUnsafePointer(&zeroAddress, { - SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)) - }) else {completionHandler(false); return} - - let reachable = getReachibility(ref, allowCellular: allowCellular) - completionHandler(reachable) - } - } - } - - static func getReachibility(ref: SCNetworkReachability, allowCellular: Bool) -> Bool { - var reachable = false - var flags: SCNetworkReachabilityFlags = [] - if SCNetworkReachabilityGetFlags(ref, &flags) != false { - /* - Here to check forother considerations, - such as whether or not the connection would require - VPN, a cellular connection, etc. - */ - #if os(iOS) || os(watchOS) || os(tvOS) - if allowCellular { - reachable = flags.contains(.Reachable) - } else { - reachable = flags.contains(.Reachable) && !flags.contains(.IsWWAN) - } - #elseif os(OSX) - return flags.contains(.Reachable) - #endif - - } - return reachable - } -} From ab398818d18cf08158195da68c043b8ec2a444ad Mon Sep 17 00:00:00 2001 From: Chris Li Date: Thu, 4 Aug 2016 17:23:45 -0400 Subject: [PATCH 03/21] modify IPHONEOS_DEPLOYMENT_TARGET --- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix.xcodeproj/project.pbxproj | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index ab31dd59d..2d6190458 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.699 + 1.7.700 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 3085c8d48..dcd8e155d 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.768 + 1.7.769 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index 481bfb12c..08c39b2ab 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -1974,7 +1974,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.2; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -2013,7 +2013,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.2; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; From 7d418dcfd60e5aeb10422fd234fe0a663b295e82 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Fri, 5 Aug 2016 10:29:48 -0400 Subject: [PATCH 04/21] Search path shorthand updates --- Kiwix-iOS/Controller/LibraryBackupTBVC.swift | 4 +-- Kiwix-iOS/Controller/SettingTBVC.swift | 2 +- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix.xcodeproj/project.pbxproj | 2 +- Kiwix/Extensions.swift | 14 ++++++++-- Kiwix/FileManager.swift | 26 +++---------------- Kiwix/Operations/ScanLocalBookOperation.swift | 4 +-- Kiwix/ZimMultiReader/ZimMultiReader.swift | 2 +- 9 files changed, 24 insertions(+), 34 deletions(-) diff --git a/Kiwix-iOS/Controller/LibraryBackupTBVC.swift b/Kiwix-iOS/Controller/LibraryBackupTBVC.swift index 29759e032..ffede5723 100644 --- a/Kiwix-iOS/Controller/LibraryBackupTBVC.swift +++ b/Kiwix-iOS/Controller/LibraryBackupTBVC.swift @@ -16,7 +16,7 @@ class LibraryBackupTBVC: UITableViewController { super.viewDidLoad() title = NSLocalizedString("Backup", comment: "Setting: Backup local files title") toggle.addTarget(self, action: #selector(LibraryBackupTBVC.switcherValueChanged(_:)), forControlEvents: .ValueChanged) - toggle.on = !(FileManager.getSkipBackupAttribute(item: FileManager.docDirURL) ?? false) + toggle.on = !(FileManager.getSkipBackupAttribute(item: NSFileManager.docDirURL) ?? false) } // MARK: - Table view data source @@ -48,7 +48,7 @@ class LibraryBackupTBVC: UITableViewController { func switcherValueChanged(switcher: UISwitch) { guard switcher == toggle else {return} - FileManager.setSkipBackupAttribute(!switcher.on, url: FileManager.docDirURL) + FileManager.setSkipBackupAttribute(!switcher.on, url: NSFileManager.docDirURL) } } diff --git a/Kiwix-iOS/Controller/SettingTBVC.swift b/Kiwix-iOS/Controller/SettingTBVC.swift index db4bd6924..1b36e9c66 100644 --- a/Kiwix-iOS/Controller/SettingTBVC.swift +++ b/Kiwix-iOS/Controller/SettingTBVC.swift @@ -67,7 +67,7 @@ class SettingTBVC: UITableViewController { case NSIndexPath(forRow: 1, inSection: 0): return Preference.libraryRefreshAllowCellularData ? LocalizedStrings.on : LocalizedStrings.off case NSIndexPath(forRow: 2, inSection: 0): - guard let skipBackup = FileManager.getSkipBackupAttribute(item: FileManager.docDirURL) else {return ""} + guard let skipBackup = FileManager.getSkipBackupAttribute(item: NSFileManager.docDirURL) else {return ""} return skipBackup ? LocalizedStrings.off: LocalizedStrings.on case NSIndexPath(forRow: 0, inSection: 1): return String.formattedPercentString(Preference.webViewZoomScale / 100) diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 2d6190458..15fc21cdd 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.700 + 1.7.710 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index dcd8e155d..a6961a111 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.769 + 1.7.787 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index 08c39b2ab..7aa0ba8ec 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -778,7 +778,6 @@ isa = PBXGroup; children = ( 9711872D1CEB507600B9909D /* CoreData */, - 9779987A1C1E1C9600B1DD5E /* Extensions.swift */, 97163D321CD7E79F008BE2D6 /* Help Docs */, 971187051CEB426E00B9909D /* libkiwix */, 97E5712A1CA0525300FF4F1D /* Operation */, @@ -792,6 +791,7 @@ 973DD4261D36E395009D45DB /* Tools */ = { isa = PBXGroup; children = ( + 9779987A1C1E1C9600B1DD5E /* Extensions.swift */, 97E891681CA976E90001CA32 /* FileManager.swift */, 973C8D5B1C25F945007272F9 /* Preference.swift */, 979C51511CECA9AF001707F2 /* StringTools.swift */, diff --git a/Kiwix/Extensions.swift b/Kiwix/Extensions.swift index c2cddf48f..5cb186c38 100644 --- a/Kiwix/Extensions.swift +++ b/Kiwix/Extensions.swift @@ -30,8 +30,6 @@ import Foundation } #endif -// MARK: - Model - extension NSLocale { class var preferredLangCodes: [String] { let preferredLangNames = self.preferredLanguages() @@ -54,4 +52,16 @@ extension NSBundle { } } +extension NSFileManager { + class var docDirURL: NSURL { + let url = try? NSFileManager.defaultManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false) + return url! + } + + class var libDirURL: NSURL { + let url = try? NSFileManager.defaultManager().URLForDirectory(.LibraryDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false) + return url! + } +} + diff --git a/Kiwix/FileManager.swift b/Kiwix/FileManager.swift index 0e9a77497..ff01acbcd 100644 --- a/Kiwix/FileManager.swift +++ b/Kiwix/FileManager.swift @@ -8,26 +8,6 @@ class FileManager { - // MARK: - Path Utilities - - class var docDirPath: String { - let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) - return paths.first! - } - - class var docDirURL: NSURL { - return NSURL(fileURLWithPath: docDirPath, isDirectory: true) - } - - class var libDirPath: String { - let paths = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true) - return paths.first! - } - - class var libDirURL: NSURL { - return NSURL(fileURLWithPath: libDirPath, isDirectory: true) - } - // MARK: - Move Book class func move(book: Book, fromURL: NSURL, suggestedFileName: String?) { @@ -36,7 +16,7 @@ class FileManager { if let id = book.id {return "\(id).zim"} return NSDate().description + ".zim" }() - let directory = docDirURL + let directory = NSFileManager.docDirURL createDirectory(directory, includeInICloudBackup: false) let destination = directory.URLByAppendingPathComponent(fileName) moveOrReplaceFile(from: fromURL, to: destination) @@ -45,12 +25,12 @@ class FileManager { // MARK: - Book Resume Data private class func resumeDataURL(book: Book) -> NSURL { - let tempDownloadLocation = NSURL(fileURLWithPath: libDirPath).URLByAppendingPathComponent("DownloadTemp", isDirectory: true) + let tempDownloadLocation = NSURL(fileURLWithPath: NSFileManager.libDirURL.path!).URLByAppendingPathComponent("DownloadTemp", isDirectory: true) return tempDownloadLocation.URLByAppendingPathComponent(book.id ?? NSDate().description, isDirectory: false) } class func saveResumeData(data: NSData, book: Book) { - let tempDownloadLocation = NSURL(fileURLWithPath: libDirPath).URLByAppendingPathComponent("DownloadTemp", isDirectory: true) + let tempDownloadLocation = NSURL(fileURLWithPath: NSFileManager.libDirURL.path!).URLByAppendingPathComponent("DownloadTemp", isDirectory: true) if !NSFileManager.defaultManager().fileExistsAtPath(tempDownloadLocation.path!) { do { try NSFileManager.defaultManager().createDirectoryAtURL(tempDownloadLocation, withIntermediateDirectories: true, attributes: [NSURLIsExcludedFromBackupKey: true]) diff --git a/Kiwix/Operations/ScanLocalBookOperation.swift b/Kiwix/Operations/ScanLocalBookOperation.swift index 95e33c709..b099e939c 100644 --- a/Kiwix/Operations/ScanLocalBookOperation.swift +++ b/Kiwix/Operations/ScanLocalBookOperation.swift @@ -112,7 +112,7 @@ class ScanLocalBookOperation: Operation { // MARK: - Helper private class func getCurrentZimFileURLsInDocDir() -> Set { - let fileURLs = FileManager.contentsOfDirectory(FileManager.docDirURL) ?? [NSURL]() + let fileURLs = FileManager.contentsOfDirectory(NSFileManager.docDirURL) ?? [NSURL]() var zimURLs = Set() for url in fileURLs { do { @@ -133,7 +133,7 @@ class ScanLocalBookOperation: Operation { } private class func getCurrentIndexFolderURLsInDocDir() -> Set { - let fileURLs = FileManager.contentsOfDirectory(FileManager.docDirURL) ?? [NSURL]() + let fileURLs = FileManager.contentsOfDirectory(NSFileManager.docDirURL) ?? [NSURL]() var folderURLs = Set() for url in fileURLs { do { diff --git a/Kiwix/ZimMultiReader/ZimMultiReader.swift b/Kiwix/ZimMultiReader/ZimMultiReader.swift index 4b79eba0b..175d7a154 100644 --- a/Kiwix/ZimMultiReader/ZimMultiReader.swift +++ b/Kiwix/ZimMultiReader/ZimMultiReader.swift @@ -19,7 +19,7 @@ class ZimMultiReader: NSObject, DirectoryMonitorDelegate { private let searchQueue = OperationQueue() private(set) var isScanning = false private(set) var readers = [ZimID: ZimReader]() - private let monitor = DirectoryMonitor(URL: FileManager.docDirURL) + private let monitor = DirectoryMonitor(URL: NSFileManager.docDirURL) private var lastZimFileURLSnapshot = Set() private var lastIndexFolderURLSnapshot = Set() From 5d38487a857ebb32797f35dba4117c0c59f0d43c Mon Sep 17 00:00:00 2001 From: Chris Li Date: Fri, 5 Aug 2016 10:43:06 -0400 Subject: [PATCH 05/21] resolve conflict in gitignore --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 3541e57ee..de72aeb75 100644 --- a/.gitignore +++ b/.gitignore @@ -4,9 +4,6 @@ Kiwix/libkiwix/C&C++ Kiwix/libkiwix/include Kiwix/libkiwix/shared Kiwix/libkiwix/static -<<<<<<< HEAD *.a -======= Kiwix/libkiwix/iOS Kiwix/libkiwix/macOS ->>>>>>> 1.7 From 398b24e4c63f908dac2ba738d73f4fd23e46a5f9 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Fri, 5 Aug 2016 11:17:17 -0400 Subject: [PATCH 06/21] modern doc dir content filtering --- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix/Operations/ScanLocalBookOperation.swift | 57 ++++++++----------- 3 files changed, 25 insertions(+), 36 deletions(-) diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 15fc21cdd..f2686a65f 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.710 + 1.7.716 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index a6961a111..ba49ce453 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.787 + 1.7.812 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix/Operations/ScanLocalBookOperation.swift b/Kiwix/Operations/ScanLocalBookOperation.swift index b099e939c..7ddcca3f1 100644 --- a/Kiwix/Operations/ScanLocalBookOperation.swift +++ b/Kiwix/Operations/ScanLocalBookOperation.swift @@ -111,46 +111,35 @@ class ScanLocalBookOperation: Operation { // MARK: - Helper + private class func getContentsOfDocDir() -> [NSURL] { + let keys = [NSURLIsDirectoryKey] + let options: NSDirectoryEnumerationOptions = [.SkipsHiddenFiles, .SkipsPackageDescendants, .SkipsHiddenFiles] + let urls = try? NSFileManager.defaultManager().contentsOfDirectoryAtURL(NSFileManager.docDirURL, includingPropertiesForKeys: keys, options: options) + return urls ?? [NSURL]() + } + private class func getCurrentZimFileURLsInDocDir() -> Set { - let fileURLs = FileManager.contentsOfDirectory(NSFileManager.docDirURL) ?? [NSURL]() - var zimURLs = Set() - for url in fileURLs { - do { - var isDirectory: AnyObject? = nil - try url.getResourceValue(&isDirectory, forKey: NSURLIsDirectoryKey) - if let isDirectory = (isDirectory as? NSNumber)?.boolValue { - if !isDirectory { - guard let pathExtension = url.pathExtension?.lowercaseString else {continue} - guard pathExtension.containsString("zim") else {continue} - zimURLs.insert(url) - } - } - } catch { - continue - } + var urls = getContentsOfDocDir() + let keys = [NSURLIsDirectoryKey] + urls = urls.filter { (url) -> Bool in + guard let values = try? url.resourceValuesForKeys(keys), + let isDirectory = (values[NSURLIsDirectoryKey] as? NSNumber)?.boolValue where isDirectory == false else {return false} + guard let pathExtension = url.pathExtension?.lowercaseString where pathExtension.containsString("zim") else {return false} + return true } - return zimURLs + return Set(urls) } private class func getCurrentIndexFolderURLsInDocDir() -> Set { - let fileURLs = FileManager.contentsOfDirectory(NSFileManager.docDirURL) ?? [NSURL]() - var folderURLs = Set() - for url in fileURLs { - do { - var isDirectory: AnyObject? = nil - try url.getResourceValue(&isDirectory, forKey: NSURLIsDirectoryKey) - if let isDirectory = (isDirectory as? NSNumber)?.boolValue { - if isDirectory { - guard let pathExtension = url.pathExtension?.lowercaseString else {continue} - guard pathExtension == "idx" else {continue} - folderURLs.insert(url) - } - } - } catch { - continue - } + var urls = getContentsOfDocDir() + let keys = [NSURLIsDirectoryKey] + urls = urls.filter { (url) -> Bool in + guard let values = try? url.resourceValuesForKeys(keys), + let isDirectory = (values[NSURLIsDirectoryKey] as? NSNumber)?.boolValue where isDirectory == true else {return false} + guard let pathExtension = url.pathExtension?.lowercaseString where pathExtension == "idx" else {return false} + return true } - return folderURLs + return Set(urls) } } From 7e704a0ea2e2da737c07ca32b061adf6894a3f9a Mon Sep 17 00:00:00 2001 From: Chris Li Date: Fri, 5 Aug 2016 11:30:24 -0400 Subject: [PATCH 07/21] shallow dir content search --- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix/Extensions.swift | 6 ++++++ Kiwix/Operations/ScanLocalBookOperation.swift | 11 ++--------- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index f2686a65f..715d0edc6 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.716 + 1.7.719 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index ba49ce453..c6cac1e3e 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.812 + 1.7.816 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix/Extensions.swift b/Kiwix/Extensions.swift index 5cb186c38..cba5bd1d3 100644 --- a/Kiwix/Extensions.swift +++ b/Kiwix/Extensions.swift @@ -62,6 +62,12 @@ extension NSFileManager { let url = try? NSFileManager.defaultManager().URLForDirectory(.LibraryDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false) return url! } + + class func getContents(dir dir: NSURL) -> [NSURL] { + let options: NSDirectoryEnumerationOptions = [.SkipsHiddenFiles, .SkipsPackageDescendants, .SkipsSubdirectoryDescendants] + let urls = try? NSFileManager.defaultManager().contentsOfDirectoryAtURL(NSFileManager.docDirURL, includingPropertiesForKeys: nil, options: options) + return urls ?? [NSURL]() + } } diff --git a/Kiwix/Operations/ScanLocalBookOperation.swift b/Kiwix/Operations/ScanLocalBookOperation.swift index 7ddcca3f1..b986ac62d 100644 --- a/Kiwix/Operations/ScanLocalBookOperation.swift +++ b/Kiwix/Operations/ScanLocalBookOperation.swift @@ -111,15 +111,8 @@ class ScanLocalBookOperation: Operation { // MARK: - Helper - private class func getContentsOfDocDir() -> [NSURL] { - let keys = [NSURLIsDirectoryKey] - let options: NSDirectoryEnumerationOptions = [.SkipsHiddenFiles, .SkipsPackageDescendants, .SkipsHiddenFiles] - let urls = try? NSFileManager.defaultManager().contentsOfDirectoryAtURL(NSFileManager.docDirURL, includingPropertiesForKeys: keys, options: options) - return urls ?? [NSURL]() - } - private class func getCurrentZimFileURLsInDocDir() -> Set { - var urls = getContentsOfDocDir() + var urls = NSFileManager.getContents(dir: NSFileManager.docDirURL) let keys = [NSURLIsDirectoryKey] urls = urls.filter { (url) -> Bool in guard let values = try? url.resourceValuesForKeys(keys), @@ -131,7 +124,7 @@ class ScanLocalBookOperation: Operation { } private class func getCurrentIndexFolderURLsInDocDir() -> Set { - var urls = getContentsOfDocDir() + var urls = NSFileManager.getContents(dir: NSFileManager.docDirURL) let keys = [NSURLIsDirectoryKey] urls = urls.filter { (url) -> Bool in guard let values = try? url.resourceValuesForKeys(keys), From 5455018444e24c3b59311bebdccc40fc10430ee2 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Fri, 12 Aug 2016 14:53:42 -0400 Subject: [PATCH 08/21] add support for ft-index in zim --- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix.xcodeproj/project.pbxproj | 12 ------- Kiwix/libkiwix/ZimReader.mm | 23 ++++++++++--- Kiwix/libkiwix/build/build-xapian.sh | 49 ++++++++++++++++++++++----- Kiwix/libkiwix/build/build-zim.sh | 41 ++++++++++++++++++---- Podfile.lock | 4 +-- 7 files changed, 96 insertions(+), 37 deletions(-) diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 715d0edc6..5f670c882 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.719 + 1.7.728 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index c6cac1e3e..2604210f8 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.816 + 1.7.833 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index 7aa0ba8ec..d98035cdf 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -132,8 +132,6 @@ 975227A11D020C00001D1DDE /* resourceTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975227961D020C00001D1DDE /* resourceTools.cpp */; }; 975227A21D020C00001D1DDE /* stringTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975227971D020C00001D1DDE /* stringTools.cpp */; settings = {COMPILER_FLAGS = "-w"; }; }; 975227A31D020C00001D1DDE /* stringTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975227971D020C00001D1DDE /* stringTools.cpp */; settings = {COMPILER_FLAGS = "-w"; }; }; - 975227A81D020C2E001D1DDE /* htmlparse.cc in Sources */ = {isa = PBXBuildFile; fileRef = 975227A61D020C2E001D1DDE /* htmlparse.cc */; }; - 975227A91D020C2E001D1DDE /* myhtmlparse.cc in Sources */ = {isa = PBXBuildFile; fileRef = 975227A71D020C2E001D1DDE /* myhtmlparse.cc */; }; 975227AC1D020D83001D1DDE /* ZimIndexer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 975227AB1D020D83001D1DDE /* ZimIndexer.mm */; }; 975227AE1D0213D3001D1DDE /* xapianIndexer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975227AD1D0213D3001D1DDE /* xapianIndexer.cpp */; settings = {COMPILER_FLAGS = "-w"; }; }; 975227B01D021539001D1DDE /* IndexerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975227AF1D021539001D1DDE /* IndexerController.swift */; }; @@ -373,8 +371,6 @@ 973DD4271D36E3E4009D45DB /* SettingSingleSwitchTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SettingSingleSwitchTBVC.swift; path = "Kiwix-iOS/Controller/Setting/SettingSingleSwitchTBVC.swift"; sourceTree = SOURCE_ROOT; }; 97497B5A1D07487000ECD691 /* indexer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = indexer.h; path = "Kiwix/libkiwix/C&C++/indexer.h"; sourceTree = ""; }; 97497B5B1D07487000ECD691 /* resourceTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = resourceTools.h; path = "Kiwix/libkiwix/C&C++/resourceTools.h"; sourceTree = ""; }; - 97497B5C1D074FB800ECD691 /* htmlparse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = htmlparse.h; path = "Kiwix/libkiwix/C&C++/xapian/htmlparse.h"; sourceTree = ""; }; - 97497B5D1D074FB800ECD691 /* myhtmlparse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = myhtmlparse.h; path = "Kiwix/libkiwix/C&C++/xapian/myhtmlparse.h"; sourceTree = ""; }; 97497B5E1D07584100ECD691 /* xapianIndexer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = xapianIndexer.h; path = "Kiwix/libkiwix/C&C++/xapianIndexer.h"; sourceTree = ""; }; 974F42811D47E19A00F8074C /* SettingWidgetBookmarksTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SettingWidgetBookmarksTBVC.swift; path = "Kiwix-iOS/Controller/Setting/SettingWidgetBookmarksTBVC.swift"; sourceTree = SOURCE_ROOT; }; 975227811D020560001D1DDE /* Indexer.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Indexer.storyboard; path = "Kiwix-OSX/StoryBoards/Indexer.storyboard"; sourceTree = SOURCE_ROOT; }; @@ -384,8 +380,6 @@ 975227951D020C00001D1DDE /* reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = reader.cpp; path = "Kiwix/libkiwix/C&C++/reader.cpp"; sourceTree = ""; tabWidth = 2; }; 975227961D020C00001D1DDE /* resourceTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = resourceTools.cpp; path = "Kiwix/libkiwix/C&C++/resourceTools.cpp"; sourceTree = ""; }; 975227971D020C00001D1DDE /* stringTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stringTools.cpp; path = "Kiwix/libkiwix/C&C++/stringTools.cpp"; sourceTree = ""; }; - 975227A61D020C2E001D1DDE /* htmlparse.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = htmlparse.cc; path = "Kiwix/libkiwix/C&C++/xapian/htmlparse.cc"; sourceTree = ""; }; - 975227A71D020C2E001D1DDE /* myhtmlparse.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = myhtmlparse.cc; path = "Kiwix/libkiwix/C&C++/xapian/myhtmlparse.cc"; sourceTree = ""; }; 975227AA1D020D83001D1DDE /* ZimIndexer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZimIndexer.h; path = Kiwix/libkiwix/ZimIndexer.h; sourceTree = ""; }; 975227AB1D020D83001D1DDE /* ZimIndexer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ZimIndexer.mm; path = Kiwix/libkiwix/ZimIndexer.mm; sourceTree = ""; }; 975227AD1D0213D3001D1DDE /* xapianIndexer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = xapianIndexer.cpp; path = "Kiwix/libkiwix/C&C++/xapianIndexer.cpp"; sourceTree = ""; tabWidth = 2; }; @@ -824,10 +818,6 @@ 975227921D020C00001D1DDE /* indexer.cpp */, 97497B5E1D07584100ECD691 /* xapianIndexer.h */, 975227AD1D0213D3001D1DDE /* xapianIndexer.cpp */, - 97497B5C1D074FB800ECD691 /* htmlparse.h */, - 975227A61D020C2E001D1DDE /* htmlparse.cc */, - 97497B5D1D074FB800ECD691 /* myhtmlparse.h */, - 975227A71D020C2E001D1DDE /* myhtmlparse.cc */, 975227931D020C00001D1DDE /* otherTools.cpp */, ); name = indexer; @@ -1565,7 +1555,6 @@ 975B912F1CEB9B0F00D13906 /* Preference.swift in Sources */, 971187941CEB541A00B9909D /* Article.swift in Sources */, 9752279D1D020C00001D1DDE /* pathTools.cpp in Sources */, - 975227A91D020C2E001D1DDE /* myhtmlparse.cc in Sources */, 975227B01D021539001D1DDE /* IndexerController.swift in Sources */, 975334D01CEB6AE3007ED50B /* PreferenceGeneralController.swift in Sources */, 979CB6C81D05CF37005E1BA1 /* SearchResultController.swift in Sources */, @@ -1579,7 +1568,6 @@ 975334D21CEB6B01007ED50B /* LibraryController.swift in Sources */, 975227AC1D020D83001D1DDE /* ZimIndexer.mm in Sources */, 975227A11D020C00001D1DDE /* resourceTools.cpp in Sources */, - 975227A81D020C2E001D1DDE /* htmlparse.cc in Sources */, 971187971CEB542500B9909D /* Article+CoreDataProperties.swift in Sources */, 975227A31D020C00001D1DDE /* stringTools.cpp in Sources */, 979C518D1CECAE4C001707F2 /* PreferenceWindowController.swift in Sources */, diff --git a/Kiwix/libkiwix/ZimReader.mm b/Kiwix/libkiwix/ZimReader.mm index 8ffdcdd6b..8ac820ecf 100755 --- a/Kiwix/libkiwix/ZimReader.mm +++ b/Kiwix/libkiwix/ZimReader.mm @@ -32,11 +32,24 @@ - (instancetype)initWithZIMFileURL:(NSURL *)url { } try { - NSString *zimPath = [url absoluteString]; - zimPath = [zimPath stringByReplacingOccurrencesOfString:@".zimaa" withString:@".zim"]; - NSURL *xapianURl = [[NSURL fileURLWithPath:zimPath] URLByAppendingPathExtension:@"idx"]; - _db = new Xapian::Database([xapianURl fileSystemRepresentation]); - } catch (const Xapian::DatabaseOpeningError &e) {} + zim::File zimFileHandle = *_reader->getZimFileHandler(); + zim::Article xapianArticle = zimFileHandle.getArticle('Z', "/Z/fulltextIndex/xapian"); + if (xapianArticle.good()) { + zim::offset_type dbOffset = xapianArticle.getOffset(); + int databasefd = open([url fileSystemRepresentation], O_RDONLY); + lseek(databasefd, dbOffset, SEEK_SET); + _db = new Xapian::Database(databasefd); + } else { + throw "xapian db not in zim"; + } + } catch (...) { + try { + NSString *zimPath = [url absoluteString]; + zimPath = [zimPath stringByReplacingOccurrencesOfString:@".zimaa" withString:@".zim"]; + NSURL *xapianURl = [[NSURL fileURLWithPath:zimPath] URLByAppendingPathExtension:@"idx"]; + _db = new Xapian::Database([xapianURl fileSystemRepresentation]); + } catch (const Xapian::DatabaseOpeningError &e) {} + } self.fileURL = url; } diff --git a/Kiwix/libkiwix/build/build-xapian.sh b/Kiwix/libkiwix/build/build-xapian.sh index 1764fb6db..0cd6b58af 100755 --- a/Kiwix/libkiwix/build/build-xapian.sh +++ b/Kiwix/libkiwix/build/build-xapian.sh @@ -1,12 +1,12 @@ #!/bin/bash +# regarding export MACOSX_DEPLOYMENT_TARGET="10.4" in build_iOS, see reason why do it like this +# http://stackoverflow.com/questions/32622284/building-c-static-libraries-using-configure-make-with-fembed-bitcode-fails + ROOT=$(pwd) ######################## XAPIAN ######################## -XAPIANPATH=$ROOT/xapian-core-1.4.0 -cd $XAPIANPATH - build_iOS() { ARCH=$1 @@ -18,19 +18,24 @@ build_iOS() SDKROOT="$(xcodebuild -version -sdk iphoneos | grep -E '^Path' | sed 's/Path: //')" fi - export CC="$(xcrun -sdk iphoneos -find clang)" + export MACOSX_DEPLOYMENT_TARGET="10.4" + + export CC="$(xcrun -find clang)" export CFLAGS="-fembed-bitcode -isysroot $SDKROOT -arch ${ARCH} -miphoneos-version-min=9.0" export CPP="$CC -E" export CPPFLAGS="$CFLAGS" + export CXX="$(xcrun -find clang++)" + export CXXFLAGS="$CFLAGS -stdlib=libc++ -std=c++11" + export LDFLAGS="-arch ${ARCH} -isysroot $SDKROOT" if [ $ARCH == "i386" ] || [ $ARCH == "x86_64" ]; then - ./configure --prefix=$(pwd)/build/iOS/$ARCH --host=i686-apple-darwin11 --enable-static --disable-shared + ./configure --prefix=$(pwd)/build/iOS/$ARCH --host=i686-apple-darwin11 --enable-static --enable-shared else - ./configure --prefix=$(pwd)/build/iOS/$ARCH --host=arm-apple-darwin --enable-static --disable-shared + ./configure --prefix=$(pwd)/build/iOS/$ARCH --host=arm-apple-darwin --enable-static --enable-shared fi make && make install && make clean @@ -44,10 +49,13 @@ build_OSX() export MACOSX_DEPLOYMENT_TARGET="10.10" - export CC="$(xcrun -sdk macosx10.11 -find clang)" + export CC="$(xcrun -find clang)" export CFLAGS="-fembed-bitcode -isysroot $SDKROOT -arch ${ARCH} -mmacosx-version-min=10.10" - export CXX="$(xcrun -sdk macosx10.11 -find clang++)" + export CPP="$CC -E" + export CPPFLAGS="$CFLAGS" + + export CXX="$(xcrun -find clang++)" export CXXFLAGS="$CFLAGS -stdlib=libc++ -std=c++11" export LDFLAGS="-arch ${ARCH} -isysroot $SDKROOT" @@ -57,6 +65,28 @@ build_OSX() make && make install && make clean } +distribute_iOS() { + iOSBUILDDir=$(pwd)/build/iOS + cd $iOSBUILDDir + mkdir -p universal/lib + + cd armv7/lib + for file in *.a + do + cd $iOSBUILDDir + lipo -create armv7/lib/$file armv7s/lib/$file arm64/lib/$file x86_64/lib/$file i386/lib/$file -output universal/lib/$file + done + + cd armv7/lib + for file in *.dylib + do + cd $iOSBUILDDir + lipo -create armv7/lib/$file armv7s/lib/$file arm64/lib/$file x86_64/lib/$file i386/lib/$file -output universal/lib/$file + done + + cp -r armv7/include universal +} + distribute() { cd $XAPIANPATH/build mkdir -p Universal/iOS/lib @@ -86,9 +116,10 @@ distribute() { # build_iOS armv7 # build_iOS armv7s # build_iOS arm64 +distribute_iOS # build_OSX i386 # build_OSX x86_64 -distribute +# distribute diff --git a/Kiwix/libkiwix/build/build-zim.sh b/Kiwix/libkiwix/build/build-zim.sh index e61f6aa07..84118155e 100755 --- a/Kiwix/libkiwix/build/build-zim.sh +++ b/Kiwix/libkiwix/build/build-zim.sh @@ -1,5 +1,8 @@ #!/bin/bash +# regarding export MACOSX_DEPLOYMENT_TARGET="10.4" in build_iOS, see reason why do it like this +# http://stackoverflow.com/questions/32622284/building-c-static-libraries-using-configure-make-with-fembed-bitcode-fails + ROOT=$(pwd) ########################## ZIM ########################## @@ -7,11 +10,7 @@ ROOT=$(pwd) # git clone https://gerrit.wikimedia.org/r/p/openzim.git # modify ffstream.cpp, replace stat64 with stat -LZMAHEADERPATH="/Volumes/Data/Developer/build/xz-5.2.2/build/Universal/include" -ZIMREADERPATH=$ROOT/openzim/zimlib -cd $ZIMREADERPATH - -# ./autogen.sh +LZMAHEADERPATH="/Volumes/Data/Developer/Kiwix/Kiwix/libkiwix/include" build_iOS() { @@ -24,12 +23,17 @@ build_iOS() SDKROOT="$(xcodebuild -version -sdk iphoneos | grep -E '^Path' | sed 's/Path: //')" fi - export CC="$(xcrun -sdk iphoneos -find clang)" + export MACOSX_DEPLOYMENT_TARGET="10.4" + + export CC="$(xcrun -find clang)" export CFLAGS="-fembed-bitcode -isysroot $SDKROOT -arch ${ARCH} -miphoneos-version-min=9.0 -I$LZMAHEADERPATH" export CPP="$CC -E" export CPPFLAGS="$CFLAGS" + export CXX="$(xcrun -find clang++)" + export CXXFLAGS="$CFLAGS -stdlib=libc++ -std=c++11" + export LDFLAGS="-arch ${ARCH} -isysroot $SDKROOT" if [ $ARCH == "i386" ] || [ $ARCH == "x86_64" ]; @@ -63,6 +67,28 @@ build_OSX() make && make install && make clean } +distribute_iOS() { + iOSBUILDDir=$(pwd)/build/iOS + cd $iOSBUILDDir + mkdir -p universal/lib + + cd armv7/lib + for file in *.a + do + cd $iOSBUILDDir + lipo -create armv7/lib/$file armv7s/lib/$file arm64/lib/$file x86_64/lib/$file i386/lib/$file -output universal/lib/$file + done + + # cd armv7/lib + # for file in *.dylib + # do + # cd $iOSBUILDDir + # lipo -create armv7/lib/$file armv7s/lib/$file arm64/lib/$file x86_64/lib/$file i386/lib/$file -output universal/lib/$file + # done + + cp -r armv7/include universal +} + distribute() { cd $ZIMREADERPATH/build mkdir -p Universal/iOS/lib @@ -92,9 +118,10 @@ distribute() { # build_iOS armv7 # build_iOS armv7s # build_iOS arm64 +distribute_iOS # build_OSX i386 # build_OSX x86_64 -distribute +# distribute diff --git a/Podfile.lock b/Podfile.lock index 9e18de31a..91b6ca7c5 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,6 +1,6 @@ PODS: - DateTools (1.7.0) - - DZNEmptyDataSet (1.8) + - DZNEmptyDataSet (1.8.1) - Operations (3.0.0): - Operations/Standard (= 3.0.0) - Operations/Standard (3.0.0) @@ -14,7 +14,7 @@ DEPENDENCIES: SPEC CHECKSUMS: DateTools: 53288ee8b905fdc75897a1e6b5cc0144b14cba60 - DZNEmptyDataSet: d2351b2e8daefa40433ef292e246e21f6be31a7b + DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 Operations: c05cc4b2ad060201ab98cbacd5217876658b5f2c SwiftyUserDefaults: e7c8197a9d4068702e7f2406a968cae413b8de27 From 45b5b937cd2e130325bd28039c1e6c5bd827f581 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Wed, 17 Aug 2016 10:39:45 -0400 Subject: [PATCH 09/21] Fix for cocoa pods warnings --- Kiwix-iOS/Info.plist | 4 ++-- Kiwix-iOS/iOSExtensions.swift | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 4 ++-- Kiwix.xcodeproj/project.pbxproj | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 5f670c882..2a886d8c5 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -32,7 +32,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.7 + 1.7.1 CFBundleSignature ???? CFBundleURLTypes @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.728 + 1.7.739 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/iOSExtensions.swift b/Kiwix-iOS/iOSExtensions.swift index ad200e576..58b46d7c6 100644 --- a/Kiwix-iOS/iOSExtensions.swift +++ b/Kiwix-iOS/iOSExtensions.swift @@ -42,7 +42,7 @@ enum BuildStatus { extension UIApplication { class var buildStatus: BuildStatus { get { - return .Release + return .Beta } } } diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 2604210f8..c5b5519ff 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 1.7 + 1.7.1 CFBundleSignature ???? CFBundleVersion - 1.7.833 + 1.7.739 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index d98035cdf..8d24bce68 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -2021,7 +2021,7 @@ CODE_SIGN_ENTITLEMENTS = "Kiwix-iOS/Kiwix.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; + EMBEDDED_CONTENT_CONTAINS_SWIFT = "$(inherited)"; ENABLE_BITCODE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", @@ -2056,7 +2056,7 @@ CODE_SIGN_ENTITLEMENTS = "Kiwix-iOS/Kiwix.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; + EMBEDDED_CONTENT_CONTAINS_SWIFT = "$(inherited)"; ENABLE_BITCODE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", From 8e5e969768930f411d33a4e5028cc860879b81df Mon Sep 17 00:00:00 2001 From: Chris Li Date: Thu, 18 Aug 2016 15:03:49 -0400 Subject: [PATCH 10/21] base for new library --- .../Library/BookDetailController.swift | 71 +++ .../Library/CloudBooksController.swift | 198 ++++++++ .../Library/LibrarySplitViewController.swift | 22 + .../Controller/LibraryDownloadTBVC.swift | 2 +- Kiwix-iOS/Controller/LibraryOnlineTBVC.swift | 2 +- .../Controller/Main/MainController.swift | 7 +- Kiwix-iOS/Controller/SearchResultTBVC.swift | 2 +- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Storyboard/Library.storyboard | 2 +- Kiwix-iOS/Storyboard/LibraryNew.storyboard | 459 ++++++++++++++++++ Kiwix-iOS/Storyboard/Main.storyboard | 2 +- Kiwix-iOS/View/TableViewCells.swift | 30 +- Kiwix-iOS/iOSExtensions.swift | 61 +-- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix.xcodeproj/project.pbxproj | 28 +- 15 files changed, 814 insertions(+), 76 deletions(-) create mode 100644 Kiwix-iOS/Controller/Library/BookDetailController.swift create mode 100644 Kiwix-iOS/Controller/Library/CloudBooksController.swift create mode 100644 Kiwix-iOS/Controller/Library/LibrarySplitViewController.swift create mode 100644 Kiwix-iOS/Storyboard/LibraryNew.storyboard diff --git a/Kiwix-iOS/Controller/Library/BookDetailController.swift b/Kiwix-iOS/Controller/Library/BookDetailController.swift new file mode 100644 index 000000000..a9960e21b --- /dev/null +++ b/Kiwix-iOS/Controller/Library/BookDetailController.swift @@ -0,0 +1,71 @@ +// +// BookDetailController.swift +// Kiwix +// +// Created by Chris Li on 8/17/16. +// Copyright © 2016 Chris. All rights reserved. +// + +import UIKit + +class BookDetailController: UITableViewController { + + @IBOutlet weak var favIconImageView: UIImageView! + @IBOutlet weak var titleLabel: UILabel! + + @IBOutlet weak var hasPicIndicator: UILabel! + @IBOutlet weak var hasPicLabel: UILabel! + @IBOutlet weak var hasIndexIndicator: UILabel! + @IBOutlet weak var hasIndexLabel: UILabel! + + var book: Book? + + override func viewDidLoad() { + super.viewDidLoad() + + hasPicIndicator.layer.cornerRadius = 2.0 + hasIndexIndicator.layer.cornerRadius = 2.0 + hasPicIndicator.layer.masksToBounds = true + hasIndexIndicator.layer.masksToBounds = true + } + + override func viewWillAppear(animated: Bool) { + super.viewWillAppear(animated) + configureViews() + } + + func configureViews() { + guard let book = book else {return} + + favIconImageView.image = UIImage(data: book.favIcon ?? NSData()) + titleLabel.text = book.title + + hasPicIndicator.backgroundColor = book.hasPic ? AppColors.hasPicTintColor : UIColor.lightGrayColor() + hasPicLabel.text = book.hasPic ? LocalizedStrings.BookDetail.hasPic : LocalizedStrings.BookDetail.noPic + hasIndexIndicator.backgroundColor = book.hasIndex ? AppColors.hasIndexTintColor : UIColor.lightGrayColor() + hasIndexLabel.text = book.hasPic ? LocalizedStrings.BookDetail.hasIndex : LocalizedStrings.BookDetail.noIndex + } + + // MARK: - Table view data source + + override func numberOfSectionsInTableView(tableView: UITableView) -> Int { + // #warning Incomplete implementation, return the number of sections + return 0 + } + + override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete implementation, return the number of rows + return 0 + } + +} + +extension LocalizedStrings { + class BookDetail { + private static let comment = "Library, Book Detail" + static let hasIndex = NSLocalizedString("Index", comment: comment) + static let hasPic = NSLocalizedString("Pictures", comment: comment) + static let noIndex = NSLocalizedString("No Index", comment: comment) + static let noPic = NSLocalizedString("No Picture", comment: comment) + } +} diff --git a/Kiwix-iOS/Controller/Library/CloudBooksController.swift b/Kiwix-iOS/Controller/Library/CloudBooksController.swift new file mode 100644 index 000000000..659273097 --- /dev/null +++ b/Kiwix-iOS/Controller/Library/CloudBooksController.swift @@ -0,0 +1,198 @@ +// +// CloudBooksController.swift +// Kiwix +// +// Created by Chris Li on 8/17/16. +// Copyright © 2016 Chris. All rights reserved. +// + +import UIKit +import CoreData + +class CloudBooksController: UITableViewController, NSFetchedResultsControllerDelegate, TableCellDelegate{ + + var bookDetailController = UIStoryboard.libraryNew.initViewController(BookDetailController.self)! + + override func viewDidLoad() { + super.viewDidLoad() + title = "" + navigationController?.view.backgroundColor = UIColor.whiteColor() + splitViewController?.tabBarItem.title = "Cloud" + } + + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + guard let identifier = segue.identifier else {return} + switch identifier { + case "ShowBookDetail": + guard let navController = segue.destinationViewController as? UINavigationController, + let cell = sender as? UITableViewCell, + let indexPath = tableView.indexPathForCell(cell), + let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} + navController.setViewControllers([bookDetailController], animated: false) + bookDetailController.book = book + default: + break + } + + } + + // MARK: - TableCellDelegate + + func didTapOnAccessoryViewForCell(cell: UITableViewCell) { + guard let indexPath = tableView.indexPathForCell(cell), + let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} + switch book.spaceState { + case .Enough: + Network.sharedInstance.download(book) + //case .Caution: + // TODO: - Switch to a global op queue + //Network.sharedInstance.operationQueue.addOperation(SpaceCautionAlert(book: book, presentationContext: self)) + //case .NotEnough: + // TODO: - Switch to a global op queue + //Network.sharedInstance.operationQueue.addOperation(SpaceNotEnoughAlert(book: book, presentationContext: self)) + default: + break + } + } + + // MARK: - TableView Data Source + + override func numberOfSectionsInTableView(tableView: UITableView) -> Int { + return fetchedResultController.sections?.count ?? 0 + } + + override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return fetchedResultController.sections?[section].numberOfObjects ?? 0 + } + + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) + self.configureCell(cell, atIndexPath: indexPath) + return cell + } + + 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} + + cell.titleLabel.text = book.title + cell.hasPic = book.hasPic + cell.hasIndex = false + cell.favIcon.image = UIImage(data: book.favIcon ?? NSData()) + cell.subtitleLabel.text = book.detailedDescription + } + + // MARK: Other Data Source + + override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + guard tableView.numberOfSections > 1 else {return nil} + guard let languageName = fetchedResultController.sections?[section].name else {return nil} + return languageName + } + + override func sectionIndexTitlesForTableView(tableView: UITableView) -> [String]? { + let sectionIndexTitles = fetchedResultController.sectionIndexTitles + guard sectionIndexTitles.count > 2 else {return nil} + return sectionIndexTitles + } + + override func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int { + return fetchedResultController.sectionForSectionIndexTitle(title, atIndex: index) + } + + // MARK: - Table View Delegate + + override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { + guard let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} + } + + override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + guard tableView.numberOfSections > 1 else {return 0.0} + guard let headerText = self.tableView(tableView, titleForHeaderInSection: section) else {return 0.0} + guard headerText != "" else {return 0.0} + return 20.0 + } + + override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) { + guard let header = view as? UITableViewHeaderFooterView else {return} + header.textLabel?.font = UIFont.boldSystemFontOfSize(14) + } + + // MARK: - Fetched Results Controller + + let managedObjectContext = UIApplication.appDelegate.managedObjectContext + lazy var fetchedResultController: NSFetchedResultsController = { + let fetchRequest = NSFetchRequest(entityName: "Book") + let langDescriptor = NSSortDescriptor(key: "language.name", ascending: true) + let titleDescriptor = NSSortDescriptor(key: "title", ascending: true) + fetchRequest.sortDescriptors = [langDescriptor, titleDescriptor] + fetchRequest.predicate = self.onlineCompoundPredicate + + let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: "language.name", cacheName: "OnlineFRC") + fetchedResultsController.delegate = self + fetchedResultsController.performFetch(deleteCache: false) + return fetchedResultsController + }() + + func refreshFetchedResultController() { + fetchedResultController.fetchRequest.predicate = onlineCompoundPredicate + fetchedResultController.performFetch(deleteCache: true) + tableView.reloadData() +// configureMessage() + } + + private var langPredicate: NSPredicate { + let displayedLanguages = Language.fetch(displayed: true, context: managedObjectContext) + if displayedLanguages.count > 0 { + return NSPredicate(format: "language IN %@", displayedLanguages) + } else { + return NSPredicate(format: "language.name != nil") + } + } + + private var onlineCompoundPredicate: NSCompoundPredicate { + let isCloudPredicate = NSPredicate(format: "isLocal == false") + return NSCompoundPredicate(andPredicateWithSubpredicates: [langPredicate, isCloudPredicate]) + } + + // MARK: - Fetched Result Controller Delegate + + func controllerWillChangeContent(controller: NSFetchedResultsController) { + tableView.beginUpdates() + } + + func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) { + switch type { + case .Insert: + tableView.insertSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade) + case .Delete: + tableView.deleteSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade) + default: + return + } + } + + func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) { + switch type { + case .Insert: + guard let newIndexPath = newIndexPath else {return} + tableView.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Fade) + case .Delete: + guard let indexPath = indexPath else {return} + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + case .Update: + guard let indexPath = indexPath, let cell = tableView.cellForRowAtIndexPath(indexPath) else {return} + configureCell(cell, atIndexPath: indexPath) + case .Move: + guard let indexPath = indexPath, let newIndexPath = newIndexPath else {return} + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + tableView.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Fade) + } + } + + func controllerDidChangeContent(controller: NSFetchedResultsController) { + tableView.endUpdates() +// configureMessage() + } +} + diff --git a/Kiwix-iOS/Controller/Library/LibrarySplitViewController.swift b/Kiwix-iOS/Controller/Library/LibrarySplitViewController.swift new file mode 100644 index 000000000..83a3207f4 --- /dev/null +++ b/Kiwix-iOS/Controller/Library/LibrarySplitViewController.swift @@ -0,0 +1,22 @@ +// +// LibrarySplitViewController.swift +// Kiwix +// +// Created by Chris Li on 8/17/16. +// Copyright © 2016 Chris. All rights reserved. +// + +import UIKit + +class LibrarySplitViewController: UISplitViewController, UISplitViewControllerDelegate { + override func viewDidLoad() { + super.viewDidLoad() + preferredDisplayMode = .AllVisible + minimumPrimaryColumnWidth = 320.0 + delegate = self + } + + func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool { + return true + } +} diff --git a/Kiwix-iOS/Controller/LibraryDownloadTBVC.swift b/Kiwix-iOS/Controller/LibraryDownloadTBVC.swift index fa3d20dcb..a12ede2f7 100644 --- a/Kiwix-iOS/Controller/LibraryDownloadTBVC.swift +++ b/Kiwix-iOS/Controller/LibraryDownloadTBVC.swift @@ -169,7 +169,7 @@ class LibraryDownloadTBVC: UITableViewController, NSFetchedResultsControllerDele let cell = cell as? DownloadBookCell else {return} cell.titleLabel.text = book.title - cell.hasPicIndicator.backgroundColor = book.hasPic ? UIColor.havePicTintColor : UIColor.lightGrayColor() + cell.hasPicIndicator.backgroundColor = book.hasPic ? AppColors.hasPicTintColor : UIColor.lightGrayColor() cell.favIcon.image = UIImage(data: book.favIcon ?? NSData()) cell.dateLabel.text = book.dateFormatted cell.articleCountLabel.text = book.articleCountFormatted diff --git a/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift b/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift index 790d39fef..c582f891e 100644 --- a/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift +++ b/Kiwix-iOS/Controller/LibraryOnlineTBVC.swift @@ -245,7 +245,7 @@ class LibraryOnlineTBVC: UITableViewController, NSFetchedResultsControllerDelega guard let cell = cell as? CloudBookCell else {return} cell.titleLabel.text = book.title - cell.hasPicIndicator.backgroundColor = book.hasPic ? UIColor.havePicTintColor : UIColor.lightGrayColor() + cell.hasPicIndicator.backgroundColor = book.hasPic ? AppColors.hasPicTintColor : UIColor.lightGrayColor() cell.favIcon.image = UIImage(data: book.favIcon ?? NSData()) cell.delegate = self cell.subtitleLabel.text = booksShowingDetail.contains(book) ? book.detailedDescription2 : book.detailedDescription diff --git a/Kiwix-iOS/Controller/Main/MainController.swift b/Kiwix-iOS/Controller/Main/MainController.swift index 8c670b9ea..caa0f0670 100644 --- a/Kiwix-iOS/Controller/Main/MainController.swift +++ b/Kiwix-iOS/Controller/Main/MainController.swift @@ -23,6 +23,7 @@ class MainController: UIViewController { var bookmarkController: BookmarkController? var bookmarkNav: UIViewController? var libraryController: UIViewController? + var libraryNewController: UIViewController? var settingController: UIViewController? var searchController: SearchController? var welcomeController: UIViewController? @@ -223,9 +224,9 @@ class MainController: UIViewController { } func showLibraryButtonTapped() { - guard let viewController = libraryController ?? UIStoryboard.library.instantiateInitialViewController() else {return} - viewController.modalPresentationStyle = .FormSheet - libraryController = viewController + guard let viewController = libraryNewController ?? UIStoryboard.libraryNew.instantiateInitialViewController() else {return} + viewController.modalPresentationStyle = .OverFullScreen + libraryNewController = viewController presentViewController(viewController, animated: true, completion: nil) } diff --git a/Kiwix-iOS/Controller/SearchResultTBVC.swift b/Kiwix-iOS/Controller/SearchResultTBVC.swift index dbf0b58a2..0da2ea668 100644 --- a/Kiwix-iOS/Controller/SearchResultTBVC.swift +++ b/Kiwix-iOS/Controller/SearchResultTBVC.swift @@ -97,7 +97,7 @@ class SearchResultTBVC: UIViewController, UITableViewDataSource, UITableViewDele } else { cell.titleLabel.text = result.title } - cell.hasPicIndicator.backgroundColor = book.hasPic ? UIColor.havePicTintColor : UIColor.lightGrayColor() + cell.hasPicIndicator.backgroundColor = book.hasPic ? AppColors.hasPicTintColor : UIColor.lightGrayColor() cell.favIcon.image = book.favIcon != nil ? UIImage(data: book.favIcon!) : nil } diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 2a886d8c5..4a914fcff 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.739 + 1.7.873 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Storyboard/Library.storyboard b/Kiwix-iOS/Storyboard/Library.storyboard index 6f749e337..0a6affd37 100644 --- a/Kiwix-iOS/Storyboard/Library.storyboard +++ b/Kiwix-iOS/Storyboard/Library.storyboard @@ -1,5 +1,5 @@ - + diff --git a/Kiwix-iOS/Storyboard/LibraryNew.storyboard b/Kiwix-iOS/Storyboard/LibraryNew.storyboard new file mode 100644 index 000000000..d5c4e9432 --- /dev/null +++ b/Kiwix-iOS/Storyboard/LibraryNew.storyboard @@ -0,0 +1,459 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Kiwix-iOS/Storyboard/Main.storyboard b/Kiwix-iOS/Storyboard/Main.storyboard index 38b265826..b65141e9b 100644 --- a/Kiwix-iOS/Storyboard/Main.storyboard +++ b/Kiwix-iOS/Storyboard/Main.storyboard @@ -1,5 +1,5 @@ - + diff --git a/Kiwix-iOS/View/TableViewCells.swift b/Kiwix-iOS/View/TableViewCells.swift index d4b468fd9..8ff2827e6 100644 --- a/Kiwix-iOS/View/TableViewCells.swift +++ b/Kiwix-iOS/View/TableViewCells.swift @@ -8,35 +8,45 @@ import UIKit -// MARK: - Book Cells +// MARK: - Book Cells (new) /* 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) + + @IBOutlet weak var favIcon: UIImageView! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var subtitleLabel: UILabel! + @IBOutlet weak private var hasPicIndicator: UILabel! + @IBOutlet weak private var hasIndexIndicator: UILabel! + + // MARK: - Override override func awakeFromNib() { hasPicIndicator.layer.cornerRadius = 2.0 hasIndexIndicator.layer.cornerRadius = 2.0 hasPicIndicator.layer.masksToBounds = true hasIndexIndicator.layer.masksToBounds = true + hasPicIndicator.backgroundColor = UIColor.clearColor() + hasIndexIndicator.backgroundColor = UIColor.clearColor() } - @IBOutlet weak var favIcon: UIImageView! - @IBOutlet weak var titleLabel: UILabel! - @IBOutlet weak var subtitleLabel: UILabel! - @IBOutlet weak var hasPicIndicator: UILabel! - @IBOutlet weak var hasIndexIndicator: UILabel! + override func prepareForReuse() { + super.prepareForReuse() + selected = false + highlighted = false + } + + // MARK: - Shorthand properties var hasPic: Bool = false { didSet { - hasPicIndicator.backgroundColor = hasPic ? hasPicIndicatorOrange : UIColor.lightGrayColor() + hasPicIndicator.layer.backgroundColor = hasPic ? AppColors.hasPicTintColor.CGColor : UIColor.lightGrayColor().CGColor } } var hasIndex: Bool = false { didSet { - hasIndexIndicator.backgroundColor = hasIndex ? hasIndexIndicatorBlue : UIColor.lightGrayColor() + hasIndexIndicator.layer.backgroundColor = hasIndex ? AppColors.hasIndexTintColor.CGColor : UIColor.lightGrayColor().CGColor } } } diff --git a/Kiwix-iOS/iOSExtensions.swift b/Kiwix-iOS/iOSExtensions.swift index 58b46d7c6..bbc77096e 100644 --- a/Kiwix-iOS/iOSExtensions.swift +++ b/Kiwix-iOS/iOSExtensions.swift @@ -49,6 +49,7 @@ extension UIApplication { extension UIStoryboard { class var library: UIStoryboard {get {return UIStoryboard(name: "Library", bundle: nil)}} + class var libraryNew: UIStoryboard {get {return UIStoryboard(name: "LibraryNew", bundle: nil)}} class var main: UIStoryboard {get {return UIStoryboard(name: "Main", bundle: nil)}} class var search: UIStoryboard {get {return UIStoryboard(name: "Search", bundle: nil)}} class var setting: UIStoryboard {get {return UIStoryboard(name: "Setting", bundle: nil)}} @@ -72,15 +73,17 @@ extension UIStoryboard { } extension UIColor { - class var havePicTintColor: UIColor { - return UIColor(red: 255.0/255.0, green: 153.0/255.0, blue: 51.0/255.0, alpha: 1.0) - } class var themeColor: UIColor { return UIColor(red: 71.0 / 255.0, green: 128.0 / 255.0, blue: 182.0 / 255.0, alpha: 1.0) } } +class AppColors { + static let hasPicTintColor = UIColor(red: 1, green: 0.5, blue: 0, alpha: 1) + static let hasIndexTintColor = UIColor(red: 0.304706, green: 0.47158, blue: 1, alpha: 1) +} + extension UITableView { func setBackgroundText(text: String?) { @@ -94,58 +97,6 @@ extension UITableView { } } -extension UINavigationBar { - func hideBottomHairline() { - let navigationBarImageView = hairlineImageViewInNavigationBar(self) - navigationBarImageView!.hidden = true - } - - func showBottomHairline() { - let navigationBarImageView = hairlineImageViewInNavigationBar(self) - navigationBarImageView!.hidden = false - } - - private func hairlineImageViewInNavigationBar(view: UIView) -> UIImageView? { - if view.isKindOfClass(UIImageView) && view.bounds.height <= 1.0 { - return (view as! UIImageView) - } - - let subviews = (view.subviews as [UIView]) - for subview: UIView in subviews { - if let imageView: UIImageView = hairlineImageViewInNavigationBar(subview) { - return imageView - } - } - return nil - } -} - -extension UIToolbar { - func hideHairline() { - let navigationBarImageView = hairlineImageViewInToolbar(self) - navigationBarImageView!.hidden = true - } - - func showHairline() { - let navigationBarImageView = hairlineImageViewInToolbar(self) - navigationBarImageView!.hidden = false - } - - private func hairlineImageViewInToolbar(view: UIView) -> UIImageView? { - if view.isKindOfClass(UIImageView) && view.bounds.height <= 1.0 { - return (view as! UIImageView) - } - - let subviews = (view.subviews as [UIView]) - for subview: UIView in subviews { - if let imageView: UIImageView = hairlineImageViewInToolbar(subview) { - return imageView - } - } - return nil - } -} - // MARK: - View Controller extension UIAlertController { diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index c5b5519ff..e321e55e5 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.739 + 1.7.928 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index 8d24bce68..c5f959266 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -148,6 +148,7 @@ 975B90FE1CEB909100D13906 /* iOSExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975B90FD1CEB909100D13906 /* iOSExtensions.swift */; }; 975B90FF1CEB909900D13906 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779987A1C1E1C9600B1DD5E /* Extensions.swift */; }; 975B912F1CEB9B0F00D13906 /* Preference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973C8D5B1C25F945007272F9 /* Preference.swift */; }; + 9763275E1D64FE0F0034F120 /* BookDetailController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9763275D1D64FE0F0034F120 /* BookDetailController.swift */; }; 9763A6291CEB9E55008A2718 /* OSXExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9763A6281CEB9E55008A2718 /* OSXExtensions.swift */; }; 9763A62D1CEBA524008A2718 /* FileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E891681CA976E90001CA32 /* FileManager.swift */; }; 976AB2671CBD8B3D00B06EB0 /* 1.5.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 976AB2661CBD8B3D00B06EB0 /* 1.5.xcmappingmodel */; }; @@ -178,6 +179,9 @@ 97BA32A51CEBC36300339A47 /* RootWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BA32A31CEBC29500339A47 /* RootWindowController.swift */; }; 97BAA8EC1D3D2D7B0038F57F /* PacketAnalyzer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BAA8EB1D3D2D7B0038F57F /* PacketAnalyzer.swift */; }; 97BAA8EE1D3D2D9B0038F57F /* KiwixURLProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BAA8ED1D3D2D9B0038F57F /* KiwixURLProtocol.swift */; }; + 97C005D61D64B3B0004352E8 /* LibraryNew.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C005D51D64B3B0004352E8 /* LibraryNew.storyboard */; }; + 97C005D81D64B99E004352E8 /* LibrarySplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C005D71D64B99E004352E8 /* LibrarySplitViewController.swift */; }; + 97C005DC1D64BEFE004352E8 /* CloudBooksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C005DB1D64BEFE004352E8 /* CloudBooksController.swift */; }; 97D452BC1D16FF010033666F /* RecentSearchCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D452BB1D16FF010033666F /* RecentSearchCVC.swift */; }; 97D452BE1D1723FF0033666F /* CollectionViewCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D452BD1D1723FF0033666F /* CollectionViewCells.swift */; }; 97D55EF61D2075180081B523 /* TableOfContentsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D55EF51D2075180081B523 /* TableOfContentsController.swift */; }; @@ -395,6 +399,7 @@ 97587A951D1061C0006EE1AA /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SnapshotHelper.swift; path = "Kiwix-iOSUITests/SnapshotHelper.swift"; sourceTree = SOURCE_ROOT; }; 975B90F81CEB75CB00D13906 /* ZimFilesController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ZimFilesController.swift; path = "Kiwix-OSX/Controllers/ZimFilesController.swift"; sourceTree = SOURCE_ROOT; }; 975B90FD1CEB909100D13906 /* iOSExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = iOSExtensions.swift; path = "Kiwix-iOS/iOSExtensions.swift"; sourceTree = SOURCE_ROOT; }; + 9763275D1D64FE0F0034F120 /* BookDetailController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookDetailController.swift; sourceTree = ""; }; 9763A6281CEB9E55008A2718 /* OSXExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OSXExtensions.swift; path = "Kiwix-OSX/OSXExtensions.swift"; sourceTree = SOURCE_ROOT; }; 976A0C801D41619C0006A742 /* DZNEmptyDataSet.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DZNEmptyDataSet.framework; path = "../../../../Users/chrisli/Library/Developer/Xcode/DerivedData/Kiwix-ayxrfhaqnfxzendihdolvkklkmhk/Build/Products/Debug-iphoneos/DZNEmptyDataSet/DZNEmptyDataSet.framework"; sourceTree = ""; }; 976AB2661CBD8B3D00B06EB0 /* 1.5.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; name = 1.5.xcmappingmodel; path = CoreData/Migration/1.5.xcmappingmodel; sourceTree = ""; }; @@ -428,6 +433,9 @@ 97BAA8EB1D3D2D7B0038F57F /* PacketAnalyzer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PacketAnalyzer.swift; path = Kiwix/URLProtocol/PacketAnalyzer.swift; sourceTree = ""; }; 97BAA8ED1D3D2D9B0038F57F /* KiwixURLProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = KiwixURLProtocol.swift; path = Kiwix/URLProtocol/KiwixURLProtocol.swift; sourceTree = ""; }; 97BAA8EF1D3D32770038F57F /* 1.7.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = 1.7.xcdatamodel; sourceTree = ""; }; + 97C005D51D64B3B0004352E8 /* LibraryNew.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LibraryNew.storyboard; path = "Kiwix-iOS/Storyboard/LibraryNew.storyboard"; sourceTree = SOURCE_ROOT; }; + 97C005D71D64B99E004352E8 /* LibrarySplitViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LibrarySplitViewController.swift; path = "Kiwix-iOS/Controller/Library/LibrarySplitViewController.swift"; sourceTree = SOURCE_ROOT; }; + 97C005DB1D64BEFE004352E8 /* CloudBooksController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CloudBooksController.swift; sourceTree = ""; }; 97D452BB1D16FF010033666F /* RecentSearchCVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RecentSearchCVC.swift; path = "Kiwix-iOS/Controller/Search/RecentSearchCVC.swift"; sourceTree = SOURCE_ROOT; }; 97D452BD1D1723FF0033666F /* CollectionViewCells.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewCells.swift; sourceTree = ""; }; 97D452C01D1871E70033666F /* SearchLocalBooksCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SearchLocalBooksCVC.swift; path = "Kiwix-iOS/Controller/Search/SearchLocalBooksCVC.swift"; sourceTree = SOURCE_ROOT; }; @@ -920,6 +928,7 @@ children = ( 975227CA1D0227E8001D1DDE /* Main.storyboard */, 975227C91D0227E8001D1DDE /* Library.storyboard */, + 97C005D51D64B3B0004352E8 /* LibraryNew.storyboard */, 97F03CE11D2440470040D26E /* Search.storyboard */, 975227CB1D0227E8001D1DDE /* Setting.storyboard */, 9734E54D1D289D060061C39B /* Welcome.storyboard */, @@ -932,6 +941,7 @@ isa = PBXGroup; children = ( 9749A1B21C430653000F2D1E /* Bookmark */, + 97C005D41D64B369004352E8 /* Library */, 978C588C1C1CD5080077AE47 /* LibraryTBVC */, 972B007D1C35DBAB00B5FDC5 /* Main */, 97E108221C5D5A0D00E27FD3 /* Search */, @@ -940,7 +950,7 @@ 97A7017E1D2C59CA00AAE2D8 /* GetStartedController.swift */, ); name = Controllers; - path = Kiwix; + path = Controller; sourceTree = ""; }; 978C588B1C1CD1E30077AE47 /* Model */ = { @@ -1047,6 +1057,16 @@ name = URLProtocol; sourceTree = ""; }; + 97C005D41D64B369004352E8 /* Library */ = { + isa = PBXGroup; + children = ( + 97C005D71D64B99E004352E8 /* LibrarySplitViewController.swift */, + 97C005DB1D64BEFE004352E8 /* CloudBooksController.swift */, + 9763275D1D64FE0F0034F120 /* BookDetailController.swift */, + ); + path = Library; + sourceTree = ""; + }; 97C01FCA1C39B7F100D010E5 /* Library */ = { isa = PBXGroup; children = ( @@ -1393,6 +1413,7 @@ 971A10801D022F74007FC62C /* Pic_I.png in Resources */, 971A101E1D0228E8007FC62C /* adjustlayoutiPhone.js in Resources */, 975227CC1D0227E8001D1DDE /* Library.storyboard in Resources */, + 97C005D61D64B3B0004352E8 /* LibraryNew.storyboard in Resources */, 971A107F1D022F74007FC62C /* ImportBookLearnMore.html in Resources */, 971A107E1D022F74007FC62C /* DownloaderLearnMore.html in Resources */, ); @@ -1627,6 +1648,7 @@ 971A103F1D022C42007FC62C /* LibraryAutoRefreshTBVC.swift in Sources */, 970E68B61D37E224001E8514 /* SettingSearchHistoryTBVC.swift in Sources */, 971A10581D022DAD007FC62C /* LibraryDownloadTBVC.swift in Sources */, + 97C005D81D64B99E004352E8 /* LibrarySplitViewController.swift in Sources */, 973DD4231D3443A3009D45DB /* ExtensionAndTypealias.swift in Sources */, 97A7017F1D2C59CA00AAE2D8 /* GetStartedController.swift in Sources */, 979C51521CECA9AF001707F2 /* StringTools.swift in Sources */, @@ -1647,6 +1669,7 @@ 971A10701D022E62007FC62C /* Network.swift in Sources */, 974F42821D47E19A00F8074C /* SettingWidgetBookmarksTBVC.swift in Sources */, 970E68B21D37E1DD001E8514 /* SettingSearchTuneController.swift in Sources */, + 97C005DC1D64BEFE004352E8 /* CloudBooksController.swift in Sources */, 971A104A1D022CBE007FC62C /* SearchResultTBVC.swift in Sources */, 971A105B1D022DAD007FC62C /* LibraryOnlineTBVC.swift in Sources */, 9779A1CB1D34225E0071EFAB /* RefreshLibraryOperation.swift in Sources */, @@ -1688,6 +1711,7 @@ 975227A01D020C00001D1DDE /* resourceTools.cpp in Sources */, 971A10601D022DF2007FC62C /* LanguageTBVC.swift in Sources */, 971A106C1D022E50007FC62C /* Utilities.swift in Sources */, + 9763275E1D64FE0F0034F120 /* BookDetailController.swift in Sources */, 973DD4281D36E3E4009D45DB /* SettingSingleSwitchTBVC.swift in Sources */, 971A10591D022DAD007FC62C /* LibraryLocalBookDetailTBVC.swift in Sources */, 971A10431D022C54007FC62C /* SettingTBVC.swift in Sources */, @@ -2036,6 +2060,7 @@ "$(inherited)", "$(PROJECT_DIR)/Kiwix/libkiwix/iOS", ); + OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; PRODUCT_BUNDLE_IDENTIFIER = self.Kiwix; PRODUCT_NAME = Kiwix; PROVISIONING_PROFILE = ""; @@ -2071,6 +2096,7 @@ "$(inherited)", "$(PROJECT_DIR)/Kiwix/libkiwix/iOS", ); + OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; PRODUCT_BUNDLE_IDENTIFIER = self.Kiwix; PRODUCT_NAME = Kiwix; PROVISIONING_PROFILE = ""; From bb10595f37875299acad91268b3c6526b9588fb0 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Thu, 18 Aug 2016 15:30:58 -0400 Subject: [PATCH 11/21] Disk space detection restructure --- .../Library/CloudBooksController.swift | 27 +++---------------- .../Controller/Main/MainController.swift | 2 +- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Model/Utilities.swift | 14 ---------- Kiwix-iOS/Storyboard/LibraryNew.storyboard | 17 +++++++++--- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix/CoreData/Book.swift | 18 +++++-------- Kiwix/Extensions.swift | 9 +++++++ 8 files changed, 36 insertions(+), 55 deletions(-) diff --git a/Kiwix-iOS/Controller/Library/CloudBooksController.swift b/Kiwix-iOS/Controller/Library/CloudBooksController.swift index 659273097..6bc862385 100644 --- a/Kiwix-iOS/Controller/Library/CloudBooksController.swift +++ b/Kiwix-iOS/Controller/Library/CloudBooksController.swift @@ -9,7 +9,7 @@ import UIKit import CoreData -class CloudBooksController: UITableViewController, NSFetchedResultsControllerDelegate, TableCellDelegate{ +class CloudBooksController: UITableViewController, NSFetchedResultsControllerDelegate { var bookDetailController = UIStoryboard.libraryNew.initViewController(BookDetailController.self)! @@ -17,7 +17,7 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel super.viewDidLoad() title = "" navigationController?.view.backgroundColor = UIColor.whiteColor() - splitViewController?.tabBarItem.title = "Cloud" + tabBarItem.title = "Cloud" } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { @@ -36,23 +36,8 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel } - // MARK: - TableCellDelegate - - func didTapOnAccessoryViewForCell(cell: UITableViewCell) { - guard let indexPath = tableView.indexPathForCell(cell), - let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} - switch book.spaceState { - case .Enough: - Network.sharedInstance.download(book) - //case .Caution: - // TODO: - Switch to a global op queue - //Network.sharedInstance.operationQueue.addOperation(SpaceCautionAlert(book: book, presentationContext: self)) - //case .NotEnough: - // TODO: - Switch to a global op queue - //Network.sharedInstance.operationQueue.addOperation(SpaceNotEnoughAlert(book: book, presentationContext: self)) - default: - break - } + @IBAction func dismissSelf(sender: UIBarButtonItem) { + dismissViewControllerAnimated(true, completion: nil) } // MARK: - TableView Data Source @@ -102,10 +87,6 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel // MARK: - Table View Delegate - override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { - guard let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} - } - override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { guard tableView.numberOfSections > 1 else {return 0.0} guard let headerText = self.tableView(tableView, titleForHeaderInSection: section) else {return 0.0} diff --git a/Kiwix-iOS/Controller/Main/MainController.swift b/Kiwix-iOS/Controller/Main/MainController.swift index caa0f0670..a2661969e 100644 --- a/Kiwix-iOS/Controller/Main/MainController.swift +++ b/Kiwix-iOS/Controller/Main/MainController.swift @@ -225,7 +225,7 @@ class MainController: UIViewController { func showLibraryButtonTapped() { guard let viewController = libraryNewController ?? UIStoryboard.libraryNew.instantiateInitialViewController() else {return} - viewController.modalPresentationStyle = .OverFullScreen + viewController.modalPresentationStyle = .FullScreen libraryNewController = viewController presentViewController(viewController, animated: true, completion: nil) } diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 4a914fcff..623bb0d3c 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.873 + 1.7.882 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Model/Utilities.swift b/Kiwix-iOS/Model/Utilities.swift index a897bbf62..f78a0d1fc 100644 --- a/Kiwix-iOS/Model/Utilities.swift +++ b/Kiwix-iOS/Model/Utilities.swift @@ -35,17 +35,3 @@ class Utilities: NSObject { } } } - -extension UIDevice { - class var availableDiskSpace: Int64? { - do { - let docDirPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).first! - let systemAttributes = try NSFileManager.defaultManager().attributesOfFileSystemForPath(docDirPath) - guard let freeSize = systemAttributes[NSFileSystemFreeSize] as? NSNumber else {return nil} - return freeSize.longLongValue - } catch let error as NSError { - print("Fetch system disk free space failed, error: \(error.localizedDescription)") - return nil - } - } -} \ No newline at end of file diff --git a/Kiwix-iOS/Storyboard/LibraryNew.storyboard b/Kiwix-iOS/Storyboard/LibraryNew.storyboard index d5c4e9432..08935634b 100644 --- a/Kiwix-iOS/Storyboard/LibraryNew.storyboard +++ b/Kiwix-iOS/Storyboard/LibraryNew.storyboard @@ -26,7 +26,7 @@ - + @@ -151,7 +151,13 @@ - + + + + + + + @@ -374,7 +380,7 @@ - + @@ -453,7 +459,10 @@ + + + - + diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index e321e55e5..c032a593e 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.928 + 1.7.942 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix/CoreData/Book.swift b/Kiwix/CoreData/Book.swift index 7c504517f..ff2b1b666 100644 --- a/Kiwix/CoreData/Book.swift +++ b/Kiwix/CoreData/Book.swift @@ -181,18 +181,14 @@ class Book: NSManagedObject { // MARK: - States var spaceState: BookSpaceState { - #if os(iOS) || os(watchOS) || os(tvOS) - let freeSpaceInBytes = UIDevice.availableDiskSpace ?? INT64_MAX - if (0.8 * Double(freeSpaceInBytes)) > Double(fileSize) { - return .Enough - } else if freeSpaceInBytes < fileSize{ - return .NotEnough - } else { - return .Caution - } - #elseif os(OSX) + guard let freeSpaceInBytes = UIDevice.availableDiskSpace?.freeSize else {return .Enough} + if (0.8 * Double(freeSpaceInBytes)) > Double(fileSize) { return .Enough - #endif + } else if freeSpaceInBytes < fileSize{ + return .NotEnough + } else { + return .Caution + } } } diff --git a/Kiwix/Extensions.swift b/Kiwix/Extensions.swift index cba5bd1d3..29bf2a11c 100644 --- a/Kiwix/Extensions.swift +++ b/Kiwix/Extensions.swift @@ -70,4 +70,13 @@ extension NSFileManager { } } +extension UIDevice { + class var availableDiskSpace: (freeSize: Int64, totalSize: Int64)? { + let docDirPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).first! + guard let systemAttributes = try? NSFileManager.defaultManager().attributesOfFileSystemForPath(docDirPath) else {return nil} + guard let freeSize = systemAttributes[NSFileSystemFreeSize] as? Int64, + let totalSize = systemAttributes[NSFileSystemSize] as? Int64 else {return nil} + return (freeSize, totalSize) + } +} From c0e879bedbab2088d50f57c2b50d0f34bf40d602 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Fri, 19 Aug 2016 11:20:58 -0400 Subject: [PATCH 12/21] Library without tabbar --- .../Library/BookDetailController.swift | 16 +- .../Library/CloudBooksController.swift | 3 +- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Storyboard/LibraryNew.storyboard | 236 +++++------------- Kiwix-iOS/Storyboard/Search.storyboard | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix.xcodeproj/project.pbxproj | 2 +- Podfile | 1 + Podfile.lock | 7 +- 9 files changed, 92 insertions(+), 179 deletions(-) diff --git a/Kiwix-iOS/Controller/Library/BookDetailController.swift b/Kiwix-iOS/Controller/Library/BookDetailController.swift index a9960e21b..9d0b13420 100644 --- a/Kiwix-iOS/Controller/Library/BookDetailController.swift +++ b/Kiwix-iOS/Controller/Library/BookDetailController.swift @@ -43,19 +43,25 @@ class BookDetailController: UITableViewController { hasPicIndicator.backgroundColor = book.hasPic ? AppColors.hasPicTintColor : UIColor.lightGrayColor() hasPicLabel.text = book.hasPic ? LocalizedStrings.BookDetail.hasPic : LocalizedStrings.BookDetail.noPic hasIndexIndicator.backgroundColor = book.hasIndex ? AppColors.hasIndexTintColor : UIColor.lightGrayColor() - hasIndexLabel.text = book.hasPic ? LocalizedStrings.BookDetail.hasIndex : LocalizedStrings.BookDetail.noIndex + hasIndexLabel.text = book.hasIndex ? LocalizedStrings.BookDetail.hasIndex : LocalizedStrings.BookDetail.noIndex } // MARK: - Table view data source override func numberOfSectionsInTableView(tableView: UITableView) -> Int { - // #warning Incomplete implementation, return the number of sections - return 0 + return 2 } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - // #warning Incomplete implementation, return the number of rows - return 0 + return 2 + } + + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) + + + + return cell } } diff --git a/Kiwix-iOS/Controller/Library/CloudBooksController.swift b/Kiwix-iOS/Controller/Library/CloudBooksController.swift index 6bc862385..59f638289 100644 --- a/Kiwix-iOS/Controller/Library/CloudBooksController.swift +++ b/Kiwix-iOS/Controller/Library/CloudBooksController.swift @@ -25,10 +25,11 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel switch identifier { case "ShowBookDetail": guard let navController = segue.destinationViewController as? UINavigationController, + let bookDetailController = navController.topViewController as? BookDetailController, let cell = sender as? UITableViewCell, let indexPath = tableView.indexPathForCell(cell), let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return} - navController.setViewControllers([bookDetailController], animated: false) +// navController.setViewControllers([bookDetailController], animated: false) bookDetailController.book = book default: break diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 623bb0d3c..496fb220c 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.882 + 1.7.921 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Storyboard/LibraryNew.storyboard b/Kiwix-iOS/Storyboard/LibraryNew.storyboard index 08935634b..63be8be34 100644 --- a/Kiwix-iOS/Storyboard/LibraryNew.storyboard +++ b/Kiwix-iOS/Storyboard/LibraryNew.storyboard @@ -1,5 +1,5 @@ - + @@ -7,25 +7,6 @@ - - - - - - - - - - - - - - - - - - - @@ -161,26 +142,7 @@ - - - - - - - - - - - - - - - - - - - - + @@ -189,9 +151,9 @@ - + - + @@ -225,7 +187,7 @@ - - + + + + + + @@ -287,6 +265,7 @@ + @@ -298,171 +277,92 @@ - + - - + + - - - + + + + - + - + - + - - + + - - + + + + - - + - - + + - + - + - + - - + + - + - + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - + + - - + - - - - - - + + - - - - - - - - - - - - - - - - - - - - + + - + - + diff --git a/Kiwix-iOS/Storyboard/Search.storyboard b/Kiwix-iOS/Storyboard/Search.storyboard index 34ce733f2..175e5b787 100644 --- a/Kiwix-iOS/Storyboard/Search.storyboard +++ b/Kiwix-iOS/Storyboard/Search.storyboard @@ -1,5 +1,5 @@ - + diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index c032a593e..0653646e6 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.942 + 1.7.992 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index c5f959266..1b0ceea10 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -709,13 +709,13 @@ isa = PBXGroup; children = ( 971A10241D022AD5007FC62C /* BarButtonItems.swift */, - 971A10261D022AD5007FC62C /* TableViewCells.swift */, 97D452BD1D1723FF0033666F /* CollectionViewCells.swift */, 971A10271D022AD5007FC62C /* Logo.swift */, 971A10281D022AD5007FC62C /* LTBarButtonItem.swift */, 971A10291D022AD5007FC62C /* RefreshHUD.swift */, 971A102A1D022AD5007FC62C /* SearchBar.swift */, 97E60A011D10423A00EBCB9D /* ShadowViews.swift */, + 971A10261D022AD5007FC62C /* TableViewCells.swift */, ); path = View; sourceTree = ""; diff --git a/Podfile b/Podfile index 743d4dece..e54921219 100644 --- a/Podfile +++ b/Podfile @@ -9,6 +9,7 @@ pod 'DateTools' pod 'DZNEmptyDataSet' pod 'SwiftyUserDefaults' pod 'Operations' +pod 'Charts' end diff --git a/Podfile.lock b/Podfile.lock index 91b6ca7c5..7f86720a6 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,4 +1,7 @@ PODS: + - Charts (2.2.5): + - Charts/Core (= 2.2.5) + - Charts/Core (2.2.5) - DateTools (1.7.0) - DZNEmptyDataSet (1.8.1) - Operations (3.0.0): @@ -7,17 +10,19 @@ PODS: - SwiftyUserDefaults (2.2.0) DEPENDENCIES: + - Charts - DateTools - DZNEmptyDataSet - Operations - SwiftyUserDefaults SPEC CHECKSUMS: + Charts: b48fcc8d7190de910ff9e9748f5360c8ea7856e5 DateTools: 53288ee8b905fdc75897a1e6b5cc0144b14cba60 DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 Operations: c05cc4b2ad060201ab98cbacd5217876658b5f2c SwiftyUserDefaults: e7c8197a9d4068702e7f2406a968cae413b8de27 -PODFILE CHECKSUM: 272d9b2fa769891c415d6d95e406cd5808b07b27 +PODFILE CHECKSUM: 817a8fbec5912cc9123925b4d431b45fcc87901e COCOAPODS: 1.0.1 From ce328ac85ce6fb4ba97292359242ce73c9322c30 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Fri, 19 Aug 2016 14:43:43 -0400 Subject: [PATCH 13/21] Base for new library --- .../Cross.imageset/Contents.json | 2 +- .../Cross.imageset/close copy.png | Bin 0 -> 15376 bytes .../Cross.imageset/multiply.png | Bin 419 -> 0 bytes .../Library/CloudBooksController.swift | 11 +--- .../Library/LibrarySplitViewController.swift | 13 ++++ .../Controller/LibraryTabBarController.swift | 2 + Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Storyboard/LibraryNew.storyboard | 59 +++++++++++++----- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- .../xcdebugger/Breakpoints_v2.xcbkptlist | 34 ++++++++++ 10 files changed, 99 insertions(+), 26 deletions(-) create mode 100644 Kiwix-iOS/Assets.xcassets/Cross.imageset/close copy.png delete mode 100644 Kiwix-iOS/Assets.xcassets/Cross.imageset/multiply.png diff --git a/Kiwix-iOS/Assets.xcassets/Cross.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Cross.imageset/Contents.json index 2cfaad3ed..dbb51abf4 100644 --- a/Kiwix-iOS/Assets.xcassets/Cross.imageset/Contents.json +++ b/Kiwix-iOS/Assets.xcassets/Cross.imageset/Contents.json @@ -10,7 +10,7 @@ }, { "idiom" : "universal", - "filename" : "multiply.png", + "filename" : "close copy.png", "scale" : "3x" } ], diff --git a/Kiwix-iOS/Assets.xcassets/Cross.imageset/close copy.png b/Kiwix-iOS/Assets.xcassets/Cross.imageset/close copy.png new file mode 100644 index 0000000000000000000000000000000000000000..2791e3b224c20c865c1a22f40166719c66b8e19e GIT binary patch literal 15376 zcmeI3Yitx%6vt;#C^kW{5#`OYfTA!vGdug}j@!l3EpEZZTB;VGoxL;Lj@{i^ccyfU zexQPp8W9jwK;st^1vNa>YK-!*Eb50wlmvN5@IfSEc*Gb~#MhmDPH(r@CSv?@H)(gy z{oixW+}}Ot?tGc<`h~ZSDj#1?QPilqV4wkhJB+`PBjEqZb5`zvUsoi8i#3X>=rH~) z+E@ND6y-guG&bo?q1yzY#_Xb`hGlyymVmP<$~PyK5J8))Tf=gT60fqIdw;jhsz_C~ zyImnRl&FzgmEh8(ylCmdMzFLEcqQ8$f4MIuzyL8>7pVQ>flrqb6mm%kHKD>-JbZUOVUVc$}WuRtL+u7?x*vmUi%hlNFo}Ywlz7 zm%}SxQi=!-fqA)f(5kYv>Uu(8n2wGPdk1eQ zNIp(L)<9B8=!zP*8ga$2+OAjGY(}EOC%3LxqL3)A<=8=rOiD~JoSkJ#IZ2@4lW0#y zGq)xIMvlrcIj(Eak1OeyXjOGpYgGqHS&#=!4EH1yD&#JCzp+@!)S6zq1R}^GE$OK> zb|z$|LDtmvB#>*Dz@X^ycLDYF)DIP3&YI_%_S+R1S|UCDVQ znsa$Qz*Q+lB2qY?qC}Vhse+0Ii?!2K#ITez2iqd~;r^p}A*y5!sDzl*WTXA6Z2A5x zoM?pu%kasxu^3pprj**wp&-b{H@OdK0fYL+ko%-2RSe0v}`i5=52%U>`Jb$-mu&p)}RM+l77y)c?5=#WDu1 zV!TC`{7k-r^8-WMyX=nkZ>@a04s1oA@#7@GHilItX4;4IF$2bmnX~hojCPE+XXiUu z*6n5)j)k9`uUSWZ7ypB=Sx0?~u6M>2-S5byLxxRW#&2l$gkJ<7_hi4@<>FmF1|3E{ z>XnonZ3-yxDAtT4#RV6Z@j-=>j*AC#GzmG!>}HuB%rbqL9fgm5@QITtJaP_b(ZWG? zDKCmEx|C6oSR@Go1aA^tcs__qa3MhOCc%a0gQx@-0t9aoTzEc+N^l`S@Fu~9=YyyO z7Xk!t5?pvbh)QrFK=3BPh3A8)1Q!AXZxUR1K8Q+iAwcjZ!G-68s00@R1aA^tcs__q za3MhOCc%a0gQx@-0t9aoTzEc+N^l`S@Fu~9=YyyO7Xk!t5?pvbh)QrFK=3BPh3A8) z1Q!AXZxUR1K8Q+iAwcjZ!G-68s00@R1aA^tcs__qa3MhOCc%a0gQx@-0t9aoTzEc+ zN^l`S@Fo^ldGRGqIS$|4?0~Omc75n=hOc*8L9ii2QA=k~)UxFib>T1geTt&mS&I4r z>cR$!x=wxO!F}^6%JO1ept>=2^w_2a4ZXKqQ@elJdn<$Gqi40P=&1}>H%uLW$O;b6 zo%pL`&HPQTUg-Jd&hwks{qV>|?WyL5ELf51j^^_8r-mtgviSw5yl<#MEP22v|vh;!N&Tl@TPG2@<{hnFugth5D zb_ILZGI`j7yLzr_b`9%(cGaZbyT+DLXS?>UnsU6%&u>{Zu2*MI&pAEr6ZQ8EmY*!a zzStY1pF74LI=T+L@Lkmc?b{8X^==<==5ubs@a?C%(jReaH;Vd^-s+Ph-?(}Dj$KoC zjOng@{>sg5%Fn^*tgI?a1*ndQ;u$`L=`4&h!V@FP~nnSIk({ zZF?u(^H{oeb^727X?b(s`M3L)TQ=S>(Xsj==_PO1p1p5vvry&Uir+@hzke9qQ>w0Z LVPNar=Ewd9hX>=s literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/Cross.imageset/multiply.png b/Kiwix-iOS/Assets.xcassets/Cross.imageset/multiply.png deleted file mode 100644 index 5aa72bd1d0076a71f8b63d44c48748f2de89a070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e=3*z$5DpHG+YkL80J)q69+AZi z3^J7<%-H)~We-qLvcxr_Bsf2(yEr+qAXP8FD1G)j8!4b7(Ey(i z*Z=?j1DR;Rw(U(JP>8K0$S;_IF>~s)f0Om(On@TqJY5_^JUUyao#bsc5O9^%dN6@W z$u(1f{avOayHtnMf7J$Gnf%Ys6&sK6{I8tdT2RUMeAoGhzxHPS-?Hz}roCU;``;Gd zkuqG{Ze^>Y&}I5)`PB}c(2o5Z zHhg_8W$o^5Gp)m=-|p29E37)Y=A8ZQRF>5CzJr$^yL^24>65~*JtiI;{1XJ^6cl3| zTy`-0V`yLC`N$}9alz`B8$RsNOfYz&kzx2ov(VtHMy283l?@4;i Bool { diff --git a/Kiwix-iOS/Controller/LibraryTabBarController.swift b/Kiwix-iOS/Controller/LibraryTabBarController.swift index 2e667bfbe..a9150282b 100644 --- a/Kiwix-iOS/Controller/LibraryTabBarController.swift +++ b/Kiwix-iOS/Controller/LibraryTabBarController.swift @@ -9,6 +9,8 @@ import UIKit class LibraryTabBarController: UITabBarController { + @IBAction func dismissSelf(sender: UIBarButtonItem) { + } override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 496fb220c..d6ad36eb6 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.921 + 1.7.955 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Storyboard/LibraryNew.storyboard b/Kiwix-iOS/Storyboard/LibraryNew.storyboard index 63be8be34..c75938025 100644 --- a/Kiwix-iOS/Storyboard/LibraryNew.storyboard +++ b/Kiwix-iOS/Storyboard/LibraryNew.storyboard @@ -7,7 +7,26 @@ - + + + + + + + + + + + + + + + + + + + + @@ -132,16 +151,30 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -301,11 +334,12 @@ + - + @@ -350,8 +384,8 @@ - + @@ -359,10 +393,7 @@ - - - - + diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 0653646e6..7ef57ae27 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.992 + 1.7.1032 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcworkspace/xcuserdata/chrisli.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Kiwix.xcworkspace/xcuserdata/chrisli.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index ed9a9b4d4..366022fcc 100644 --- a/Kiwix.xcworkspace/xcuserdata/chrisli.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/Kiwix.xcworkspace/xcuserdata/chrisli.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -2,4 +2,38 @@ + + + + + + + + + + From eda4a0ef187ba0dfd30849fccf5e1d7aa4299399 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Sat, 20 Aug 2016 16:19:04 -0400 Subject: [PATCH 14/21] image assets update --- Designs/Icons/icloud.psd | Bin 0 -> 111966 bytes .../BookmarkAdded.imageset/BookmarkAdded.png | Bin .../BookmarkAdded.imageset/Contents.json | 0 .../BookmarkColor.imageset/Contents.json | 0 .../BookmarkColor.imageset/favorite.png | Bin .../BookmarkRemoved.png | Bin .../BookmarkRemoved.imageset/Contents.json | 0 .../Assets.xcassets/Bookmarks/Contents.json | 6 ++ .../Star.imageset/Contents.json | 0 .../Star.imageset/stars64 copy 2.png | Bin .../StarHighlighted.imageset/Contents.json | 0 .../stars64 copy 3.png | Bin .../StarRemoved.imageset/Contents.json | 0 .../StarRemoved.imageset/star.png | Bin .../StarShortcut.imageset/Contents.json | 0 .../StarShortcut.imageset/star-1.png | Bin .../Assets.xcassets/Cloud.imageset/cloud.png | Bin 1293 -> 0 bytes .../CloudCellAccessory.imageset/Contents.json | 21 ------- .../downarrows11.png | Bin 1201 -> 0 bytes .../Cloud}/Cloud.imageset/Contents.json | 2 +- .../Library/Cloud/Cloud.imageset/icloud.png | Bin 0 -> 17725 bytes .../Cloud}/CloudColor.imageset/Contents.json | 0 .../Cloud}/CloudColor.imageset/sky.png | Bin .../Cloud/CloudFilled.imageset}/Contents.json | 2 +- .../CloudFilled.imageset/icloud-filled.png | Bin 0 -> 17600 bytes .../Library/Cloud/Contents.json | 6 ++ .../LanguageFilter.imageset/Contents.json | 0 .../Cloud}/LanguageFilter.imageset/Filter.png | Bin .../Cloud}/Refresh.imageset/Contents.json | 0 .../Cloud}/Refresh.imageset/update23.png | Bin .../Assets.xcassets/Library/Contents.json | 6 ++ .../Library.imageset/Contents.json | 0 .../Library.imageset/Library.png | Bin .../LocalCellAccessory.imageset/close42.png | Bin 1073 -> 0 bytes .../Check.imageset/Contents.json | 0 .../Check.imageset/success.png | Bin .../CheckBlue.imageset/Contents.json | 0 .../CheckBlue.imageset/success-1.png | Bin .../SearchScopeControl/Contents.json | 6 ++ .../Library/BookDetailController.swift | 53 +++++++++++++++--- .../Library/CloudBooksController.swift | 3 + Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Storyboard/LibraryNew.storyboard | 49 +++++++++++++++- Kiwix-iOS/View/TableViewCells.swift | 7 +++ Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- 45 files changed, 132 insertions(+), 33 deletions(-) create mode 100644 Designs/Icons/icloud.psd rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/BookmarkAdded.imageset/BookmarkAdded.png (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/BookmarkAdded.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/BookmarkColor.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/BookmarkColor.imageset/favorite.png (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/BookmarkRemoved.imageset/BookmarkRemoved.png (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/BookmarkRemoved.imageset/Contents.json (100%) create mode 100644 Kiwix-iOS/Assets.xcassets/Bookmarks/Contents.json rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/Star.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/Star.imageset/stars64 copy 2.png (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/StarHighlighted.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/StarHighlighted.imageset/stars64 copy 3.png (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/StarRemoved.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/StarRemoved.imageset/star.png (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/StarShortcut.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => Bookmarks}/StarShortcut.imageset/star-1.png (100%) delete mode 100644 Kiwix-iOS/Assets.xcassets/Cloud.imageset/cloud.png delete mode 100644 Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/Contents.json delete mode 100644 Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/downarrows11.png rename Kiwix-iOS/Assets.xcassets/{ => Library/Cloud}/Cloud.imageset/Contents.json (89%) create mode 100644 Kiwix-iOS/Assets.xcassets/Library/Cloud/Cloud.imageset/icloud.png rename Kiwix-iOS/Assets.xcassets/{ => Library/Cloud}/CloudColor.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => Library/Cloud}/CloudColor.imageset/sky.png (100%) rename Kiwix-iOS/Assets.xcassets/{LocalCellAccessory.imageset => Library/Cloud/CloudFilled.imageset}/Contents.json (87%) create mode 100644 Kiwix-iOS/Assets.xcassets/Library/Cloud/CloudFilled.imageset/icloud-filled.png create mode 100644 Kiwix-iOS/Assets.xcassets/Library/Cloud/Contents.json rename Kiwix-iOS/Assets.xcassets/{ => Library/Cloud}/LanguageFilter.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => Library/Cloud}/LanguageFilter.imageset/Filter.png (100%) rename Kiwix-iOS/Assets.xcassets/{ => Library/Cloud}/Refresh.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => Library/Cloud}/Refresh.imageset/update23.png (100%) create mode 100644 Kiwix-iOS/Assets.xcassets/Library/Contents.json rename Kiwix-iOS/Assets.xcassets/{ => Library}/Library.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => Library}/Library.imageset/Library.png (100%) delete mode 100644 Kiwix-iOS/Assets.xcassets/LocalCellAccessory.imageset/close42.png rename Kiwix-iOS/Assets.xcassets/{ => SearchScopeControl}/Check.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => SearchScopeControl}/Check.imageset/success.png (100%) rename Kiwix-iOS/Assets.xcassets/{ => SearchScopeControl}/CheckBlue.imageset/Contents.json (100%) rename Kiwix-iOS/Assets.xcassets/{ => SearchScopeControl}/CheckBlue.imageset/success-1.png (100%) create mode 100644 Kiwix-iOS/Assets.xcassets/SearchScopeControl/Contents.json diff --git a/Designs/Icons/icloud.psd b/Designs/Icons/icloud.psd new file mode 100644 index 0000000000000000000000000000000000000000..cd958ade29b6609a7d89efbb9a6f59888fb6b931 GIT binary patch literal 111966 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 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/BookmarkAdded.imageset/BookmarkAdded.png b/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkAdded.imageset/BookmarkAdded.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/BookmarkAdded.imageset/BookmarkAdded.png rename to Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkAdded.imageset/BookmarkAdded.png diff --git a/Kiwix-iOS/Assets.xcassets/BookmarkAdded.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkAdded.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/BookmarkAdded.imageset/Contents.json rename to Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkAdded.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkColor.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/Contents.json rename to Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkColor.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/favorite.png b/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkColor.imageset/favorite.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/favorite.png rename to Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkColor.imageset/favorite.png diff --git a/Kiwix-iOS/Assets.xcassets/BookmarkRemoved.imageset/BookmarkRemoved.png b/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkRemoved.imageset/BookmarkRemoved.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/BookmarkRemoved.imageset/BookmarkRemoved.png rename to Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkRemoved.imageset/BookmarkRemoved.png diff --git a/Kiwix-iOS/Assets.xcassets/BookmarkRemoved.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkRemoved.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/BookmarkRemoved.imageset/Contents.json rename to Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkRemoved.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/Contents.json b/Kiwix-iOS/Assets.xcassets/Bookmarks/Contents.json new file mode 100644 index 000000000..da4a164c9 --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/Bookmarks/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/Star.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Bookmarks/Star.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Star.imageset/Contents.json rename to Kiwix-iOS/Assets.xcassets/Bookmarks/Star.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Star.imageset/stars64 copy 2.png b/Kiwix-iOS/Assets.xcassets/Bookmarks/Star.imageset/stars64 copy 2.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Star.imageset/stars64 copy 2.png rename to Kiwix-iOS/Assets.xcassets/Bookmarks/Star.imageset/stars64 copy 2.png diff --git a/Kiwix-iOS/Assets.xcassets/StarHighlighted.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Bookmarks/StarHighlighted.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/StarHighlighted.imageset/Contents.json rename to Kiwix-iOS/Assets.xcassets/Bookmarks/StarHighlighted.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/StarHighlighted.imageset/stars64 copy 3.png b/Kiwix-iOS/Assets.xcassets/Bookmarks/StarHighlighted.imageset/stars64 copy 3.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/StarHighlighted.imageset/stars64 copy 3.png rename to Kiwix-iOS/Assets.xcassets/Bookmarks/StarHighlighted.imageset/stars64 copy 3.png diff --git a/Kiwix-iOS/Assets.xcassets/StarRemoved.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Bookmarks/StarRemoved.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/StarRemoved.imageset/Contents.json rename to Kiwix-iOS/Assets.xcassets/Bookmarks/StarRemoved.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/StarRemoved.imageset/star.png b/Kiwix-iOS/Assets.xcassets/Bookmarks/StarRemoved.imageset/star.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/StarRemoved.imageset/star.png rename to Kiwix-iOS/Assets.xcassets/Bookmarks/StarRemoved.imageset/star.png diff --git a/Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Bookmarks/StarShortcut.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/Contents.json rename to Kiwix-iOS/Assets.xcassets/Bookmarks/StarShortcut.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/star-1.png b/Kiwix-iOS/Assets.xcassets/Bookmarks/StarShortcut.imageset/star-1.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/star-1.png rename to Kiwix-iOS/Assets.xcassets/Bookmarks/StarShortcut.imageset/star-1.png diff --git a/Kiwix-iOS/Assets.xcassets/Cloud.imageset/cloud.png b/Kiwix-iOS/Assets.xcassets/Cloud.imageset/cloud.png deleted file mode 100644 index c309acd38840e1bcbfe3a91e90134273cf6c46c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1293 zcmV+o1@iidP)&K{Rs~4JC*OOe?S=aA2l`f(VmJ5H0AXW)j^Vw^GALrQOwFpPT3Iv(G(G z&$`~uAJ$;6y&nJXzaD#i-`XL@=>LpTY67Xz6CgE#)aVJ2nm}sw1V~LFHF^T1CXgBv zJK0zWVGeG?JoMoLzAL9AF~;9I*fD553gcJjPYz+9d`;b z#+DMU#MAg4vB`7_k1G#A%G9dyi|~01hUe4!=uas?(@P+Pa4+7(%o;_8@D=vsFDxtz zc0-NwC$T2Rc(5rVokEi%zXE4fkK{ktjJt4Ejk?RR1?LLt|AZxDdIp3L=HpY$&AmE| zwK2wz8f@nVyn&UuSI6-zuEqo$!?!pVV?5Uo$yU(B=T+q2@R|Z*@3!4JI~o*WIGwR*;0erbYYE`Vg2p@c z32H-t3D{RhgeY^mHezB^0$>i_DQNH&5o9`6Ub6ja)aTT&a> zf*5OL4prWs!T_B|MC&F5>(0XJx!$Gk(bB z-Cx4Zxy)@b#`E3b)IG!)hh!nWO59h%;#}sJ-Jz5Oc}H$xNfvadL_YX2o{$${ZVB^q znFC!SlLBAoo@bSizp%WiOJq`DY3}*glIjt^y-Q?LAaC11Np@ZytzPLlv2QSl=yTUBr5sZNnJC&f#O?ZX=I~XC=CwAOcg4KdOiD^`b{o`Fk5zJm{(5I)n0SmLc||3r)~fTViUjQw*9N@ z<&JUZ^fZf}0I3P2Mo)m$1X80XKxzW1(Gwswfz200000NkvXXu0mjf D{;Wu9 diff --git a/Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/Contents.json deleted file mode 100644 index 9717577f8..000000000 --- a/Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "downarrows11.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/downarrows11.png b/Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/downarrows11.png deleted file mode 100644 index 47a954d04d91a6636ddf8540b8e941391f00ee5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1201 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFfbN@Fr%39ftf%-$r9IylHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@~py#RGgo zT>t<74^%%2&_bZ>+6`5pP)tdXUoZnBGZ#0HfUuObjI6w>nx4LinYo3fm9>qnoxOvj zlZ&gnmycg?WL$hwa!N*KPC;==O+#BpS8w0^B`a2M*tBiO?!EgCoIZ2z>a`nBU%dMG z>GPMb-@gC&`Rn(ezyB5qCI&DtFfH+PaSVw#ymoqaypW?vJHLdaLYBzZ&S|QX*f`^M zE)8&q$=#`|YIFa8@fRk=Gc#Gs=1xB|@A>gLum5*s^yyFAb!z(TWjA%6uMaYuzoz8R z$wfz-lSL>0OI>^2Z*{UrdW>ys^r1VmGko{uiyFPGFcIlGc6sKZFWXznC;oMmZ8+w7 z!}$MZ^_q(e3+fWG_XRS(h|gQ4XRiO7VJh$5y@lL8MT~cA70j9Pc<=uGD4>yh^Y78M zLIyTr)%x5K?%i`rQWzs!_4i(Pu-;_hGtsQz?~DnoSqD=;sYEbu>c7W-XN~U6O!EWv zbp~w#(a~1n*#5JSHS#ZMvTh7|K=W?siy8eVaNAO?xI=S=N;bpOpAT3=N-R=@)5EEFAlHl z=m>cj6vlo+HN@5BPx6ftrW-9A<6S0Q5Kw2xbO>_kDtO3K!00MCpEWVP!63q})A96U zo(GwZK0yHj=?t0p=?ZZjCmc71rgRI6u| zi_xy&Ln0e4vwq%cG;zwxJ-7F(-(g-9YjA%>aAd5{?`F$@Z`<12Jk#`(8xFR!HXlvfQp?KryW4H{-2&U4#`bzL>&hO-&U;<*?@z^c zVTq`n7WxKvyk)*Co!)w;Sl{HXckK71+gtCH?=P@9c1p-W aumAN8Ur5U3uGW7B$||0&elF{r5}E+MOqo^y diff --git a/Kiwix-iOS/Assets.xcassets/Cloud.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Library/Cloud/Cloud.imageset/Contents.json similarity index 89% rename from Kiwix-iOS/Assets.xcassets/Cloud.imageset/Contents.json rename to Kiwix-iOS/Assets.xcassets/Library/Cloud/Cloud.imageset/Contents.json index ba4722840..2f941dea7 100644 --- a/Kiwix-iOS/Assets.xcassets/Cloud.imageset/Contents.json +++ b/Kiwix-iOS/Assets.xcassets/Library/Cloud/Cloud.imageset/Contents.json @@ -10,7 +10,7 @@ }, { "idiom" : "universal", - "filename" : "cloud.png", + "filename" : "icloud.png", "scale" : "3x" } ], diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/Cloud.imageset/icloud.png b/Kiwix-iOS/Assets.xcassets/Library/Cloud/Cloud.imageset/icloud.png new file mode 100644 index 0000000000000000000000000000000000000000..f9671066aef154d8e3ba66c5fe3b6cc1fbbb75d1 GIT binary patch literal 17725 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 d_2I*T**Ez;%#;m#?EhmVE;>{QZfn( zi%Ke+n!Eb?XDwO2Ve7Wtd-feTar)w=t2gdEef8<z!`9B=Jnbo@T{3+~%1zxPO^eQJ9oCh)$)}yp_+a55p2cTAElmFLrJ}y_ zibi_y#{!Far>03S{(HOdmUx}rjo9GkORc}3EHVk$z4_oy$$C@vgpX1e=eos-Gn`rP z^W(W_LzbJb_#$7{4OQ2w*Yi23KTJf+Zi`_viooQ!Y1*j zifzTbN$Wxz=Igf|b9la`8W%B%4^c*0km_4bSokvoc_f|bWt zD=u&F|Gt(nKwzR?K#_dxdRwU?t^mpJYlSX|a_Tes|D9yLy-oIB@{|~c(;HGgNR=;e z>=&10l+2wr5J?tSt>|`ZW8k7f9+yE>NviSo$<7 zjPX>@bdd|wIR(Twvl+)dI^ZI6;L7g#Q{>|gH9TIeAnwxG&$-hre z>(=pu?C-BR_{U!|aot+}<8XO)#_R4?%hvpVU3;g>w(Re{eOIQJ{yvs;_tu)(t81&b z%Ne|Jm-(%Dy6Vhkd6T#9vA+{Bjh7Z?5mNkFa?ge&0S~pMUiK{R~YU VOh5cM13rQ>tEa1<%Q~loCIGFPiS7UZ diff --git a/Kiwix-iOS/Assets.xcassets/Check.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/SearchScopeControl/Check.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Check.imageset/Contents.json rename to Kiwix-iOS/Assets.xcassets/SearchScopeControl/Check.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Check.imageset/success.png b/Kiwix-iOS/Assets.xcassets/SearchScopeControl/Check.imageset/success.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Check.imageset/success.png rename to Kiwix-iOS/Assets.xcassets/SearchScopeControl/Check.imageset/success.png diff --git a/Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/SearchScopeControl/CheckBlue.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/Contents.json rename to Kiwix-iOS/Assets.xcassets/SearchScopeControl/CheckBlue.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/success-1.png b/Kiwix-iOS/Assets.xcassets/SearchScopeControl/CheckBlue.imageset/success-1.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/CheckBlue.imageset/success-1.png rename to Kiwix-iOS/Assets.xcassets/SearchScopeControl/CheckBlue.imageset/success-1.png diff --git a/Kiwix-iOS/Assets.xcassets/SearchScopeControl/Contents.json b/Kiwix-iOS/Assets.xcassets/SearchScopeControl/Contents.json new file mode 100644 index 000000000..da4a164c9 --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/SearchScopeControl/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Controller/Library/BookDetailController.swift b/Kiwix-iOS/Controller/Library/BookDetailController.swift index 9d0b13420..d768392b7 100644 --- a/Kiwix-iOS/Controller/Library/BookDetailController.swift +++ b/Kiwix-iOS/Controller/Library/BookDetailController.swift @@ -53,17 +53,54 @@ class BookDetailController: UITableViewController { } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 2 + switch section { + case 0: return 3 + case 1: return 3 + default: return 0 + } } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) - - - - return cell + switch (indexPath.section, indexPath.row) { + case (0, 0): + let cell = tableView.dequeueReusableCellWithIdentifier("CenterTextCell", forIndexPath: indexPath) + cell.textLabel?.text = NSLocalizedString("Download Now", comment: LocalizedStrings.BookDetail.comment) + cell.textLabel?.textColor = UIColor.blueColor() + return cell + case (0, 1): + let cell = tableView.dequeueReusableCellWithIdentifier("CenterTextCell", forIndexPath: indexPath) + cell.textLabel?.text = NSLocalizedString("Schedule Download", comment: LocalizedStrings.BookDetail.comment) + cell.textLabel?.textColor = UIColor.blueColor() + return cell + case (0,2): + let cell = tableView.dequeueReusableCellWithIdentifier("TextSwitchCell", forIndexPath: indexPath) as! TextSwitchCell + cell.titleLabel.text = NSLocalizedString("Download Updates Automatically", comment: LocalizedStrings.BookDetail.comment) + return cell + case (1, 0): + let cell = tableView.dequeueReusableCellWithIdentifier("RightDetailCell", forIndexPath: indexPath) + cell.textLabel?.text = NSLocalizedString("Size", comment: LocalizedStrings.BookDetail.comment) + cell.detailTextLabel?.text = book?.fileSizeFormatted + return cell + case (1, 1): + let cell = tableView.dequeueReusableCellWithIdentifier("RightDetailCell", forIndexPath: indexPath) + cell.textLabel?.text = NSLocalizedString("Creation Date", comment: LocalizedStrings.BookDetail.comment) + cell.detailTextLabel?.text = book?.dateFormatted + return cell + case (1, 2): + let cell = tableView.dequeueReusableCellWithIdentifier("RightDetailCell", forIndexPath: indexPath) + cell.textLabel?.text = NSLocalizedString("Article Count", comment: LocalizedStrings.BookDetail.comment) + cell.detailTextLabel?.text = book?.articleCountFormatted + return cell + default: + let cell = tableView.dequeueReusableCellWithIdentifier("RightDetailCell", forIndexPath: indexPath) + return cell + } + } + + override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + if section == 0 {return 25.0} + return super.tableView(tableView, heightForHeaderInSection: section) } - } extension LocalizedStrings { @@ -73,5 +110,7 @@ extension LocalizedStrings { static let hasPic = NSLocalizedString("Pictures", comment: comment) static let noIndex = NSLocalizedString("No Index", comment: comment) static let noPic = NSLocalizedString("No Picture", comment: comment) + +// static let noPic = NSLocalizedString("No Picture", comment: comment) } } diff --git a/Kiwix-iOS/Controller/Library/CloudBooksController.swift b/Kiwix-iOS/Controller/Library/CloudBooksController.swift index 732a171aa..3732600a5 100644 --- a/Kiwix-iOS/Controller/Library/CloudBooksController.swift +++ b/Kiwix-iOS/Controller/Library/CloudBooksController.swift @@ -15,7 +15,10 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel super.viewDidLoad() title = "" tabBarItem.title = "Cloud" + tabBarItem.image = UIImage(named: "Cloud") + tabBarItem.selectedImage = UIImage(named: "CloudFilled") tabBarController?.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add) + clearsSelectionOnViewWillAppear = true } diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index d6ad36eb6..6b46091df 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.955 + 1.7.984 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Storyboard/LibraryNew.storyboard b/Kiwix-iOS/Storyboard/LibraryNew.storyboard index c75938025..f0418f092 100644 --- a/Kiwix-iOS/Storyboard/LibraryNew.storyboard +++ b/Kiwix-iOS/Storyboard/LibraryNew.storyboard @@ -268,7 +268,7 @@ - + @@ -292,6 +292,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Kiwix-iOS/View/TableViewCells.swift b/Kiwix-iOS/View/TableViewCells.swift index 8ff2827e6..857d516f0 100644 --- a/Kiwix-iOS/View/TableViewCells.swift +++ b/Kiwix-iOS/View/TableViewCells.swift @@ -179,4 +179,11 @@ class BookmarkSnippetCell: BookmarkCell { protocol TableCellDelegate: class { func didTapOnAccessoryViewForCell(cell: UITableViewCell) +} + +// MARK: - General + +class TextSwitchCell: UITableViewCell { + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var switchControl: UISwitch! } \ No newline at end of file diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 7ef57ae27..969911244 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.1032 + 1.7.1069 NSExtension NSExtensionMainStoryboard From 1ae7813b88d12b11696eb0c39e73fef7abdbf077 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Fri, 9 Sep 2016 17:05:45 -0400 Subject: [PATCH 15/21] swift 2.3 migrate --- Kiwix-iOS/AppDelegate.swift | 2 +- .../Bookmark/BookmarkControllerAnimator.swift | 8 +- Kiwix-iOS/Controller/LibraryLocalTBVC.swift | 2 +- .../Main/MainControllerDelegates.swift | 4 +- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOSUITests/SnapshotAutomation.swift | 57 -------- Kiwix-iOSUITests/SnapshotHelper.swift | 129 ------------------ Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix.xcodeproj/project.pbxproj | 20 +-- Kiwix/CoreData/Article.swift | 4 +- Kiwix/FileManager.swift | 8 +- Kiwix/Operations/ScanLocalBookOperation.swift | 2 +- Kiwix/URLProtocol/KiwixURLProtocol.swift | 2 +- Kiwix/ZimMultiReader/DirectoryMonitor.swift | 4 +- Podfile | 5 +- Podfile.lock | 27 ++-- 16 files changed, 50 insertions(+), 228 deletions(-) delete mode 100644 Kiwix-iOSUITests/SnapshotAutomation.swift delete mode 100644 Kiwix-iOSUITests/SnapshotHelper.swift diff --git a/Kiwix-iOS/AppDelegate.swift b/Kiwix-iOS/AppDelegate.swift index e209bd03e..e724149a9 100644 --- a/Kiwix-iOS/AppDelegate.swift +++ b/Kiwix-iOS/AppDelegate.swift @@ -70,7 +70,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool { - guard url.scheme.caseInsensitiveCompare("kiwix") == .OrderedSame else {return false} + guard url.scheme!.caseInsensitiveCompare("kiwix") == .OrderedSame else {return false} mainController?.load(url) return true } diff --git a/Kiwix-iOS/Controller/Bookmark/BookmarkControllerAnimator.swift b/Kiwix-iOS/Controller/Bookmark/BookmarkControllerAnimator.swift index b662143e5..14f38f41e 100644 --- a/Kiwix-iOS/Controller/Bookmark/BookmarkControllerAnimator.swift +++ b/Kiwix-iOS/Controller/Bookmark/BookmarkControllerAnimator.swift @@ -28,8 +28,8 @@ class BookmarkControllerAnimator: NSObject, UIViewControllerAnimatedTransitionin } private func animateInTransition(transitionContext: UIViewControllerContextTransitioning) { - guard let containerView = transitionContext.containerView(), - let toController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) as? BookmarkController, + let containerView = transitionContext.containerView() + guard let toController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) as? BookmarkController, let toView = transitionContext.viewForKey(UITransitionContextToViewKey) else {return} let duration = transitionDuration(transitionContext) @@ -54,8 +54,8 @@ class BookmarkControllerAnimator: NSObject, UIViewControllerAnimatedTransitionin } private func animateOutTransition(transitionContext: UIViewControllerContextTransitioning) { - guard let containerView = transitionContext.containerView(), - let fromController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) as? BookmarkController, + let containerView = transitionContext.containerView() + guard let fromController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) as? BookmarkController, let fromView = transitionContext.viewForKey(UITransitionContextFromViewKey) else {return} let duration = transitionDuration(transitionContext) diff --git a/Kiwix-iOS/Controller/LibraryLocalTBVC.swift b/Kiwix-iOS/Controller/LibraryLocalTBVC.swift index b689fe275..adf50b982 100644 --- a/Kiwix-iOS/Controller/LibraryLocalTBVC.swift +++ b/Kiwix-iOS/Controller/LibraryLocalTBVC.swift @@ -190,7 +190,7 @@ class LibraryLocalTBVC: UITableViewController, NSFetchedResultsControllerDelegat FileManager.removeItem(atURL: zimURL) let indexFolderURL = zimURL.URLByAppendingPathExtension("idx") - FileManager.removeItem(atURL: indexFolderURL) + FileManager.removeItem(atURL: indexFolderURL!) } if let _ = book.url { diff --git a/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift b/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift index 08f3292ae..b24f19c73 100644 --- a/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift +++ b/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift @@ -112,7 +112,7 @@ extension MainController: LPTBarButtonItemDelegate, TableOfContentsDelegate, Zim func webViewDidFinishLoad(webView: UIWebView) { guard let url = webView.request?.URL else {return} - guard url.scheme.caseInsensitiveCompare("Kiwix") == .OrderedSame else {return} + guard url.scheme!.caseInsensitiveCompare("Kiwix") == .OrderedSame else {return} let title = webView.stringByEvaluatingJavaScriptFromString("document.title") let managedObjectContext = UIApplication.appDelegate.managedObjectContext @@ -293,4 +293,4 @@ class HTMLHeading { var scrollToJavaScript: String { return "document.getElementById('\(id)').scrollIntoView();" } -} \ No newline at end of file +} diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 6b46091df..509d99cc2 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.984 + 1.7.987 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOSUITests/SnapshotAutomation.swift b/Kiwix-iOSUITests/SnapshotAutomation.swift deleted file mode 100644 index 457545369..000000000 --- a/Kiwix-iOSUITests/SnapshotAutomation.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// KiwixUITests.swift -// KiwixUITests -// -// Created by Chris on 12/11/15. -// Copyright © 2015 Chris. All rights reserved. -// - -import XCTest - -class SnapshotAutomation: XCTestCase { - - override func setUp() { - super.setUp() - - continueAfterFailure = false - XCUIApplication().launch() - - let app = XCUIApplication() - if app.alerts.count > 0 { - app.alerts["Welcome to Kiwix"].collectionViews.buttons["Dismiss"].tap() - } - - snapshot("01WelcomeScreen") - - if app.toolbars.buttons["Library"].exists { - // iPhone - app.toolbars.buttons["Library"].tap() - sleep(4) - if app.alerts.count > 0 { - app.alerts["Only Show Preferred Language?"].collectionViews.buttons["OK"].tap() - } - snapshot("02LibraryScreen") - } else { - // iPad - app.navigationBars["Kiwix.MainController"].childrenMatchingType(.Button).elementBoundByIndex(4).tap() - sleep(4) - if app.alerts.count > 0 { - app.alerts["Only Show Preferred Language?"].collectionViews.buttons["OK"].tap() - } - snapshot("02LibraryScreen") - } - - - } - - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. - super.tearDown() - } - - func testExample() { - // Use recording to get started writing UI tests. - // Use XCTAssert and related functions to verify your tests produce the correct results. - } - -} diff --git a/Kiwix-iOSUITests/SnapshotHelper.swift b/Kiwix-iOSUITests/SnapshotHelper.swift deleted file mode 100644 index e534eb329..000000000 --- a/Kiwix-iOSUITests/SnapshotHelper.swift +++ /dev/null @@ -1,129 +0,0 @@ -// -// SnapshotHelper.swift -// Example -// -// Created by Felix Krause on 10/8/15. -// Copyright © 2015 Felix Krause. All rights reserved. -// - -import Foundation -import XCTest - -var deviceLanguage = "" -var locale = "" - -@available(*, deprecated, message="use setupSnapshot: instead") -func setLanguage(app: XCUIApplication) { - setupSnapshot(app) -} - -func setupSnapshot(app: XCUIApplication) { - Snapshot.setupSnapshot(app) -} - -func snapshot(name: String, waitForLoadingIndicator: Bool = true) { - Snapshot.snapshot(name, waitForLoadingIndicator: waitForLoadingIndicator) -} - -public class Snapshot: NSObject { - - public class func setupSnapshot(app: XCUIApplication) { - setLanguage(app) - setLocale(app) - setLaunchArguments(app) - } - - class func setLanguage(app: XCUIApplication) { - guard let prefix = pathPrefix() else { - return - } - - let path = prefix.stringByAppendingPathComponent("language.txt") - - do { - let trimCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet() - deviceLanguage = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(trimCharacterSet) as String - app.launchArguments += ["-AppleLanguages", "(\(deviceLanguage))"] - } catch { - print("Couldn't detect/set language...") - } - } - - class func setLocale(app: XCUIApplication) { - guard let prefix = pathPrefix() else { - return - } - - let path = prefix.stringByAppendingPathComponent("locale.txt") - - do { - let trimCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet() - locale = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(trimCharacterSet) as String - } catch { - print("Couldn't detect/set locale...") - } - if locale.isEmpty { - locale = NSLocale(localeIdentifier: deviceLanguage).localeIdentifier - } - app.launchArguments += ["-AppleLocale", "\"\(locale)\""] - } - - class func setLaunchArguments(app: XCUIApplication) { - guard let prefix = pathPrefix() else { - return - } - - let path = prefix.stringByAppendingPathComponent("snapshot-launch_arguments.txt") - app.launchArguments += ["-FASTLANE_SNAPSHOT", "YES", "-ui_testing"] - - do { - let launchArguments = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) as String - let regex = try NSRegularExpression(pattern: "(\\\".+?\\\"|\\S+)", options: []) - let matches = regex.matchesInString(launchArguments, options: [], range: NSRange(location:0, length:launchArguments.characters.count)) - let results = matches.map { result -> String in - (launchArguments as NSString).substringWithRange(result.range) - } - app.launchArguments += results - } catch { - print("Couldn't detect/set launch_arguments...") - } - } - - public class func snapshot(name: String, waitForLoadingIndicator: Bool = true) { - if waitForLoadingIndicator { - waitForLoadingIndicatorToDisappear() - } - - print("snapshot: \(name)") // more information about this, check out https://github.com/fastlane/snapshot - - sleep(1) // Waiting for the animation to be finished (kind of) - XCUIDevice.sharedDevice().orientation = .Unknown - } - - class func waitForLoadingIndicatorToDisappear() { - let query = XCUIApplication().statusBars.childrenMatchingType(.Other).elementBoundByIndex(1).childrenMatchingType(.Other) - - while (0.. NSString? { - if let path = NSProcessInfo().environment["SIMULATOR_HOST_HOME"] as NSString? { - return path.stringByAppendingPathComponent("Library/Caches/tools.fastlane") - } - print("Couldn't find Snapshot configuration files at ~/Library/Caches/tools.fastlane") - return nil - } -} - -extension XCUIElement { - var isLoadingIndicator: Bool { - return self.frame.size == CGSize(width: 10, height: 20) - } -} - -// Please don't remove the lines below -// They are used to detect outdated configuration files -// SnapshotHelperVersion [1.2] diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 969911244..8df20ae51 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.1069 + 1.7.1075 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index 1b0ceea10..da5e59ece 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -101,7 +101,6 @@ 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 */; }; 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 */; }; 973DD40F1D343F2F009D45DB /* libicudata.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 973DD4041D343F2F009D45DB /* libicudata.a */; }; 973DD4101D343F2F009D45DB /* libicui18n.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 973DD4051D343F2F009D45DB /* libicui18n.a */; }; @@ -143,7 +142,6 @@ 975334CB1CEB6A43007ED50B /* Preference.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 975334CA1CEB6A43007ED50B /* Preference.storyboard */; }; 975334D01CEB6AE3007ED50B /* PreferenceGeneralController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975334CF1CEB6AE3007ED50B /* PreferenceGeneralController.swift */; }; 975334D21CEB6B01007ED50B /* LibraryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975334D11CEB6B01007ED50B /* LibraryController.swift */; }; - 97587A961D1061C0006EE1AA /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97587A951D1061C0006EE1AA /* SnapshotHelper.swift */; }; 975B90F91CEB75CB00D13906 /* ZimFilesController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975B90F81CEB75CB00D13906 /* ZimFilesController.swift */; }; 975B90FE1CEB909100D13906 /* iOSExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975B90FD1CEB909100D13906 /* iOSExtensions.swift */; }; 975B90FF1CEB909900D13906 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779987A1C1E1C9600B1DD5E /* Extensions.swift */; }; @@ -354,7 +352,6 @@ 973BCD171CEB402900F10B44 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Kiwix-iOSTests/Info.plist"; sourceTree = SOURCE_ROOT; }; 973BCD181CEB402900F10B44 /* KiwixTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = KiwixTests.swift; path = "Kiwix-iOSTests/KiwixTests.swift"; sourceTree = SOURCE_ROOT; }; 973BCD1B1CEB403700F10B44 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Kiwix-iOSUITests/Info.plist"; sourceTree = SOURCE_ROOT; }; - 973BCD1C1CEB403700F10B44 /* SnapshotAutomation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SnapshotAutomation.swift; path = "Kiwix-iOSUITests/SnapshotAutomation.swift"; sourceTree = SOURCE_ROOT; }; 973C8D5B1C25F945007272F9 /* Preference.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Preference.swift; path = Kiwix/Preference.swift; sourceTree = ""; }; 973DD4041D343F2F009D45DB /* libicudata.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libicudata.a; path = Kiwix/libkiwix/iOS/libicudata.a; sourceTree = ""; }; 973DD4051D343F2F009D45DB /* libicui18n.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libicui18n.a; path = Kiwix/libkiwix/iOS/libicui18n.a; sourceTree = ""; }; @@ -396,7 +393,6 @@ 975334CA1CEB6A43007ED50B /* Preference.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Preference.storyboard; path = "Kiwix-OSX/StoryBoards/Preference.storyboard"; sourceTree = SOURCE_ROOT; }; 975334CF1CEB6AE3007ED50B /* PreferenceGeneralController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PreferenceGeneralController.swift; path = "Kiwix-OSX/Controllers/PreferenceGeneralController.swift"; sourceTree = SOURCE_ROOT; }; 975334D11CEB6B01007ED50B /* LibraryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LibraryController.swift; path = "Kiwix-OSX/Controllers/LibraryController.swift"; sourceTree = SOURCE_ROOT; }; - 97587A951D1061C0006EE1AA /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SnapshotHelper.swift; path = "Kiwix-iOSUITests/SnapshotHelper.swift"; sourceTree = SOURCE_ROOT; }; 975B90F81CEB75CB00D13906 /* ZimFilesController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ZimFilesController.swift; path = "Kiwix-OSX/Controllers/ZimFilesController.swift"; sourceTree = SOURCE_ROOT; }; 975B90FD1CEB909100D13906 /* iOSExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = iOSExtensions.swift; path = "Kiwix-iOS/iOSExtensions.swift"; sourceTree = SOURCE_ROOT; }; 9763275D1D64FE0F0034F120 /* BookDetailController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookDetailController.swift; sourceTree = ""; }; @@ -1041,8 +1037,6 @@ isa = PBXGroup; children = ( 973BCD1B1CEB403700F10B44 /* Info.plist */, - 973BCD1C1CEB403700F10B44 /* SnapshotAutomation.swift */, - 97587A951D1061C0006EE1AA /* SnapshotHelper.swift */, ); name = "Kiwix-iOSUITests"; path = KiwixUITests; @@ -1305,6 +1299,7 @@ 9779C3121D4575AD0064CC8E = { CreatedOnToolsVersion = 7.3.1; DevelopmentTeam = L7HWM3SP3L; + LastSwiftMigration = 0800; SystemCapabilities = { com.apple.ApplicationGroups.iOS = { enabled = 1; @@ -1314,6 +1309,7 @@ 97A2AB871C1B80FF00052E74 = { CreatedOnToolsVersion = 7.2; DevelopmentTeam = L7HWM3SP3L; + LastSwiftMigration = 0800; SystemCapabilities = { com.apple.ApplicationGroups.iOS = { enabled = 1; @@ -1328,10 +1324,12 @@ }; 97A2AB9E1C1B80FF00052E74 = { CreatedOnToolsVersion = 7.2; + LastSwiftMigration = 0800; TestTargetID = 97A2AB871C1B80FF00052E74; }; 97A2ABA91C1B810000052E74 = { CreatedOnToolsVersion = 7.2; + LastSwiftMigration = 0800; TestTargetID = 97A2AB871C1B80FF00052E74; }; }; @@ -1735,8 +1733,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 973BCD1E1CEB403700F10B44 /* SnapshotAutomation.swift in Sources */, - 97587A961D1061C0006EE1AA /* SnapshotHelper.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1931,6 +1927,7 @@ PRODUCT_BUNDLE_IDENTIFIER = self.Kiwix.Bookmarks; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_VERSION = 2.3; }; name = Debug; }; @@ -1947,6 +1944,7 @@ PRODUCT_BUNDLE_IDENTIFIER = self.Kiwix.Bookmarks; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_VERSION = 2.3; }; name = Release; }; @@ -2066,6 +2064,7 @@ PROVISIONING_PROFILE = ""; SWIFT_OBJC_BRIDGING_HEADER = "Kiwix/Kiwix-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 2.3; }; name = Debug; }; @@ -2102,6 +2101,7 @@ PROVISIONING_PROFILE = ""; SWIFT_OBJC_BRIDGING_HEADER = "Kiwix/Kiwix-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 2.3; }; name = Release; }; @@ -2115,6 +2115,7 @@ PRODUCT_BUNDLE_IDENTIFIER = self.KiwixTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 2.3; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Kiwix.app/Kiwix"; }; name = Debug; @@ -2128,6 +2129,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = self.KiwixTests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 2.3; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Kiwix.app/Kiwix"; }; name = Release; @@ -2142,6 +2144,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 2.3; TEST_TARGET_NAME = "Kiwix-iOS"; USES_XCTRUNNER = YES; }; @@ -2156,6 +2159,7 @@ PRODUCT_BUNDLE_IDENTIFIER = self.KiwixUITests; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; + SWIFT_VERSION = 2.3; TEST_TARGET_NAME = "Kiwix-iOS"; USES_XCTRUNNER = YES; }; diff --git a/Kiwix/CoreData/Article.swift b/Kiwix/CoreData/Article.swift index f139a50b4..3bcfdc23a 100644 --- a/Kiwix/CoreData/Article.swift +++ b/Kiwix/CoreData/Article.swift @@ -14,7 +14,7 @@ class Article: NSManagedObject { class func addOrUpdate(title: String? = nil, url: NSURL, book: Book, context: NSManagedObjectContext) -> Article? { let fetchRequest = NSFetchRequest(entityName: "Article") - fetchRequest.predicate = NSPredicate(format: "urlString = %@", url.absoluteString) + fetchRequest.predicate = NSPredicate(format: "urlString = %@", url.absoluteString!) let article = Article.fetch(fetchRequest, type: Article.self, context: context)?.first ?? insert(Article.self, context: context) article?.title = title @@ -58,7 +58,7 @@ class Article: NSManagedObject { return [ "title": title, "thumbImageData": data, - "url": url.absoluteString, + "url": url.absoluteString!, "isMainPage": NSNumber(bool: isMainPage) ] } diff --git a/Kiwix/FileManager.swift b/Kiwix/FileManager.swift index ff01acbcd..4bb16d1ec 100644 --- a/Kiwix/FileManager.swift +++ b/Kiwix/FileManager.swift @@ -19,21 +19,21 @@ class FileManager { let directory = NSFileManager.docDirURL createDirectory(directory, includeInICloudBackup: false) let destination = directory.URLByAppendingPathComponent(fileName) - moveOrReplaceFile(from: fromURL, to: destination) + moveOrReplaceFile(from: fromURL, to: destination!) } // MARK: - Book Resume Data private class func resumeDataURL(book: Book) -> NSURL { let tempDownloadLocation = NSURL(fileURLWithPath: NSFileManager.libDirURL.path!).URLByAppendingPathComponent("DownloadTemp", isDirectory: true) - return tempDownloadLocation.URLByAppendingPathComponent(book.id ?? NSDate().description, isDirectory: false) + return tempDownloadLocation!.URLByAppendingPathComponent(book.id ?? NSDate().description, isDirectory: false)! } class func saveResumeData(data: NSData, book: Book) { let tempDownloadLocation = NSURL(fileURLWithPath: NSFileManager.libDirURL.path!).URLByAppendingPathComponent("DownloadTemp", isDirectory: true) - if !NSFileManager.defaultManager().fileExistsAtPath(tempDownloadLocation.path!) { + if !NSFileManager.defaultManager().fileExistsAtPath(tempDownloadLocation!.path!) { do { - try NSFileManager.defaultManager().createDirectoryAtURL(tempDownloadLocation, withIntermediateDirectories: true, attributes: [NSURLIsExcludedFromBackupKey: true]) + try NSFileManager.defaultManager().createDirectoryAtURL(tempDownloadLocation!, withIntermediateDirectories: true, attributes: [NSURLIsExcludedFromBackupKey: true]) } catch let error as NSError { print("Create temp download folder failed: \(error.localizedDescription)") } diff --git a/Kiwix/Operations/ScanLocalBookOperation.swift b/Kiwix/Operations/ScanLocalBookOperation.swift index b986ac62d..f0cffc285 100644 --- a/Kiwix/Operations/ScanLocalBookOperation.swift +++ b/Kiwix/Operations/ScanLocalBookOperation.swift @@ -95,7 +95,7 @@ class ScanLocalBookOperation: Operation { }() book?.isLocal = true book?.hasIndex = reader.hasIndex() - book?.hasPic = !reader.fileURL.absoluteString.containsString("nopic") + book?.hasPic = !reader.fileURL.absoluteString!.containsString("nopic") } for (id, book) in localBooks { diff --git a/Kiwix/URLProtocol/KiwixURLProtocol.swift b/Kiwix/URLProtocol/KiwixURLProtocol.swift index 93f5d9878..5f8db0412 100644 --- a/Kiwix/URLProtocol/KiwixURLProtocol.swift +++ b/Kiwix/URLProtocol/KiwixURLProtocol.swift @@ -8,7 +8,7 @@ class KiwixURLProtocol: NSURLProtocol { override class func canInitWithRequest(request: NSURLRequest) -> Bool { - return request.URL?.scheme.caseInsensitiveCompare("Kiwix") == .OrderedSame ? true : false + return request.URL?.scheme!.caseInsensitiveCompare("Kiwix") == .OrderedSame ? true : false } override class func canonicalRequestForRequest(request: NSURLRequest) -> NSURLRequest { diff --git a/Kiwix/ZimMultiReader/DirectoryMonitor.swift b/Kiwix/ZimMultiReader/DirectoryMonitor.swift index 9f1c166b3..8477342ee 100644 --- a/Kiwix/ZimMultiReader/DirectoryMonitor.swift +++ b/Kiwix/ZimMultiReader/DirectoryMonitor.swift @@ -157,7 +157,7 @@ class DirectoryMonitor { } private func fileSize(fileName: String) -> Int64? { - if let path = self.URL.URLByAppendingPathComponent(fileName).path { + if let path = self.URL.URLByAppendingPathComponent(fileName)!.path { if NSFileManager.defaultManager().fileExistsAtPath(path) { do { let attributes = try NSFileManager.defaultManager().attributesOfItemAtPath(path) @@ -171,4 +171,4 @@ class DirectoryMonitor { } return nil } -} \ No newline at end of file +} diff --git a/Podfile b/Podfile index e54921219..3b66ed567 100644 --- a/Podfile +++ b/Podfile @@ -8,8 +8,7 @@ platform :ios, '9.0' pod 'DateTools' pod 'DZNEmptyDataSet' pod 'SwiftyUserDefaults' -pod 'Operations' -pod 'Charts' +pod 'Operations', :git => 'https://github.com/ProcedureKit/ProcedureKit.git', :branch => 'swift/2.3' end @@ -18,6 +17,6 @@ target 'Kiwix-OSX' do platform :osx, '10.10' pod 'DateTools' -pod 'Operations' +pod 'Operations', :git => 'https://github.com/ProcedureKit/ProcedureKit.git', :branch => 'swift/2.3' end diff --git a/Podfile.lock b/Podfile.lock index 7f86720a6..f7b455cdf 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,28 +1,33 @@ PODS: - - Charts (2.2.5): - - Charts/Core (= 2.2.5) - - Charts/Core (2.2.5) - DateTools (1.7.0) - DZNEmptyDataSet (1.8.1) - - Operations (3.0.0): - - Operations/Standard (= 3.0.0) - - Operations/Standard (3.0.0) + - Operations (3.3.1): + - Operations/Standard (= 3.3.1) + - Operations/Standard (3.3.1) - SwiftyUserDefaults (2.2.0) DEPENDENCIES: - - Charts - DateTools - DZNEmptyDataSet - - Operations + - Operations (from `https://github.com/ProcedureKit/ProcedureKit.git`, branch `swift/2.3`) - SwiftyUserDefaults +EXTERNAL SOURCES: + Operations: + :branch: swift/2.3 + :git: https://github.com/ProcedureKit/ProcedureKit.git + +CHECKOUT OPTIONS: + Operations: + :commit: e79d22bc32e2e4faad6cdcde31c71187357b1154 + :git: https://github.com/ProcedureKit/ProcedureKit.git + SPEC CHECKSUMS: - Charts: b48fcc8d7190de910ff9e9748f5360c8ea7856e5 DateTools: 53288ee8b905fdc75897a1e6b5cc0144b14cba60 DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 - Operations: c05cc4b2ad060201ab98cbacd5217876658b5f2c + Operations: 6a33d325dae88de21b8edc69b9884fce01aea22b SwiftyUserDefaults: e7c8197a9d4068702e7f2406a968cae413b8de27 -PODFILE CHECKSUM: 817a8fbec5912cc9123925b4d431b45fcc87901e +PODFILE CHECKSUM: dafe7442de9229d78c81ec09646e9230caf12c71 COCOAPODS: 1.0.1 From 0d7535b49c822319d72e51daf5d3cbae6da90b9a Mon Sep 17 00:00:00 2001 From: Chris Li Date: Fri, 9 Sep 2016 17:10:00 -0400 Subject: [PATCH 16/21] top layout guide fix --- .../Main/MainControllerShowHide.swift | 5 +- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Storyboard/Search.storyboard | 560 ++---------------- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- .../Bookmarks/TodayViewController.swift | 5 +- Kiwix.xcodeproj/project.pbxproj | 13 +- .../xcschemes/Bookmarks.xcscheme | 6 +- .../xcschemes/Kiwix-OSX.xcscheme | 2 +- .../xcschemes/Kiwix-iOS.xcscheme | 2 +- 9 files changed, 85 insertions(+), 512 deletions(-) diff --git a/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift b/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift index b28a63196..7e0b95443 100644 --- a/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift +++ b/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift @@ -60,7 +60,8 @@ extension MainController { let views = ["SearchController": searchController.view] view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[SearchController]|", options: .AlignAllCenterY, metrics: nil, views: views)) - view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[SearchController]|", options: .AlignAllCenterX, metrics: nil, views: views)) + view.addConstraint(searchController.view.topAnchor.constraintEqualToAnchor(topLayoutGuide.bottomAnchor)) + view.addConstraint(searchController.view.bottomAnchor.constraintEqualToAnchor(bottomLayoutGuide.topAnchor)) if animated { searchController.view.alpha = 0.5 @@ -195,4 +196,4 @@ extension MainController { GlobalOperationQueue.sharedInstance.addOperation(operation) Preference.hasShowGetStartedAlert = true } -} \ No newline at end of file +} diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 509d99cc2..9b9cb8faa 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.987 + 1.7.990 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Storyboard/Search.storyboard b/Kiwix-iOS/Storyboard/Search.storyboard index 175e5b787..0caffb700 100644 --- a/Kiwix-iOS/Storyboard/Search.storyboard +++ b/Kiwix-iOS/Storyboard/Search.storyboard @@ -1,10 +1,10 @@ - - + + - - + + @@ -16,102 +16,44 @@ - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + - - - - - + - - - - - - - @@ -119,56 +61,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + @@ -176,66 +95,34 @@ - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - @@ -252,118 +139,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -374,73 +150,60 @@ - + - - + - + - + - - - + @@ -452,15 +215,11 @@ - - + - - - @@ -492,7 +251,7 @@ - + @@ -500,9 +259,9 @@ - + @@ -515,17 +274,17 @@ - + - + @@ -534,7 +293,6 @@ - @@ -544,22 +302,14 @@ - - - - - - - - @@ -573,44 +323,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -620,45 +332,38 @@ - + - - + - + - + - - - + @@ -688,49 +393,39 @@ - + - + - - - + @@ -776,7 +471,7 @@ - + @@ -802,133 +497,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -938,12 +506,11 @@ - + - - + @@ -959,15 +526,13 @@ - - + @@ -980,7 +545,7 @@ - + @@ -1000,8 +565,5 @@ - - - diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 8df20ae51..9b6145557 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.1075 + 1.7.1078 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix-iOSWidgets/Bookmarks/TodayViewController.swift b/Kiwix-iOSWidgets/Bookmarks/TodayViewController.swift index 19d1e8ba1..32da0850e 100644 --- a/Kiwix-iOSWidgets/Bookmarks/TodayViewController.swift +++ b/Kiwix-iOSWidgets/Bookmarks/TodayViewController.swift @@ -72,7 +72,7 @@ class TodayViewController: UIViewController, NCWidgetProviding, UICollectionView itemSize = CGSizeMake(itemWidth, itemHeight) rowCount = min(ceil(CGFloat(bookmarks.count) / CGFloat(itemsPerRow)), maxRowCount) - let collectionViewHeight = itemHeight * rowCount + hInset * rowCount + let collectionViewHeight = itemHeight * rowCount + hInset * (rowCount - 1) preferredContentSize = CGSizeMake(0, max(1, collectionViewHeight)) } @@ -114,6 +114,9 @@ class TodayViewController: UIViewController, NCWidgetProviding, UICollectionView cell.label.text = title cell.imageView.image = UIImage(data: thumbImageData) + if #available(iOS 10.0, *) { + cell.label.textColor = UIColor.darkTextColor() + } } // MARK: - UICollectionViewDelegate diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index da5e59ece..9e269f4a5 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -1282,7 +1282,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0730; + LastUpgradeCheck = 0800; ORGANIZATIONNAME = Chris; TargetAttributes = { 973BCCE81CEB3FA400F10B44 = { @@ -1791,6 +1791,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 6DCB0E958A1083CA248C5A12 /* Pods-Kiwix-OSX.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; @@ -1822,6 +1823,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 69E75DFE2EF83272AC5B02BA /* Pods-Kiwix-OSX.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; @@ -1961,8 +1963,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -2006,8 +2010,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -2026,6 +2032,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -2035,6 +2042,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = DA0AB5D61F19BE37BD0AFA0A /* Pods-Kiwix-iOS.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; @@ -2043,7 +2051,6 @@ CODE_SIGN_ENTITLEMENTS = "Kiwix-iOS/Kiwix.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - EMBEDDED_CONTENT_CONTAINS_SWIFT = "$(inherited)"; ENABLE_BITCODE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", @@ -2072,6 +2079,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 5B9300794E7F4EFE5B3E8F19 /* Pods-Kiwix-iOS.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; @@ -2080,7 +2088,6 @@ CODE_SIGN_ENTITLEMENTS = "Kiwix-iOS/Kiwix.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - EMBEDDED_CONTENT_CONTAINS_SWIFT = "$(inherited)"; ENABLE_BITCODE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", diff --git a/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Bookmarks.xcscheme b/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Bookmarks.xcscheme index 6d1b1e46b..ec826d86c 100644 --- a/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Bookmarks.xcscheme +++ b/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Bookmarks.xcscheme @@ -1,6 +1,6 @@ @@ -47,7 +47,7 @@ diff --git a/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Kiwix-OSX.xcscheme b/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Kiwix-OSX.xcscheme index 9090c03b2..e43eec5ec 100644 --- a/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Kiwix-OSX.xcscheme +++ b/Kiwix.xcodeproj/xcuserdata/Chrisli.xcuserdatad/xcschemes/Kiwix-OSX.xcscheme @@ -1,6 +1,6 @@ Date: Fri, 9 Sep 2016 17:13:58 -0400 Subject: [PATCH 17/21] switch back to old library --- Kiwix-iOS/Controller/Main/MainController.swift | 6 +++--- Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Storyboard/Library.storyboard | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Kiwix-iOS/Controller/Main/MainController.swift b/Kiwix-iOS/Controller/Main/MainController.swift index a2661969e..29641d1bf 100644 --- a/Kiwix-iOS/Controller/Main/MainController.swift +++ b/Kiwix-iOS/Controller/Main/MainController.swift @@ -224,9 +224,9 @@ class MainController: UIViewController { } func showLibraryButtonTapped() { - guard let viewController = libraryNewController ?? UIStoryboard.libraryNew.instantiateInitialViewController() else {return} - viewController.modalPresentationStyle = .FullScreen - libraryNewController = viewController + guard let viewController = libraryController ?? UIStoryboard.library.instantiateInitialViewController() else {return} + viewController.modalPresentationStyle = .FormSheet + libraryController = viewController presentViewController(viewController, animated: true, completion: nil) } diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 9b9cb8faa..85e99a1d4 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.990 + 1.7.992 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Storyboard/Library.storyboard b/Kiwix-iOS/Storyboard/Library.storyboard index 0a6affd37..6f749e337 100644 --- a/Kiwix-iOS/Storyboard/Library.storyboard +++ b/Kiwix-iOS/Storyboard/Library.storyboard @@ -1,5 +1,5 @@ - + diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 9b6145557..0d2dbfa6e 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.1078 + 1.7.1081 NSExtension NSExtensionMainStoryboard From 7dae03ffee3d3981ca2ab69c6bc26dc96cc2aa61 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Fri, 9 Sep 2016 17:19:43 -0400 Subject: [PATCH 18/21] revert image catalogue --- .../AppIcon.appiconset/Contents.json | 106 ++++++++++++++++++ .../AppIcon.appiconset/Icon-40.png | Bin 0 -> 1655 bytes .../AppIcon.appiconset/Icon-40@2x.png | Bin 0 -> 3492 bytes .../AppIcon.appiconset/Icon-40@3x.png | Bin 0 -> 5504 bytes .../AppIcon.appiconset/Icon-60@2x.png | Bin 0 -> 5504 bytes .../AppIcon.appiconset/Icon-60@3x.png | Bin 0 -> 8979 bytes .../AppIcon.appiconset/Icon-76.png | Bin 0 -> 3340 bytes .../AppIcon.appiconset/Icon-76@2x.png | Bin 0 -> 7336 bytes .../AppIcon.appiconset/Icon-83.5@2x.png | Bin 0 -> 8123 bytes .../AppIcon.appiconset/Icon-Small.png | Bin 0 -> 1093 bytes .../AppIcon.appiconset/Icon-Small@2x.png | Bin 0 -> 2472 bytes .../AppIcon.appiconset/Icon-Small@3x.png | Bin 0 -> 3901 bytes .../BookmarkAdded.imageset/BookmarkAdded.png | Bin .../BookmarkAdded.imageset/Contents.json | 0 .../BookmarkColor.imageset/Contents.json | 0 .../BookmarkColor.imageset/favorite.png | Bin .../BookmarkRemoved.png | Bin .../BookmarkRemoved.imageset/Contents.json | 0 .../Bookmarks/Contents.json | 0 .../Bookmarks/Star.imageset/Contents.json | 0 .../Star.imageset/stars64 copy 2.png | Bin .../StarHighlighted.imageset/Contents.json | 0 .../stars64 copy 3.png | Bin .../StarRemoved.imageset/Contents.json | 0 .../Bookmarks/StarRemoved.imageset/star.png | Bin .../StarShortcut.imageset/Contents.json | 0 .../StarShortcut.imageset/star-1.png | Bin .../CloudCellAccessory.imageset/Contents.json | 21 ++++ .../downarrows11.png | Bin 0 -> 1201 bytes .../CloudRound.imageset/Contents.json | 21 ++++ .../CloudRound.imageset/cloud.png | Bin 0 -> 20565 bytes .../Compass.imageset/Contents.json | 21 ++++ .../Compass.imageset/compass.png | Bin 0 -> 12094 bytes .../Contents.json | 0 .../Cross.imageset/Contents.json | 21 ++++ .../Cross.imageset/close copy.png | Bin .../DownArrow.imageset/Contents.json | 21 ++++ .../DownArrow.imageset/DownArrow.png | Bin 0 -> 471 bytes .../Download.imageset/Contents.json | 21 ++++ .../Download.imageset/download.png | Bin 0 -> 731 bytes .../Contents.json | 21 ++++ .../Pause.png | Bin 0 -> 1241 bytes .../Contents.json | 21 ++++ .../Resume.png | Bin 0 -> 1310 bytes .../DownloadColor.imageset/Contents.json | 21 ++++ .../DownloadColor.imageset/arrows.png | Bin 0 -> 9807 bytes .../Folder.imageset/Contents.json | 21 ++++ .../Folder.imageset/folder.png | Bin 0 -> 484 bytes .../FolderColor.imageset/Contents.json | 21 ++++ .../FolderColor.imageset/folder.png | Bin 0 -> 8868 bytes .../GeoPinRound.imageset/Contents.json | 21 ++++ .../GeoPinRound.imageset/placeholder.png | Bin 0 -> 4175 bytes .../History.imageset/Contents.json | 21 ++++ .../History.imageset/clock.png | Bin 0 -> 1092 bytes .../History_filled.imageset/Contents.json | 21 ++++ .../History_filled.png | Bin 0 -> 2518 bytes .../LeftArrow.imageset/Contents.json | 21 ++++ .../LeftArrow.imageset/LeftArrow.png | Bin 0 -> 517 bytes .../Cloud/Cloud.imageset/Contents.json | 0 .../Library/Cloud/Cloud.imageset/icloud.png | Bin .../Cloud/CloudColor.imageset/Contents.json | 0 .../Library/Cloud/CloudColor.imageset/sky.png | Bin .../Cloud/CloudFilled.imageset/Contents.json | 0 .../CloudFilled.imageset/icloud-filled.png | Bin .../Library/Cloud}/Contents.json | 0 .../LanguageFilter.imageset/Contents.json | 0 .../Cloud/LanguageFilter.imageset/Filter.png | Bin .../Cloud/Refresh.imageset/Contents.json | 0 .../Cloud/Refresh.imageset/update23.png | Bin .../Library}/Contents.json | 0 .../Library/Library.imageset/Contents.json | 0 .../Library/Library.imageset/Library.png | Bin .../LocalCellAccessory.imageset/Contents.json | 21 ++++ .../LocalCellAccessory.imageset/close42.png | Bin 0 -> 1073 bytes .../Logo.imageset/Contents.json | 21 ++++ .../Logo.imageset/Kiwix_logo_instaler-2.png | Bin 0 -> 87050 bytes .../MagnifyGlass.imageset/Contents.json | 21 ++++ .../magnifying-glass-2.png | Bin 0 -> 1370 bytes .../MainPage.imageset/Contents.json | 21 ++++ .../MainPage.imageset/house158.png | Bin 0 -> 1146 bytes .../MainPage_filled.imageset/Contents.json | 21 ++++ .../canvas1-small.png | Bin 0 -> 1471 bytes .../Question.imageset/Contents.json | 21 ++++ .../Question.imageset/round67.png | Bin 0 -> 1393 bytes .../Recent.imageset/Contents.json | 21 ++++ .../counterclockwise-rotation.png | Bin 0 -> 1802 bytes .../RightArrow.imageset/Contents.json | 21 ++++ .../RightArrow.imageset/RightArrow.png | Bin 0 -> 592 bytes .../SearchRound.imageset/Contents.json | 21 ++++ .../SearchRound.imageset/magnifying-glass.png | Bin 0 -> 5133 bytes .../Check.imageset/Contents.json | 0 .../Check.imageset/success.png | Bin .../CheckBlue.imageset/Contents.json | 0 .../CheckBlue.imageset/success-1.png | Bin .../SearchScopeControl/Contents.json | 6 + .../SearchSetting.imageset/Contents.json | 21 ++++ .../SearchSetting.imageset/SearchSetting.png | Bin 0 -> 1335 bytes .../Contents.json | 21 ++++ .../SearchSetting_filled.png | Bin 0 -> 1346 bytes .../Setting.imageset/Contents.json | 21 ++++ .../Setting.imageset/settings@3x.png | Bin 0 -> 3115 bytes .../TableOfContent.imageset/Contents.json | 21 ++++ .../TableOfContent.imageset/list-1.png | Bin 0 -> 525 bytes .../USBRound.imageset/Contents.json | 21 ++++ .../USBRound.imageset/usb-cable.png | Bin 0 -> 16087 bytes .../AppIcon.appiconset/Contents.json | 92 +++++++++------ .../BookmarkAdded.imageset/BookmarkAdded.png | Bin 0 -> 27325 bytes .../BookmarkAdded.imageset/Contents.json | 21 ++++ .../BookmarkColor.imageset/Contents.json | 21 ++++ .../BookmarkColor.imageset/favorite.png | Bin 0 -> 4386 bytes .../BookmarkRemoved.png | Bin 0 -> 29182 bytes .../BookmarkRemoved.imageset/Contents.json | 21 ++++ .../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 .../Cloud.imageset/Contents.json | 21 ++++ .../Assets.xcassets/Cloud.imageset/cloud.png | Bin 0 -> 1293 bytes .../CloudCellAccessory.imageset/Contents.json | 21 ++++ .../downarrows11.png | Bin 0 -> 1201 bytes .../CloudColor.imageset/Contents.json | 21 ++++ .../CloudColor.imageset/sky.png | Bin 0 -> 14802 bytes .../Cross.imageset/Contents.json | 2 +- .../Cross.imageset/multiply.png | Bin 0 -> 419 bytes .../LanguageFilter.imageset/Contents.json | 21 ++++ .../LanguageFilter.imageset/Filter.png | Bin 0 -> 2269 bytes .../Library.imageset/Contents.json | 21 ++++ .../Library.imageset/Library.png | Bin 0 -> 5104 bytes .../LocalCellAccessory.imageset/Contents.json | 21 ++++ .../LocalCellAccessory.imageset/close42.png | Bin 0 -> 1073 bytes .../Refresh.imageset/Contents.json | 21 ++++ .../Refresh.imageset/update23.png | Bin 0 -> 1853 bytes .../Star.imageset/Contents.json | 21 ++++ .../Star.imageset/stars64 copy 2.png | Bin 0 -> 17995 bytes .../StarHighlighted.imageset/Contents.json | 21 ++++ .../stars64 copy 3.png | Bin 0 -> 19823 bytes .../StarRemoved.imageset/Contents.json | 21 ++++ .../StarRemoved.imageset/star.png | Bin 0 -> 3315 bytes .../StarShortcut.imageset/Contents.json | 21 ++++ .../StarShortcut.imageset/star-1.png | Bin 0 -> 1656 bytes Kiwix-iOS/Info.plist | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- 142 files changed, 1116 insertions(+), 39 deletions(-) create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-40.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-40@2x.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-40@3x.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-60@2x.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-60@3x.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-76.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-76@2x.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-83.5@2x.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-Small.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-Small@2x.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-Small@3x.png rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/BookmarkAdded.imageset/BookmarkAdded.png (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/BookmarkAdded.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/BookmarkColor.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/BookmarkColor.imageset/favorite.png (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/BookmarkRemoved.imageset/BookmarkRemoved.png (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/BookmarkRemoved.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/Star.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/Star.imageset/stars64 copy 2.png (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/StarHighlighted.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/StarHighlighted.imageset/stars64 copy 3.png (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/StarRemoved.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/StarRemoved.imageset/star.png (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/StarShortcut.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Bookmarks/StarShortcut.imageset/star-1.png (100%) create mode 100644 Kiwix-iOS/Assets-old.xcassets/CloudCellAccessory.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/CloudCellAccessory.imageset/downarrows11.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/CloudRound.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/CloudRound.imageset/cloud.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/Compass.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/Compass.imageset/compass.png rename Kiwix-iOS/{Assets.xcassets/Library/Cloud => Assets-old.xcassets}/Contents.json (100%) create mode 100644 Kiwix-iOS/Assets-old.xcassets/Cross.imageset/Contents.json rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Cross.imageset/close copy.png (100%) create mode 100644 Kiwix-iOS/Assets-old.xcassets/DownArrow.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/DownArrow.imageset/DownArrow.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/Download.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/Download.imageset/download.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryPause.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryPause.imageset/Pause.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryResume.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryResume.imageset/Resume.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/DownloadColor.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/DownloadColor.imageset/arrows.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/Folder.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/Folder.imageset/folder.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/FolderColor.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/FolderColor.imageset/folder.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/GeoPinRound.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/GeoPinRound.imageset/placeholder.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/History.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/History.imageset/clock.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/History_filled.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/History_filled.imageset/History_filled.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/LeftArrow.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/LeftArrow.imageset/LeftArrow.png rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Cloud/Cloud.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Cloud/Cloud.imageset/icloud.png (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Cloud/CloudColor.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Cloud/CloudColor.imageset/sky.png (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Cloud/CloudFilled.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Cloud/CloudFilled.imageset/icloud-filled.png (100%) rename Kiwix-iOS/{Assets.xcassets/Library => Assets-old.xcassets/Library/Cloud}/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Cloud/LanguageFilter.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Cloud/LanguageFilter.imageset/Filter.png (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Cloud/Refresh.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Cloud/Refresh.imageset/update23.png (100%) rename Kiwix-iOS/{Assets.xcassets/SearchScopeControl => Assets-old.xcassets/Library}/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Library.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/Library/Library.imageset/Library.png (100%) create mode 100644 Kiwix-iOS/Assets-old.xcassets/LocalCellAccessory.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/LocalCellAccessory.imageset/close42.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/Logo.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/Logo.imageset/Kiwix_logo_instaler-2.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/MagnifyGlass.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/MagnifyGlass.imageset/magnifying-glass-2.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/MainPage.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/MainPage.imageset/house158.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/MainPage_filled.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/MainPage_filled.imageset/canvas1-small.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/Question.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/Question.imageset/round67.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/Recent.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/Recent.imageset/counterclockwise-rotation.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/RightArrow.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/RightArrow.imageset/RightArrow.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/SearchRound.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/SearchRound.imageset/magnifying-glass.png rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/SearchScopeControl/Check.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/SearchScopeControl/Check.imageset/success.png (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/SearchScopeControl/CheckBlue.imageset/Contents.json (100%) rename Kiwix-iOS/{Assets.xcassets => Assets-old.xcassets}/SearchScopeControl/CheckBlue.imageset/success-1.png (100%) create mode 100644 Kiwix-iOS/Assets-old.xcassets/SearchScopeControl/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/SearchSetting.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/SearchSetting.imageset/SearchSetting.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/SearchSetting_filled.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/SearchSetting_filled.imageset/SearchSetting_filled.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/Setting.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/Setting.imageset/settings@3x.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/TableOfContent.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/TableOfContent.imageset/list-1.png create mode 100644 Kiwix-iOS/Assets-old.xcassets/USBRound.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets-old.xcassets/USBRound.imageset/usb-cable.png create mode 100644 Kiwix-iOS/Assets.xcassets/BookmarkAdded.imageset/BookmarkAdded.png create mode 100644 Kiwix-iOS/Assets.xcassets/BookmarkAdded.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/favorite.png create mode 100644 Kiwix-iOS/Assets.xcassets/BookmarkRemoved.imageset/BookmarkRemoved.png create mode 100644 Kiwix-iOS/Assets.xcassets/BookmarkRemoved.imageset/Contents.json 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 create mode 100644 Kiwix-iOS/Assets.xcassets/Cloud.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/Cloud.imageset/cloud.png create mode 100644 Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/downarrows11.png create mode 100644 Kiwix-iOS/Assets.xcassets/CloudColor.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/CloudColor.imageset/sky.png create mode 100644 Kiwix-iOS/Assets.xcassets/Cross.imageset/multiply.png create mode 100644 Kiwix-iOS/Assets.xcassets/LanguageFilter.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/LanguageFilter.imageset/Filter.png create mode 100644 Kiwix-iOS/Assets.xcassets/Library.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/Library.imageset/Library.png create mode 100644 Kiwix-iOS/Assets.xcassets/LocalCellAccessory.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/LocalCellAccessory.imageset/close42.png create mode 100644 Kiwix-iOS/Assets.xcassets/Refresh.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/Refresh.imageset/update23.png create mode 100644 Kiwix-iOS/Assets.xcassets/Star.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/Star.imageset/stars64 copy 2.png create mode 100644 Kiwix-iOS/Assets.xcassets/StarHighlighted.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/StarHighlighted.imageset/stars64 copy 3.png create mode 100644 Kiwix-iOS/Assets.xcassets/StarRemoved.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/StarRemoved.imageset/star.png create mode 100644 Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/Contents.json create mode 100644 Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/star-1.png diff --git a/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..b22f5b622 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,106 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-Small@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-Small@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-60@3x.png", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-Small.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-Small@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-40.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-76.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-83.5@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-40.png b/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-40.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9a229f1f394bf0b4b7cf53ddd0c82a1d1b428f GIT binary patch literal 1655 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 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-40@3x.png b/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..779166f993d7947ca5f4d4221f88f65bf13c33a1 GIT binary patch literal 5504 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 W06cL_r|HT70000{N|j4#gKa#o1QURj3@9e(eA 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 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-Small.png b/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-Small.png new file mode 100644 index 0000000000000000000000000000000000000000..c7d63bf84805361f95b6cb2bdfa00f81ee631172 GIT binary patch literal 1093 zcmV-L1iJf)P)4HUW&aT7|5(BP_|Kf$aN=}ri4ETsXZi1-6E zqALq+l10eEO%;?<6gNRZ@gpW?=IN$0HzzT%+{)h z<8cfO3|L(u1V};%@%u)wLF)B7N%G5=FMRgw83D8`$8k71I?7V1#AZ=SQET0D-YgbW zDMgZ8Sy`duI0Qf`C0*C`Edw452KnK`2Y&nZjhmaBJUBS8kKP9i3=kt8>*1vQ~;EGWluD5bPH4F-c&e`sikl}e>;n5F5hXf%qht}Xz8 z5Td!Qpp-(rUbjmr1+BFuidwCPa5#*QA3vhIyBkA8L%6)Wgp|_i7!kj$f#WzxCX-lM zS%K@isMqTjJQNDy>C>l(Mx*dN59jCSD3{APJv~LORzp`;7hb%0fmAAmhYueD0Mh9+ z*4NjO&1T_w9)uA8IAcPfwdU^bE`z}!rIfz5nVz0*TZy$=&F+8v_`zba$di*3l4K^6 zvDIwSNH&mzIb2v+@bzLa805^%47Jv*R4Tl^y|sO9dU0=WkI$b!w?;mG{Ft+|vn0t> zD#fX(DIbQ922HiSdGm$<`2PKSX0ut2jg7TfYg(dQE;Aes`-;x&-@SWBl8ndW{QC8) zEvy#q)mk&3&l3QTj*eKVR2YxPsg$x_HX1lPJ4*ocJkQ5ij^i*C3i0CNg4^5MOr=ux zJ0EDH2fe+$TwGkFQi`!yjGsPzvN}pB3qCS3;$x>~dNe(2@=TH~|3ykENGXv_Cb71* z1}P;1fdD2ZCNMcUiA*K~DW$E%2M-?jE3-*F&jSGT^z`_8&?lyucXoCNfb;Y7TwPt| zqeqYU>eVZbkB@VCdD(_{d3o6uoFNQD6p=`T*VorAl-L4l!nU=w#gUN_Mj{c$VlmFl z%y55ypVexWg+hVVYSo50kw~<#nCrUS*w|<(z>c7qOom5CM^s92X=#b+beiYq=Pmiy zTC-lSb8c>qgM)+Y@9*c!moJ&m=Y5gu2x@xo`}gmxR;%{BTrTtG=BDjKMjG$h>D@V) zHS@04+RjbwbPSaWA?)nbZf0r=%3s4)yWgD*xKHn1PyY}3D--@tqq@62GUsAj00000 LNkvXXu0mjfecTO6 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/Kiwix-iOS/Assets-old.xcassets/AppIcon.appiconset/Icon-Small@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c35e4d958fb419adcdf31d2715d0bcd31d27c32f GIT binary patch literal 2472 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 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkAdded.imageset/BookmarkAdded.png b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkAdded.imageset/BookmarkAdded.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkAdded.imageset/BookmarkAdded.png rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkAdded.imageset/BookmarkAdded.png diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkAdded.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkAdded.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkAdded.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkAdded.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkColor.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkColor.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkColor.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkColor.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkColor.imageset/favorite.png b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkColor.imageset/favorite.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkColor.imageset/favorite.png rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkColor.imageset/favorite.png diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkRemoved.imageset/BookmarkRemoved.png b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkRemoved.imageset/BookmarkRemoved.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkRemoved.imageset/BookmarkRemoved.png rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkRemoved.imageset/BookmarkRemoved.png diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkRemoved.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkRemoved.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/BookmarkRemoved.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/BookmarkRemoved.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/Star.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/Star.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/Star.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/Star.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/Star.imageset/stars64 copy 2.png b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/Star.imageset/stars64 copy 2.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/Star.imageset/stars64 copy 2.png rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/Star.imageset/stars64 copy 2.png diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/StarHighlighted.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarHighlighted.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/StarHighlighted.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarHighlighted.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/StarHighlighted.imageset/stars64 copy 3.png b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarHighlighted.imageset/stars64 copy 3.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/StarHighlighted.imageset/stars64 copy 3.png rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarHighlighted.imageset/stars64 copy 3.png diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/StarRemoved.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarRemoved.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/StarRemoved.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarRemoved.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/StarRemoved.imageset/star.png b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarRemoved.imageset/star.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/StarRemoved.imageset/star.png rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarRemoved.imageset/star.png diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/StarShortcut.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarShortcut.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/StarShortcut.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarShortcut.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Bookmarks/StarShortcut.imageset/star-1.png b/Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarShortcut.imageset/star-1.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Bookmarks/StarShortcut.imageset/star-1.png rename to Kiwix-iOS/Assets-old.xcassets/Bookmarks/StarShortcut.imageset/star-1.png diff --git a/Kiwix-iOS/Assets-old.xcassets/CloudCellAccessory.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/CloudCellAccessory.imageset/Contents.json new file mode 100644 index 000000000..9717577f8 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/CloudCellAccessory.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "downarrows11.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/CloudCellAccessory.imageset/downarrows11.png b/Kiwix-iOS/Assets-old.xcassets/CloudCellAccessory.imageset/downarrows11.png new file mode 100644 index 0000000000000000000000000000000000000000..47a954d04d91a6636ddf8540b8e941391f00ee5d GIT binary patch literal 1201 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFfbN@Fr%39ftf%-$r9IylHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@~py#RGgo zT>t<74^%%2&_bZ>+6`5pP)tdXUoZnBGZ#0HfUuObjI6w>nx4LinYo3fm9>qnoxOvj zlZ&gnmycg?WL$hwa!N*KPC;==O+#BpS8w0^B`a2M*tBiO?!EgCoIZ2z>a`nBU%dMG z>GPMb-@gC&`Rn(ezyB5qCI&DtFfH+PaSVw#ymoqaypW?vJHLdaLYBzZ&S|QX*f`^M zE)8&q$=#`|YIFa8@fRk=Gc#Gs=1xB|@A>gLum5*s^yyFAb!z(TWjA%6uMaYuzoz8R z$wfz-lSL>0OI>^2Z*{UrdW>ys^r1VmGko{uiyFPGFcIlGc6sKZFWXznC;oMmZ8+w7 z!}$MZ^_q(e3+fWG_XRS(h|gQ4XRiO7VJh$5y@lL8MT~cA70j9Pc<=uGD4>yh^Y78M zLIyTr)%x5K?%i`rQWzs!_4i(Pu-;_hGtsQz?~DnoSqD=;sYEbu>c7W-XN~U6O!EWv zbp~w#(a~1n*#5JSHS#ZMvTh7|K=W?siy8eVaNAO?xI=S=N;bpOpAT3=N-R=@)5EEFAlHl z=m>cj6vlo+HN@5BPx6ftrW-9A<6S0Q5Kw2xbO>_kDtO3K!00MCpEWVP!63q})A96U zo(GwZK0yHj=?t0p=?ZZjCmc71rgRI6u| zi_xy&Ln0e4vwq%cG;zwxJ-7F(-(g-9YjA%>aAd5{?`F$@Z`<12Jk#`(8xFR!HXlvfQp?KryW4H{-2&U4#`bzL>&hO-&U;<*?@z^c zVTq`n7WxKvyk)*Co!)w;Sl{HXckK71+gtCH?=P@9c1p-W aumAN8Ur5U3uGW7B$||0&elF{r5}E+MOqo^y literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/CloudRound.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/CloudRound.imageset/Contents.json new file mode 100644 index 000000000..ba4722840 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/CloudRound.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "cloud.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/CloudRound.imageset/cloud.png b/Kiwix-iOS/Assets-old.xcassets/CloudRound.imageset/cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..7f3a85aba075b1f87f21782d89b2993c7f43b7d0 GIT binary patch literal 20565 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 P_mgpUbaN=Tr?UPB+qBp3 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/Compass.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Compass.imageset/Contents.json new file mode 100644 index 000000000..0a79bf165 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/Compass.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "compass.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/Compass.imageset/compass.png b/Kiwix-iOS/Assets-old.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/Library/Cloud/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Contents.json diff --git a/Kiwix-iOS/Assets-old.xcassets/Cross.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Cross.imageset/Contents.json new file mode 100644 index 000000000..dbb51abf4 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/Cross.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "close copy.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/Cross.imageset/close copy.png b/Kiwix-iOS/Assets-old.xcassets/Cross.imageset/close copy.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Cross.imageset/close copy.png rename to Kiwix-iOS/Assets-old.xcassets/Cross.imageset/close copy.png diff --git a/Kiwix-iOS/Assets-old.xcassets/DownArrow.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/DownArrow.imageset/Contents.json new file mode 100644 index 000000000..72eb496da --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/DownArrow.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "DownArrow.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/DownArrow.imageset/DownArrow.png b/Kiwix-iOS/Assets-old.xcassets/DownArrow.imageset/DownArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..847bc0176e02b6e038e4f02ea4b88074a0ce05c3 GIT binary patch literal 471 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFfe`tVa79mPfGv=B}-f*N`mv#O3D+9QW?t2%k?tzvWt@w3sUv+i_&MmvylQS@(%C` zasB`QKafckaDB}-phFlWN`m}?85nu^1tn!wb&WjZCQO>PcI&t#~*+r6kO?f9^-`R;E1u5wwE|CIrMe=Yd^RPoq( u{=zz|BUKDv9r#T5X=tD3SsC(5-j-3&#N9uZW&1Bskb1iMxvX6rS)I=z9B-AirP+MkZz!c5Yq)K@o9D83k2!LvsrUXAj?i(D;PB{L-f8 zmX3*&rp;fza^2=_+js2VfAsi;8+YzLefQzxm+wD+{XMYQZy_)sojhF}Ln02py>z_j zkby{RqF`12vhNoTE-W|r|9gL^m>Nq{kLVun8nLK~lKmg=C@bE%p>i$bhzw)!46B*_ zOfIqvoDD79I~urm9I$6&^3+z444A3^?jp01!h+5ES`5VrU%qkd>227_WWe&mhDo+z zA=3myhE?{BS`8BeBb`_u#Oz?_N^j_j;?-?%{w3xi&k)sRTlI@!_78J``wU-fSLq+L zXO3Xm-|&Db;aPaS_e9eJH?o=T86L3uH2eCDTTCUs3%ED@Kz~&9O{<7c@<`nlpDJ^QKMl+4s(wrC1+sMO(!+T=L}Og6pTe+&~o{0m|WKj3-f;>|ySU*<5{ k3a)xBukXITy+!&XXIb!$=L(N>UxJdAr>mdKI;Vst00iRJkN^Mx literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryPause.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryPause.imageset/Contents.json new file mode 100644 index 000000000..2c94375f5 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryPause.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Pause.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryPause.imageset/Pause.png b/Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryPause.imageset/Pause.png new file mode 100644 index 0000000000000000000000000000000000000000..54be4bef4c52c94f445cde5ed00b20121dc064bb GIT binary patch literal 1241 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjQh zMV&yHF;c{&0VpV0;u=vBoS#-wo>-L1P+nfHmzkGcoSayYs+V7sKKq@G6axdJb%0NZ z>;M1%f$C`tSQr?92c|Ie7&Ybq!4&U2_X78+!*=FCRbufWVOOh{));q?C-zyn>R7 zy87nMuHL@>iIb)+Sh#4(@(o+I?cI0a^w|p+FJHZJ=kC3yuin0U|MAo3uiw7^`1$M4 z-+$sQyMd9-G{@7$F(l&f+VJY+OAb8tOU`tzu$XC8v!FDz=758oU4fCv6J0K00ms7G z>+b&-_LyW;b;;@Wn}0jK-+ju~KlxO#?bbf3y!PnD_^nBHE8P}n8O5*h z75@`pgFB*{AB`$0nZdpYrr>!!^Tg{omJY-JbuZzWU+j ze+~K<&HLU&zqk~?bZ=qW;eUP7GY#ji(o>eWZ+|B;cj;W`$MVzO`TudNm^=3{uhq}_ za!E_}Pug_v@)V)WpiQnVZ^Db7y>2lu`OW;(-?@-&!3EtYwg0MrTj$zsH^}^SX7%3} z|C1yCm*3m7x87~V`?$MPavHC_IhQ-rX-|*J|1T-u>f)u2WLHS>pS>+9;wf3z_kO$n z&wl=`zh*zW(7WHEW~vQWZIQ!!)%Fa|pOKR`zE}D<Dc}}3@MFTfwXZg4aBpW=#Ixs@&cEb8 zeY@E^lDF_*j9upVo#CM7OFiyj-yQ4%rU_}TjLQ~@Hz*l!FJcP5$L%0DL-b;c=1W!u z&NIti99&Yx7|?iASa`;wIEFy literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryResume.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryResume.imageset/Contents.json new file mode 100644 index 000000000..6af56e75a --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryResume.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Resume.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryResume.imageset/Resume.png b/Kiwix-iOS/Assets-old.xcassets/DownloadCellAccessoryResume.imageset/Resume.png new file mode 100644 index 0000000000000000000000000000000000000000..119c3c3de906fef68ee56edbf93dbdc1cbd21dd8 GIT binary patch literal 1310 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFvwPcFk}1g6p$v#64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq!<_&eFJ<# zT>t<74^%%2s1gGC9p>dggYrs({DK)6nV8u*xVU+E`Gv(KB&DQfW69DL>o;uPx^2hqJ$v`W!QCA3l2e{Kc!+Z$Ewh^7Y&IA3uNn{`*f|?ZA8n2BwpqE{-7)hu2QO z=^PX&aLm16@tr{D6+XH=y3-vdF>#sbUeO3XsM}%S`sMq7`)>uEdIjfW8!By#Ki{oR z`+2UX!-?%#_~Mg3>q1VYPP%yYCu5y0ZW+r6JfM(w)##%#9e!Kf$9VU>JWjD&J*zTM4;{1z2HD}417>G}T({sevgenYdg zzpcP>o%QXj|L$k6kKA)hx9tCXo2!q+H{8x+)Scx2y0nbtz@)!r@k|d+T%FK3Mfi}% zOXG{>d;xPym<%FWE#39PBN zQ!-G=h2fpMONt~z^S`gmN7J<$G8v}1rbsK~CoBp*ZY?_T8RIrrwtR*~UJQJqFFTp; z@SI{|FwSB)b&SP?`9RYeCXrY*h7TVb1^*_yr1Vw_lu9~m? zKZDJ~i%lVql_B13_SeFOo+k{4t}%$rH+gxO!BUg4C5Pd|=KX>4Od2QiZ!_$-X=A9| z9loO~v8L5_w&Neer5umgqcfk>uGi|#e=8DH=ojmeZRTZZoE3EHyzcCiE4WI}K3N&D z<@3t(d*-GdpA*1iz0pr&zRQ!XU6y4L>7 zPTh>ZvpYK0Z2!MuO?QXKf7jjqw_W$ITYIZA=D+F2-%IvB|GPwP(avvdJh9Dhwi`cs z^Sb>_(`Uui7Ys^%Yx^DF<8}GO-WMeoaw^{^opZYz@xA?R-|@fa#QXHt*v!?Box8p^ mHp0d_zIOM98tdr)|Cw%I{>!f*8M+pfFFjrTT-G@yGywp~qQ!Fn literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/DownloadColor.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/DownloadColor.imageset/Contents.json new file mode 100644 index 000000000..950086ee7 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/DownloadColor.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "arrows.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/DownloadColor.imageset/arrows.png b/Kiwix-iOS/Assets-old.xcassets/DownloadColor.imageset/arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..808208dbbe1feb39bd1877f418392ae9b59fabd2 GIT binary patch literal 9807 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 aK`&fOuzejjn)d6jBZ~J_AA` literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/GeoPinRound.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/GeoPinRound.imageset/Contents.json new file mode 100644 index 000000000..9fc8426a2 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/GeoPinRound.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "placeholder.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/GeoPinRound.imageset/placeholder.png b/Kiwix-iOS/Assets-old.xcassets/GeoPinRound.imageset/placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3e098188a19f5a33c93887aa8fd1f93a13a9f3 GIT binary patch literal 4175 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 S*Uz4RpnJgcyqV(DCY@~pSUIqAs zxc>kDAIKaDpwsc!WS~ENOM?7@85o(E**LkldHDrI#l&S4v~>&&Ev?;r1ES*Mlae!Y z3TkQ_+d8|tdwTn)&7HSk$%ajvckSMH=lyXohgn!0Yc>%nj7?>_N- z4k+uHR%ljo>ff^b_w)FpdW-Dh^R}=R|33b&_u`*jd+%GUT6TE-{`SjPFV-!sUAx`i zcdhN_q(ggWXq;PfHPb7-em7e}WY?8LWp?5LRkogZ(pH5}(|{VU8c zdCAR_Cpj7X^H^X1uMS_n?&YfV+UD1P7_OY}m~z^R!M)C7Eu&n_?)xhqeP>K~yQBNH zro-K>Ur)cUzc0d7+VC>bW(#B0y7&COiN75SyW|{xE7UQn<^A8w{$tIjCoBj0UIobC z(0J#st#Fd}!u|bgbR2y5aCq=4?6$rr5pirU=aK0LZhVU3TcC1}WeLj!VZn)d2HjPn z9p@U>b$H}(iyU3uAkvuY;&c*w4-3=@QcWE_NFBkT`t}%b!zdyE*u3z7NF586l z66YERqt;C`V>M>WO`dr-*~m8Cc=z)hFO9S^&ZAQ<_1w@rJ0Ya^hUe7@*L?RZD|JpZ zEDVVFvh?hM#LUa$;mqwvL*ws#wK%yop7;I#&uDC?>SOlb`4K4p Ndb;|#taD0e0szpFgYy6Y literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/History_filled.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/History_filled.imageset/Contents.json new file mode 100644 index 000000000..df2fa0c05 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/History_filled.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "History_filled.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/History_filled.imageset/History_filled.png b/Kiwix-iOS/Assets-old.xcassets/History_filled.imageset/History_filled.png new file mode 100644 index 0000000000000000000000000000000000000000..45c0954120b58258dcffe426c8140074fee39a53 GIT binary patch literal 2518 zcmV;{2`To8P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv00000008+zyMF)x010qNS#tmY3labT3lag+-G2N400}xtL_t(|+U1*lkXKb1 z$3OSpXOZP)x8-dWfecV0l2{-$o6rafTOE8O#0FWLa3XQWrWqWy7oAF)Da$bA!dB8urfpoI+7O)WT za-DdtHef37J>auxt~(991MC6b1`ea@-DU_~fZBv|;3KG=7!3?eGj0v=Ens7=g2)se za6hS4y#ZJQd<7T-NCxA(z$l;!SPdLYai6om4}gBz5XnXZE(U%D%uLe17gzy20~`n& zMPwu}7MKJ~0Qy_MI|J+jwgNkV1HSM3rtc!)Cg7{)w{dtCxC321x(y#kRXOfS90C>t zB@xmUBJvFp*(@SWB9iE0X%&&}BJv{69BNqOmdxAoMSco!GUg_4pq?EfGFU`@(T&9I^1O(QGxHk(ybv?LR?@FdX>k#1 z$n3#40D}$rt3+f+CIsy9vJ}E`5eZej7>fCUTXDS4&0Sa03L9k)pi8kZ~#1t`t`jPeSx2f zND=TuG_VrIy;v@|Er9ER$yVEUfjSYH4%}I2hF!qbz&$`S@SxRq3F=BG6~H3v|Nj6_ z8i{_t(9ANxgCa5~) z5DH)zoujUQHuY@cm&@}3UoiDrt9=Z{sSAl!03V24a2j~tsQ(RxW|0G~5s{(5KhR)F zh$75t7Ye}MG3^HqqFc>gACFIg67=CVqV91N6H*Ca7ivMr65~FeX9)codpVpK6~JXy z=XO(1D)j90fRLN50mGvLu=n$aO+B&Dv(E!Yn7YntFM)F&QK{A0VCt-5?U};&{hW`w zM3Npm^f7g#)!r{E0DE`WX6m3P1h8Pig4cnk(QRucNVK-Lmabd3ZhC!v{Xox)4RD2H zwp#5)Q2`|TQIBBd%9YhXb+*6Xv}x0f%F4<$&CSgNQiRrGIfYlZS?!@p<~@JFaU6<@ ziq7V9%xTl6t)D!3^3EWLRoIY&t>x`e0oddpo=0oA&&S1~;GA^#`4h9A- zU%q_o!i5W;s;#XZo5T_O!PX(pYoaaw@a&^X{Yt8aT$0B@lC<`4sb z8NTng1Apxf0rU|5<@^3Y;7as?hB%8J^88-_@6!1-s5JH3LbJ#LzccksbX?N+1OJW+ z0N@YSk3Rzp0XD}7=X^jtdbU{%eBSEYfF7ZD5WsV&!3!}6m}6dp6@_M#1)lYN{}7tn zFxu*SI{YK577iK*oEB-@2}~4`KB&?7V4+!c5$!;Q@B43~(V$O8`fAZ2NgH(3fCTV! zYoKw!T;KQKqw^s{Z^jdb{7j2Hz>`E=e|rt-gIdS&k+ywCVhtj)9<>d<8T)|AzVDv~ zUP5yjLmWZ#5Kn~-_SWePdj1#1htOOB(44Yhe|zI0%9P=#p+5?7J||PdWjB9*Xv-qX8*15?mbw!3I|&57*E;@O$76-}eJ_ ziL>q0Dm16L6H;x(YS1I3;gPmW(3N3L5Ckvu5+STI zU1l{V!XhGH5|QQ}%n^*1N6hJ!W5~y4jb53ngl7<+75+EO217)qh{%gQNPMS=ghzHI zz;9#b7oguUNq(}&1Oj<-7O*`B6GM7cqPdk-XoIy&=q78mYIO2o>nC3e+_sHO-iUY!nn}m7E@N7cmfcoYWsS9YD9y z*P}i}rYJ!T@Z%)^Kq4%^Mw2`;My`RmS->MC*M<;>(dg_JQy)doAH!_U@S~|==-#~o zJ=GnNX53ofAqwo87o!GgH$C^++(F=*bUxHACsCxBvhE literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/LeftArrow.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/LeftArrow.imageset/Contents.json new file mode 100644 index 000000000..a64ecdc1a --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/LeftArrow.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LeftArrow.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/LeftArrow.imageset/LeftArrow.png b/Kiwix-iOS/Assets-old.xcassets/LeftArrow.imageset/LeftArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..9c897d7a4fd942d0a1c3943657834c49f7918504 GIT binary patch literal 517 zcmV+g0{Z=lP)cMNO9nRgK3)3q)n^r77}S4*o%*Y>}7G#Dj^}tCbqDf z)`n@rVGi~pzeBC2$;Y%Gj_)t<&cX8wo`Mehmw}>oCj;9|8uYnSfgRo{X{l(CAJ}Ea z8qiesB|EU!8@&L2*yCGfplr%2VNS(-USPkMRtODMO|k-qJXaJxI;cffpx?M2;e(oA zWCaF2)-6oy^M|a!N%wULuN~1QD=_4?g7CtC1+oIeZVEhg+#*?lOGX7AI&F!pz=$gX zcb&CNR^Yk|0%L|DD=_Aqz%`f23KZONM&POuvI1QmI3aM+4YC5=o){1~?-p5s9?u*W zmJPW_R-kA?O;~cuBeDW3y;2nx9Wzc=V6`dxgat=UkQL}PZMV?YZ<4IQS~GSEzx8=b zR-oj)?ZQtrb+Q8M)NK`74){b?V7-3C;8R4ZXM!1Z2OcxCgDR$kkAap~2qm)HITIY+8NTPBjT00000NkvXX Hu0mjfsHNkq literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/Cloud.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/Cloud.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/Cloud.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/Cloud.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/Cloud.imageset/icloud.png b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/Cloud.imageset/icloud.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/Cloud.imageset/icloud.png rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/Cloud.imageset/icloud.png diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/CloudColor.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/CloudColor.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/CloudColor.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/CloudColor.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/CloudColor.imageset/sky.png b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/CloudColor.imageset/sky.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/CloudColor.imageset/sky.png rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/CloudColor.imageset/sky.png diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/CloudFilled.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/CloudFilled.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/CloudFilled.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/CloudFilled.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/CloudFilled.imageset/icloud-filled.png b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/CloudFilled.imageset/icloud-filled.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/CloudFilled.imageset/icloud-filled.png rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/CloudFilled.imageset/icloud-filled.png diff --git a/Kiwix-iOS/Assets.xcassets/Library/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/LanguageFilter.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/LanguageFilter.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/LanguageFilter.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/LanguageFilter.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/LanguageFilter.imageset/Filter.png b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/LanguageFilter.imageset/Filter.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/LanguageFilter.imageset/Filter.png rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/LanguageFilter.imageset/Filter.png diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/Refresh.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/Refresh.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/Refresh.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/Refresh.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Library/Cloud/Refresh.imageset/update23.png b/Kiwix-iOS/Assets-old.xcassets/Library/Cloud/Refresh.imageset/update23.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Cloud/Refresh.imageset/update23.png rename to Kiwix-iOS/Assets-old.xcassets/Library/Cloud/Refresh.imageset/update23.png diff --git a/Kiwix-iOS/Assets.xcassets/SearchScopeControl/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Library/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/SearchScopeControl/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Library/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Library/Library.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Library/Library.imageset/Contents.json similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Library.imageset/Contents.json rename to Kiwix-iOS/Assets-old.xcassets/Library/Library.imageset/Contents.json diff --git a/Kiwix-iOS/Assets.xcassets/Library/Library.imageset/Library.png b/Kiwix-iOS/Assets-old.xcassets/Library/Library.imageset/Library.png similarity index 100% rename from Kiwix-iOS/Assets.xcassets/Library/Library.imageset/Library.png rename to Kiwix-iOS/Assets-old.xcassets/Library/Library.imageset/Library.png diff --git a/Kiwix-iOS/Assets-old.xcassets/LocalCellAccessory.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/LocalCellAccessory.imageset/Contents.json new file mode 100644 index 000000000..6bab5770e --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/LocalCellAccessory.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "close42.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/LocalCellAccessory.imageset/close42.png b/Kiwix-iOS/Assets-old.xcassets/LocalCellAccessory.imageset/close42.png new file mode 100644 index 0000000000000000000000000000000000000000..6ff2cd08dc7e9556754335ba4028ecb9048dbc4c GIT binary patch literal 1073 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFff8K{QZfn( zi%Ke+n!Eb?XDwO2Ve7Wtd-feTar)w=t2gdEef8<z!`9B=Jnbo@T{3+~%1zxPO^eQJ9oCh)$)}yp_+a55p2cTAElmFLrJ}y_ zibi_y#{!Far>03S{(HOdmUx}rjo9GkORc}3EHVk$z4_oy$$C@vgpX1e=eos-Gn`rP z^W(W_LzbJb_#$7{4OQ2w*Yi23KTJf+Zi`_viooQ!Y1*j zifzTbN$Wxz=Igf|b9la`8W%B%4^c*0km_4bSokvoc_f|bWt zD=u&F|Gt(nKwzR?K#_dxdRwU?t^mpJYlSX|a_Tes|D9yLy-oIB@{|~c(;HGgNR=;e z>=&10l+2wr5J?tSt>|`ZW8k7f9+yE>NviSo$<7 zjPX>@bdd|wIR(Twvl+)dI^ZI6;L7g#Q{>|gH9TIeAnwxG&$-hre z>(=pu?C-BR_{U!|aot+}<8XO)#_R4?%hvpVU3;g>w(Re{eOIQJ{yvs;_tu)(t81&b z%Ne|Jm-(%Dy6Vhkd6T#9vA+{Bjh7Z?5mNkFa?ge&0S~pMUiK{R~YU VOh5cM13rQ>tEa1<%Q~loCIGFPiS7UZ literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/Logo.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Logo.imageset/Contents.json new file mode 100644 index 000000000..de424f81d --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/Logo.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Kiwix_logo_instaler-2.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/Logo.imageset/Kiwix_logo_instaler-2.png b/Kiwix-iOS/Assets-old.xcassets/Logo.imageset/Kiwix_logo_instaler-2.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd07160fc381e38527a999a3d8f4ef257424db7 GIT binary patch literal 87050 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

1Fo@yQJO+jG3F5ZVzwo^b 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 NGBiJ5q3`m~{{dsKWzGNq literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/MagnifyGlass.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/MagnifyGlass.imageset/Contents.json new file mode 100644 index 000000000..679870066 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/MagnifyGlass.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "magnifying-glass-2.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/MagnifyGlass.imageset/magnifying-glass-2.png b/Kiwix-iOS/Assets-old.xcassets/MagnifyGlass.imageset/magnifying-glass-2.png new file mode 100644 index 0000000000000000000000000000000000000000..be4a58a3152ffae1bc523d7b0b04530115c5fba0 GIT binary patch literal 1370 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFvxm?Fk@fC_7^}w$r9IylHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@`?%7;6K3 zLR|m<{|{6@3I-$uik*ywfEL%41o;IsFfy~Svaxe;a&hzW@e2xxNl41bDJbgb>ggL8 z8kw3~S~)tqy88zOhlIu@CMBn)=j7()7Z#P4S60>3);Bgax3qQi^!D{nm^gXLv{`fK zEnK{0>GBmDx9r%tYtMm0M^9Y3a`oEH+jk#5e)8=3ilFzi8%ar`rCLRM}gzvKH34w0=-JQ%JR%dOq4u7avHcCWp4=xWS%(5 zXTpUEzi)rtTwMO(?z^|QYOAjA`E&M6`SiOtcQPtYm1Gy+UbgwES6;rg$)(13nPK^x zv`lV>R;_w2_tJlHc+;t@)pzH-jOE_Xx+qjRZQh^l=}cEoIlrm7zjZ<4*PCK*zqrr# zy(n(2&DdXUHOnGjNLcOcpB|YX#W!!Nom|W8y?oQ-1;NY;>+1zW?(F$Ec~9?>#(%$; z&hR}{SbkI`zoqKmqn}spCj6b}J@LV!JNql@_s`iP8Yix}$YotS>xX}p&i0GzHttJ4 z@=Nsf`@PppdmYbgo%^7>Dc^T@fRn&fr9Ji)_Dj`oF(}J8-(B{pg7NRn&{vZMo`+jb z3aD2TTVUJI%pV%v{5dvl|2D}RPV1fISZq+boJcI4#r{B*>DvaW zr;KMFURdOGw{6;K=7{49Ganh-=09Z+DaeRe*yqs5x8bwwlYKWB-zIeOaxgrY8RVb* z^LTRDzvg6_iX}xpj6amQ4g9h-Y)#)-B%e{@_g}D7Fs(Jzq5dKp%SvC-(r(-TbHn}x z$lm%@Jjs};;dJ5GoJCf6i!juk{D7ZgK|0VT#igLjkne7@a=Td^tygc^j z$cqi-d3znCZfLMLyF4)EV%+KVWsX;0dqQ7e+S%8pr%zk)Gu{j?Jv3of(TVx0YK%Ak zw3lD*|MTIWj-?-y)82O=$3 z2Yv)L06Fgk0Ba-Q>wz3_JdFfkvo?08*8(Eo&j9t>m>h7@BH`)YhDQ`2fQ}-2f&}k+~SP@ zpv?k*sub{Aj}L*ryb}-se-ap7DtN8ec;JFJ0~p9E$~Ntgx4}pvRi-VzW2-(HFEz+B)Lpds9E z0Pa{Md>KB^stEWI+N8^X-+(o)0rS9r47>^%?gGQY$7ccm8jKHs*)aHbw?hVej^LA( z0RICsT!Y34_}O5YqdoU|C`Et%U`=>p7^rq&wTL{`9{U0q75=S&rTAMzqxMClo8Sl4 zd)o6;Yk;4C-+`?_vjGnQbliT$l!#ma8i9QTul#L8MWhGV=rmb|6-sCs*mt@{$cL&5 za2>#PRRy>X;JT^;TnBJnRROL8xGwXvb6H9$r3kJlwE@HO41Wde7Lh$=4@O1;fM#HK zit+1}QjH?gQKmd^Dyz4^ssfJ5WZiI90t)GqNj6s}!Fmx<`bKcYH}iV${|i(FxDMdD zssdaGa9vdat^>HPLOu$wQ%cQBdCdF*`YcyU{hIQa*{QoExZ1LU!K*Wi-3Be4Cs_Yi z>OPSRBL=o4Z-LvXt;Sa`!LoO=`Un<0ma2r{dSISW$*#HWApU;8q+1`bDW=bsa7?j% zUI5#ZuqD2ARwnVIVc>n+a M07*qoM6N<$f)Ft4zW@LL literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/MainPage_filled.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/MainPage_filled.imageset/Contents.json new file mode 100644 index 000000000..de5932e74 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/MainPage_filled.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "canvas1-small.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/MainPage_filled.imageset/canvas1-small.png b/Kiwix-iOS/Assets-old.xcassets/MainPage_filled.imageset/canvas1-small.png new file mode 100644 index 0000000000000000000000000000000000000000..923fd5b1c740fa14654097086c9ded7ce0cf75b7 GIT binary patch literal 1471 zcmeAS@N?(olHy`uVBq!ia0vp^u0ZU-!3-p;=XtFFQY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI{Ym4$x*0#KW-Tk9n^#&^w8%SWh5y&wrI|j- zYZGHl7Dla)*!(AK%Zq@W3j%*J?|8;&z_r_G-d6ryPfsvi<~jN30-w;{aDnZz-1TA? zS+2Acm(*UB6J)*iP5#{n&U>e#)!4Xq03FJh3rI?GeOQwQj7<0eu*+X?&2gdZ*|j|?hCiG8DB{p zHaER5p%<{SMUgx4Vp7DRb7`8kvCEeIFo`=^RQ{JM!t-(H>fYm_#}ax?9)11nb1$EZdyjZ!9Pe<<*4SyTt;x%ic}Dq2&cY}Cl}|}b;fZ-kEQR`S9yk9L>ZnZi7C6Ezkn(fEpRz>}Qtb+! zns0Qf!i!B0os5#50F?t@^l8 ztlVk3NmIpE?c&}~U;hYxzW?Z)v>hvp;jP-wV%Cpt^K@?XdYAHG9aqy0#+%hs-j`3l zl&tiN*;Mt9z@{~`+?Uuq<9OjOGIcq_&h%pnzNd=q&0ZUru~zXuW3`?!eNXf$uW9$b zu6p}*_MzF!zxTRo_Hiz?xH4r+z)2rF*N?&mKSjdVdsP0;Ytrug{+F5gue{B-DOuY> zu0NUD-?Vg|zlo`YWct(1ix&O$etNoo4bMMbRi!Yerls-wFNWlK7?@5G)~xDJcv-%! zq{79()JP}jz|X_6G7IO|tlG3bSP_F$q+Vc)I$ztaD0e0sxe3 Bx!C{! literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/Question.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Question.imageset/Contents.json new file mode 100644 index 000000000..667086494 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/Question.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "round67.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/Question.imageset/round67.png b/Kiwix-iOS/Assets-old.xcassets/Question.imageset/round67.png new file mode 100644 index 0000000000000000000000000000000000000000..52c15edb90b4ad5ddac2aaa1f0e2e9132eacd148 GIT binary patch literal 1393 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFff^eFynVNmqS27$r9IylHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@`?%7+nH< zLR|m<{|{6@3MdJI?rghmp#JQVAirP+MkZz!Hg*nfJ^?`?Q3)AEWffH|ZGA&?OB;I! zM<*9oH+K&&->~q=sOb2Fq~y%3?1GZ=x`x*Fj;@{wlNKyqvV6s=^&2*A-m-1y?!Ei= zA3SvU^tnq{Zrr?c@4@5eFJ8X-@bS~P?>~P2`t$dn!FAybU~u4cI zkz@UjSbbcK*Uy|T(iswR>PqP6pe#=bjYVxMCoK5#`~Uv$iQ+No>DS-h{M?%U%r^bT z%+K>?cXYQr&P-O1UK7%FQ&w4)|8%`)$-@VI>P6)n1ioh9-8WCf&aDR=~Qa+j_sedGR9W){S#lrFJh5p7(5H&(iRFzAkSZR5nI$Ti|o%Zrzhp zS1jjUi`iED>xRpEw>xj1uVN5MyCagu#Srp*OGXBB!=;+lzty*$o6c~9BlFF7MvGUU z>Yl7qX81N&ea8R&l2zw?7y5pdmif-UV(A|N-B9L$dx=Z9t{nRtSh|NTWd0AOGS&$~ z^CvOw*z{SEdBe)UxAW$_xt5d9l#=s@)uL$6{SWt84;;O>;jwBz!>l!VmaJZ@{##v> zmty>|;oick%`9`wl(abw*01<7|K{NjYvLQ9Gfomaso&UiX#Y0h%b$MT`eU0JY!S(z zcXmP~OTf?lOaYNyokyl=F=%JSFz9r3c*t3VJvdms;6k=u759O^3l=`;Mty z>7lj4!UX-s{rWjAECIGN8QvWdV$Tx%`nm3K`R!f&3)};{t~Bge(m1F2P5$Tj_?y!< zALw<~WM6WWVcUG}{rLy@kH0fZIMH{^`Bu*7iyLzptS7Nvy0Bdt`TXB zEPvf+E??JlEb!WCk)=#MyKe2@zwyw=&1^EPTKCwuOx5}A|EQ|rxoDNo=g;L)SN1eL zSN_IOBU$Wt*8NLKa(`cAm$Yr?liCJP72Bz`vI#+v(mwn6HZ*xkp94~dB4-CkU8>~X zK38wS)POIVYiG`R{Z&+a#mq}vJii)F{jyW>?2=W!uYEapf7@|(%Q}6XX*p9*M^_yQ zi`cUC>=eU>>sCkNZhbi#>f#c{7*^V`cgLk&)-CZ_F`2c^$GSey4D&AMQ>ej_^{r`;zO`CTd>Zm1t*_vf_v)#Y*F g;cc%ryW{`sEu0o!{Ps|FJt(Vty85}Sb4q9e02Sc*$N&HU literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/Recent.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Recent.imageset/Contents.json new file mode 100644 index 000000000..3136e40ff --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/Recent.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "counterclockwise-rotation.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/Recent.imageset/counterclockwise-rotation.png b/Kiwix-iOS/Assets-old.xcassets/Recent.imageset/counterclockwise-rotation.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5b3b45d2165df1edadb29b75e50cde89dfe132 GIT binary patch literal 1802 zcmV+l2le=gP)=ki>>@3}tbIijkhNg~n@r~!sssS;>*q~Cxoz-C~Fs-8?$zcc_4 zkwL%|;5Ojm99aDgY{dZbuBvWJK)sHns);0^6qpFS1sn%7g|r2@5y&K_cTD3h#Op1N zvSMHka4;pKUFkdEZlFAM0Dx-mi@pJrT4iH^9eFg|P6vQ#xd0G32Z+cR;3MzfH-Sk& zf8beQYG~tAbO>k!z6ExBX)k8j^aaYjzXO2FfKk9OKw|P=3(Qp2Low^0q8L43G96Lh z4E#y-*EtNV2F3$LU6@mq2z9KUV;LjX4Lr zo`u3keC_HJ=m{BMO@Lk}fx27(2PYW{(2^Kvf%nrH-N+%*nN#dL#fI&BsjO zHa+O?1w9r3RXqaS>nN(iY^Q-93;=+tZp55kZMwbfM~?=;qZN+4@gh>gA07PV}h-?s%Wg>EBzO_r6 zRP_YLA!}1@v51TVUiD>O16+_7&GJjTfQziW+6*w)$~<30YV)I0UTK#juQr3(8QC-> zWn~IME&zsSFpdP9?2}YapnZu;h28l>6H^_0R)REVm2`I=X0A~XYBC=LQ zhNUQ{%#qjJU50=Fb-+#$St%lEtU`eRxGo?oQ&6CdHUJM`{D?LcVS*}li^vNia&Cfh z`#AENGnl(}o9y*6F;dkQRb7f%X&wPwj?@xhCh)z8ED@2j5)gfwBd<9FeC;SmeNs}@ zqpJEeX4AC*6Aoij8892zBO*_V$bcL~UgF4W0+>!`4{D;G+L+$lD&Q$PUYgkHFW_;Y zUl;gqb?|!#;BrSn3s9185IjW(VH}#rLV!4cac=gF$+H*}foAg=3s8aancIb<3ju&n z>GOb>2oJd0hw=M`-b-RGQC;^0r?*vTbW~VTNC14w55XMPPJ{sQRoJiqo_DlqRQ2u# zfq9M!hr2S?QUsy~i1G z*a&u~{T@|xUb^>xxpyKuz+raA;1AXEUefFJT`_(9+?5_qYS$Ry>E4*4&U3dIBQ7Qm*5FnDlygeR; s0puLaD^WWg#f<5lzSO8D{5>`L4=sxhHM9!cxBvhE07*qoM6N<$f_$PK2LJ#7 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/RightArrow.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/RightArrow.imageset/Contents.json new file mode 100644 index 000000000..7af8ad35b --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/RightArrow.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "RightArrow.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/RightArrow.imageset/RightArrow.png b/Kiwix-iOS/Assets-old.xcassets/RightArrow.imageset/RightArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..28e3498f937952e22a5b43f27f00b212dd684320 GIT binary patch literal 592 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 VH79Z2a{wkR22WQ%mvv4FO#mZ9k!}D0 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/Setting.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/Setting.imageset/Contents.json new file mode 100644 index 000000000..30bf882eb --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/Setting.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "settings@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/Setting.imageset/settings@3x.png b/Kiwix-iOS/Assets-old.xcassets/Setting.imageset/settings@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..0f1b7d41a79a1cda1b09bef4559fb8068d52628c GIT binary patch literal 3115 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 FV1gvBq*?#~ literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets-old.xcassets/TableOfContent.imageset/Contents.json b/Kiwix-iOS/Assets-old.xcassets/TableOfContent.imageset/Contents.json new file mode 100644 index 000000000..0de111d91 --- /dev/null +++ b/Kiwix-iOS/Assets-old.xcassets/TableOfContent.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "list-1.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets-old.xcassets/TableOfContent.imageset/list-1.png b/Kiwix-iOS/Assets-old.xcassets/TableOfContent.imageset/list-1.png new file mode 100644 index 0000000000000000000000000000000000000000..34a6fec4c6a0ea165d66e1e121ebb1cca24baeb2 GIT binary patch literal 525 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 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/BookmarkAdded.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/BookmarkAdded.imageset/Contents.json new file mode 100644 index 000000000..27ae825e0 --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/BookmarkAdded.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "BookmarkAdded.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/Contents.json new file mode 100644 index 000000000..f9c5f85d2 --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "favorite.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/favorite.png b/Kiwix-iOS/Assets.xcassets/BookmarkColor.imageset/favorite.png new file mode 100644 index 0000000000000000000000000000000000000000..5db1988cc0c748b238825ac6babf7e71df1a3b01 GIT binary patch literal 4386 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%0D>GWFF<>+)&GP{iCCkKId7Bp`A4@ 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 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/BookmarkRemoved.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/BookmarkRemoved.imageset/Contents.json new file mode 100644 index 000000000..8879ffd26 --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/BookmarkRemoved.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "BookmarkRemoved.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file 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 000000000..e5c10e383 --- /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 000000000..0b165efbf --- /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/Assets.xcassets/Cloud.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Cloud.imageset/Contents.json new file mode 100644 index 000000000..ba4722840 --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/Cloud.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "cloud.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/Cloud.imageset/cloud.png b/Kiwix-iOS/Assets.xcassets/Cloud.imageset/cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..c309acd38840e1bcbfe3a91e90134273cf6c46c4 GIT binary patch literal 1293 zcmV+o1@iidP)&K{Rs~4JC*OOe?S=aA2l`f(VmJ5H0AXW)j^Vw^GALrQOwFpPT3Iv(G(G z&$`~uAJ$;6y&nJXzaD#i-`XL@=>LpTY67Xz6CgE#)aVJ2nm}sw1V~LFHF^T1CXgBv zJK0zWVGeG?JoMoLzAL9AF~;9I*fD553gcJjPYz+9d`;b z#+DMU#MAg4vB`7_k1G#A%G9dyi|~01hUe4!=uas?(@P+Pa4+7(%o;_8@D=vsFDxtz zc0-NwC$T2Rc(5rVokEi%zXE4fkK{ktjJt4Ejk?RR1?LLt|AZxDdIp3L=HpY$&AmE| zwK2wz8f@nVyn&UuSI6-zuEqo$!?!pVV?5Uo$yU(B=T+q2@R|Z*@3!4JI~o*WIGwR*;0erbYYE`Vg2p@c z32H-t3D{RhgeY^mHezB^0$>i_DQNH&5o9`6Ub6ja)aTT&a> zf*5OL4prWs!T_B|MC&F5>(0XJx!$Gk(bB z-Cx4Zxy)@b#`E3b)IG!)hh!nWO59h%;#}sJ-Jz5Oc}H$xNfvadL_YX2o{$${ZVB^q znFC!SlLBAoo@bSizp%WiOJq`DY3}*glIjt^y-Q?LAaC11Np@ZytzPLlv2QSl=yTUBr5sZNnJC&f#O?ZX=I~XC=CwAOcg4KdOiD^`b{o`Fk5zJm{(5I)n0SmLc||3r)~fTViUjQw*9N@ z<&JUZ^fZf}0I3P2Mo)m$1X80XKxzW1(Gwswfz200000NkvXXu0mjf D{;Wu9 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/Contents.json new file mode 100644 index 000000000..9717577f8 --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "downarrows11.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/downarrows11.png b/Kiwix-iOS/Assets.xcassets/CloudCellAccessory.imageset/downarrows11.png new file mode 100644 index 0000000000000000000000000000000000000000..47a954d04d91a6636ddf8540b8e941391f00ee5d GIT binary patch literal 1201 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFfbN@Fr%39ftf%-$r9IylHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@~py#RGgo zT>t<74^%%2&_bZ>+6`5pP)tdXUoZnBGZ#0HfUuObjI6w>nx4LinYo3fm9>qnoxOvj zlZ&gnmycg?WL$hwa!N*KPC;==O+#BpS8w0^B`a2M*tBiO?!EgCoIZ2z>a`nBU%dMG z>GPMb-@gC&`Rn(ezyB5qCI&DtFfH+PaSVw#ymoqaypW?vJHLdaLYBzZ&S|QX*f`^M zE)8&q$=#`|YIFa8@fRk=Gc#Gs=1xB|@A>gLum5*s^yyFAb!z(TWjA%6uMaYuzoz8R z$wfz-lSL>0OI>^2Z*{UrdW>ys^r1VmGko{uiyFPGFcIlGc6sKZFWXznC;oMmZ8+w7 z!}$MZ^_q(e3+fWG_XRS(h|gQ4XRiO7VJh$5y@lL8MT~cA70j9Pc<=uGD4>yh^Y78M zLIyTr)%x5K?%i`rQWzs!_4i(Pu-;_hGtsQz?~DnoSqD=;sYEbu>c7W-XN~U6O!EWv zbp~w#(a~1n*#5JSHS#ZMvTh7|K=W?siy8eVaNAO?xI=S=N;bpOpAT3=N-R=@)5EEFAlHl z=m>cj6vlo+HN@5BPx6ftrW-9A<6S0Q5Kw2xbO>_kDtO3K!00MCpEWVP!63q})A96U zo(GwZK0yHj=?t0p=?ZZjCmc71rgRI6u| zi_xy&Ln0e4vwq%cG;zwxJ-7F(-(g-9YjA%>aAd5{?`F$@Z`<12Jk#`(8xFR!HXlvfQp?KryW4H{-2&U4#`bzL>&hO-&U;<*?@z^c zVTq`n7WxKvyk)*Co!)w;Sl{HXckK71+gtCH?=P@9c1p-W aumAN8Ur5U3uGW7B$||0&elF{r5}E+MOqo^y literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/CloudColor.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/CloudColor.imageset/Contents.json new file mode 100644 index 000000000..76c3f5c6c --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/CloudColor.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "sky.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/CloudColor.imageset/sky.png b/Kiwix-iOS/Assets.xcassets/CloudColor.imageset/sky.png new file mode 100644 index 0000000000000000000000000000000000000000..d0af4d739e5c9ae463d22b0513fb5ef90535f481 GIT binary patch literal 14802 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 SE`)Ia0000{QZfn( zi%Ke+n!Eb?XDwO2Ve7Wtd-feTar)w=t2gdEef8<z!`9B=Jnbo@T{3+~%1zxPO^eQJ9oCh)$)}yp_+a55p2cTAElmFLrJ}y_ zibi_y#{!Far>03S{(HOdmUx}rjo9GkORc}3EHVk$z4_oy$$C@vgpX1e=eos-Gn`rP z^W(W_LzbJb_#$7{4OQ2w*Yi23KTJf+Zi`_viooQ!Y1*j zifzTbN$Wxz=Igf|b9la`8W%B%4^c*0km_4bSokvoc_f|bWt zD=u&F|Gt(nKwzR?K#_dxdRwU?t^mpJYlSX|a_Tes|D9yLy-oIB@{|~c(;HGgNR=;e z>=&10l+2wr5J?tSt>|`ZW8k7f9+yE>NviSo$<7 zjPX>@bdd|wIR(Twvl+)dI^ZI6;L7g#Q{>|gH9TIeAnwxG&$-hre z>(=pu?C-BR_{U!|aot+}<8XO)#_R4?%hvpVU3;g>w(Re{eOIQJ{yvs;_tu)(t81&b z%Ne|Jm-(%Dy6Vhkd6T#9vA+{Bjh7Z?5mNkFa?ge&0S~pMUiK{R~YU VOh5cM13rQ>tEa1<%Q~loCIGFPiS7UZ literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/Refresh.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/Refresh.imageset/Contents.json new file mode 100644 index 000000000..dfae55790 --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/Refresh.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "update23.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/Refresh.imageset/update23.png b/Kiwix-iOS/Assets.xcassets/Refresh.imageset/update23.png new file mode 100644 index 0000000000000000000000000000000000000000..dc7aaca857d60c12f027e7818599ae053d7c6a2e GIT binary patch literal 1853 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 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/Contents.json b/Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/Contents.json new file mode 100644 index 000000000..28bd97d05 --- /dev/null +++ b/Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "star-1.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/star-1.png b/Kiwix-iOS/Assets.xcassets/StarShortcut.imageset/star-1.png new file mode 100644 index 0000000000000000000000000000000000000000..659839f95034cc71d342aacd00a8a4c60b5e1012 GIT binary patch literal 1656 zcmV-;28a2HP)8zm?48Yqa3qNXM~ zB`W%$K@YtI;X@Y;azvwEgrJ}TiFydh0)@cnB_hazvc$`Hqs%M{B`h!F%yH)HVXdS4 ztiAR=d+&4h-dcZHaL(G_?f-5jkz!tkU8rqXI-kfMdXP z+jRnXSW5_|tP1Gi4teb7o-zU{s{+0UW;@+SRCP|#u@qhbBC?V&d4SpWTCwpIT>&EU zH84No@?lk7P-HxXR)B~sCYn6Jd@EBJik<>5H%X>xC@cXYvH<9Iy3YW=Iepz$wh$Cq z0lty#1zt@kn-5eq_Xf-X)Mz;;jHPE{RN)dBof;L~Y73K;z^ zV3^v`Jqe5m$g}~!I5NXP*MFe`wgcky^{VP{^^2+w60QQFh$_f=^gDqeYDe}sfzc1h zjs(s-vO_@Uy<7n=5ngF(M!yPGtpK~7?h)2Te#mk3JAewcBYF(G{f^KX3HxKITAjXLwM>18sDf5&D<9-E`s09`)Q;p)Vn#op+Y0>T=-vdz)4;?SF~#g4&v@E-RUJy?%Z*7y#^EP95p$Euf*w^pkVZj7wgT^E z^jE=5qfl~G^>&C;E!T~zN>E`v;jOCz*MLQ36G}6ZNy1}y0r?kW z$gilYpU}y2OE{C09LYZyLB1bYp2$WDXG`t;PhDm?k$)zFe5!j?TBl3wa_GC!JYFFA zt%Tn-RF~>ht5g=}-7!g+Rsi{Vgpb;*2oeHb!mzX8eMd-Xg2l#xfvN5GbBgf(wJ$=U;u$L4*AHG-;p^*f1dHPN?U@s|r zK76qxLL&*7?tJgZoG#^!KEl($jU_RfSpg^2^Ukl?P}LiR6Ma`yKoR91<*V2VurDsA zIo)L@V4967HL_N~WX!rBL=h`Ml&>~SOsSDI0S&JJBC=3K4v5Hp5t*0LfAdy?jN8#2 zgintXz5M}Z0G|@x%6<$?O=zQ?@G16=Ok6T1V87%1n*=%?zz6vE@zquV-X+1SaNv}q zyT8Z;^f}J=#>hT^Iji#>uSK;Rz-z$$F?K(3bovTOfGt1w=zN<;?mplZ;GY!4-S!vo zJTS^*f2XH<+KWiQ3{RlT1J|oBH2NMI_){ihvH&z>8I25$S#^Ft<(s7l5Y-+^w6KgcfW2LY)}q=9z#k5l$}y z+sLpEXGlc5^>sNSmMv-QrF|HxINz^h*71p|x<}2QA997N4yfuL%+L0A5k8%EW2|d1 zZT1gh{^;~3FedL2PY}}>8_Ol&04b}ml)uj2P52kzB8p9W?w>aR0000 CFBundleVersion - 1.7.992 + 1.7.994 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 0d2dbfa6e..39c7e1266 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.1081 + 1.7.1083 NSExtension NSExtensionMainStoryboard From 09e1b6b0b2515e96d5621ae1ee7415bfd253d495 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Sun, 11 Sep 2016 09:33:07 -0400 Subject: [PATCH 19/21] fixes resume data fix device space fix --- Kiwix-iOS/Info.plist | 4 +- Kiwix-iOS/Model/Network.swift | 73 ++++++++- Kiwix-iOS/Storyboard/Library.storyboard | 141 ++++++++---------- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix.xcodeproj/project.pbxproj | 14 +- Kiwix/Extensions.swift | 8 +- .../Operations/RefreshLibraryOperation.swift | 4 +- 7 files changed, 151 insertions(+), 95 deletions(-) diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 647ae0b22..394baccd7 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.994 + 1.7.774 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS @@ -69,6 +69,8 @@ + NSCalendarsUsageDescription + Kiwix does NOT need to have access your Calendar UIApplicationShortcutItems diff --git a/Kiwix-iOS/Model/Network.swift b/Kiwix-iOS/Model/Network.swift index df3d2e8b2..5115c2189 100644 --- a/Kiwix-iOS/Model/Network.swift +++ b/Kiwix-iOS/Model/Network.swift @@ -66,13 +66,74 @@ class Network: NSObject, NSURLSessionDelegate, NSURLSessionDownloadDelegate, NSU } func resume(book: Book) { - guard let resumeData = FileManager.readResumeData(book) else { - // TODO: Alert - print("Could not resume, data mmissing / damaged") - return + if #available(iOS 10, *) { + func correctResuleData(data: NSData?) -> NSData? { + let kResumeCurrentRequest = "NSURLSessionResumeCurrentRequest" + let kResumeOriginalRequest = "NSURLSessionResumeOriginalRequest" + + guard let data = data, let resumeDictionary = (try? NSPropertyListSerialization.propertyListWithData(data, options: [.MutableContainersAndLeaves], format: nil)) as? NSMutableDictionary else { + return nil + } + + resumeDictionary[kResumeCurrentRequest] = correctFuckingRequestData(resumeDictionary[kResumeCurrentRequest] as? NSData) + resumeDictionary[kResumeOriginalRequest] = correctFuckingRequestData(resumeDictionary[kResumeOriginalRequest] as? NSData) + + let result = try? NSPropertyListSerialization.dataWithPropertyList(resumeDictionary, format: NSPropertyListFormat.XMLFormat_v1_0, options: NSPropertyListWriteOptions()) + return result + } + func correctFuckingRequestData(data: NSData?) -> NSData? { + guard let data = data else { + return nil + } + guard let archive = (try? NSPropertyListSerialization.propertyListWithData(data, options: [.MutableContainersAndLeaves], format: nil)) as? NSMutableDictionary else { + return nil + } + // Rectify weird __nsurlrequest_proto_props objects to $number pattern + var i = 0 + while archive["$objects"]?[1].objectForKey("__nsurlrequest_proto_prop_obj_\(i)") != nil { + let arr = archive["$objects"] as? NSMutableArray + if let dic = arr?[1] as? NSMutableDictionary, let obj = dic["__nsurlrequest_proto_prop_obj_\(i)"] { + dic.setObject(obj, forKey: "$\(i + 3)") + dic.removeObjectForKey("__nsurlrequest_proto_prop_obj_\(i)") + arr?[1] = dic + archive["$objects"] = arr + } + i += 1 + } + if archive["$objects"]?[1]["__nsurlrequest_proto_props"] != nil { + let arr = archive["$objects"] as? NSMutableArray + if let dic = arr?[1] as? NSMutableDictionary, let obj = dic["__nsurlrequest_proto_props"] { + dic.setObject(obj, forKey: "$\(i + 3)") + dic.removeObjectForKey("__nsurlrequest_proto_props") + arr?[1] = dic + archive["$objects"] = arr + } + } + // Rectify weird "NSKeyedArchiveRootObjectKey" top key to NSKeyedArchiveRootObjectKey = "root" + if archive["$top"]?["NSKeyedArchiveRootObjectKey"] != nil { + archive["$top"]?.setObject(archive["$top"]?["NSKeyedArchiveRootObjectKey"], forKey: NSKeyedArchiveRootObjectKey) + archive["$top"]?.removeObjectForKey("NSKeyedArchiveRootObjectKey") + } + // Re-encode archived object + let result = try? NSPropertyListSerialization.dataWithPropertyList(archive, format: NSPropertyListFormat.BinaryFormat_v1_0, options: NSPropertyListWriteOptions()) + return result + } + guard let resumeData = correctResuleData(FileManager.readResumeData(book)) else { + // TODO: Alert + print("Could not resume, data mmissing / damaged") + return + } + let task = session.downloadTaskWithResumeData(resumeData) + startTask(task, book: book) + } else { + guard let resumeData = FileManager.readResumeData(book) else { + // TODO: Alert + print("Could not resume, data mmissing / damaged") + return + } + let task = session.downloadTaskWithResumeData(resumeData) + startTask(task, book: book) } - let task = session.downloadTaskWithResumeData(resumeData) - startTask(task, book: book) } func pause(book: Book) { diff --git a/Kiwix-iOS/Storyboard/Library.storyboard b/Kiwix-iOS/Storyboard/Library.storyboard index 6f749e337..443de606c 100644 --- a/Kiwix-iOS/Storyboard/Library.storyboard +++ b/Kiwix-iOS/Storyboard/Library.storyboard @@ -1,9 +1,10 @@ - - + + - + + @@ -14,7 +15,7 @@ - + @@ -34,48 +35,43 @@ - + - + - + - + - - - + - @@ -140,7 +136,7 @@ - + @@ -165,28 +161,27 @@ - + - + - + - + - CFBundleVersion - 1.7.774 + 1.7.776 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 0a78fa994..76fd6d1bc 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.775 + 1.7.776 NSExtension NSExtensionMainStoryboard From ccb26f6b73adab2354668344347633986fc57fd8 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Sun, 11 Sep 2016 10:01:27 -0400 Subject: [PATCH 21/21] 1.7.1 release --- Kiwix-iOS/iOSExtensions.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kiwix-iOS/iOSExtensions.swift b/Kiwix-iOS/iOSExtensions.swift index bbc77096e..33f79aa01 100644 --- a/Kiwix-iOS/iOSExtensions.swift +++ b/Kiwix-iOS/iOSExtensions.swift @@ -42,7 +42,7 @@ enum BuildStatus { extension UIApplication { class var buildStatus: BuildStatus { get { - return .Beta + return .Release } } } @@ -104,4 +104,4 @@ extension UIAlertController { self.init(title: title, message: message , preferredStyle: style) for action in actions {addAction(action)} } -} \ No newline at end of file +}