diff --git a/Kiwix-iOS/Controller/ControllerRetainer.swift b/Kiwix-iOS/Controller/ControllerRetainer.swift
index f08201fc..acd5aeca 100644
--- a/Kiwix-iOS/Controller/ControllerRetainer.swift
+++ b/Kiwix-iOS/Controller/ControllerRetainer.swift
@@ -1,5 +1,5 @@
//
-// ControllerRetainer.swift
+// Controllers.swift
// Kiwix
//
// Created by Chris Li on 8/31/16.
@@ -8,10 +8,10 @@
import UIKit
-class ControllerRetainer {
- static let shared = ControllerRetainer()
+class Controllers {
+ static let shared = Controllers()
private init() {
- NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ControllerRetainer.removeStrongReference), name: UIApplicationDidReceiveMemoryWarningNotification, object: nil)
+ NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(Controllers.removeStrongReference), name: UIApplicationDidReceiveMemoryWarningNotification, object: nil)
}
deinit {
@@ -27,21 +27,27 @@ class ControllerRetainer {
welcome = nil
}
+ // MARK: - Main
+
+ var main: MainController {
+ return (UIApplication.appDelegate.window?.rootViewController as! UINavigationController).topViewController as! MainController
+ }
+
// MARK: - Bookmark
private var bookmark: UINavigationController?
class var bookmark: UINavigationController {
- let controller = ControllerRetainer.shared.bookmark ?? UIStoryboard(name: "Bookmark", bundle: nil).instantiateInitialViewController() as! UINavigationController
- ControllerRetainer.shared.bookmark = controller
+ let controller = Controllers.shared.bookmark ?? UIStoryboard(name: "Bookmark", bundle: nil).instantiateInitialViewController() as! UINavigationController
+ Controllers.shared.bookmark = controller
return controller
}
private var bookmarkStar: BookmarkHUD?
class var bookmarkStar: BookmarkHUD {
- let controller = ControllerRetainer.shared.bookmarkStar ?? UIStoryboard(name: "Bookmark", bundle: nil).instantiateViewControllerWithIdentifier("BookmarkHUD") as! BookmarkHUD
- ControllerRetainer.shared.bookmarkStar = controller
+ let controller = Controllers.shared.bookmarkStar ?? UIStoryboard(name: "Bookmark", bundle: nil).instantiateViewControllerWithIdentifier("BookmarkHUD") as! BookmarkHUD
+ Controllers.shared.bookmarkStar = controller
return controller
}
@@ -50,8 +56,8 @@ class ControllerRetainer {
private var library: UIViewController?
class var library: UIViewController {
- let controller = ControllerRetainer.shared.library ?? UIStoryboard(name: "Library", bundle: nil).instantiateInitialViewController()!
- ControllerRetainer.shared.library = controller
+ let controller = Controllers.shared.library ?? UIStoryboard(name: "Library", bundle: nil).instantiateInitialViewController()!
+ Controllers.shared.library = controller
return controller
}
@@ -60,8 +66,8 @@ class ControllerRetainer {
private var search: SearchController?
class var search: SearchController {
- let controller = ControllerRetainer.shared.search ?? UIStoryboard(name: "Search", bundle: nil).instantiateInitialViewController() as! SearchController
- ControllerRetainer.shared.search = controller
+ let controller = Controllers.shared.search ?? UIStoryboard(name: "Search", bundle: nil).instantiateInitialViewController() as! SearchController
+ Controllers.shared.search = controller
return controller
}
@@ -70,8 +76,8 @@ class ControllerRetainer {
private var setting: UIViewController?
class var setting: UIViewController {
- let controller = ControllerRetainer.shared.setting ?? UIStoryboard(name: "Setting", bundle: nil).instantiateInitialViewController()!
- ControllerRetainer.shared.setting = controller
+ let controller = Controllers.shared.setting ?? UIStoryboard(name: "Setting", bundle: nil).instantiateInitialViewController()!
+ Controllers.shared.setting = controller
return controller
}
@@ -80,8 +86,8 @@ class ControllerRetainer {
private var welcome: WelcomeController?
class var welcome: WelcomeController {
- let controller = ControllerRetainer.shared.welcome ?? UIStoryboard(name: "Welcome", bundle: nil).instantiateInitialViewController() as! WelcomeController
- ControllerRetainer.shared.welcome = controller
+ let controller = Controllers.shared.welcome ?? UIStoryboard(name: "Welcome", bundle: nil).instantiateInitialViewController() as! WelcomeController
+ Controllers.shared.welcome = controller
return controller
}
diff --git a/Kiwix-iOS/Controller/Main/MainController.swift b/Kiwix-iOS/Controller/Main/MainController.swift
index 75c4022e..89841f9b 100644
--- a/Kiwix-iOS/Controller/Main/MainController.swift
+++ b/Kiwix-iOS/Controller/Main/MainController.swift
@@ -49,7 +49,6 @@ class MainController: UIViewController {
super.viewDidLoad()
webView.delegate = self
- searchBar.delegate = self
ZimMultiReader.shared.delegate = self
navigationItem.titleView = searchBar
@@ -241,13 +240,13 @@ class MainController: UIViewController {
}
func showLibraryButtonTapped() {
- let controller = ControllerRetainer.library
+ let controller = Controllers.library
controller.modalPresentationStyle = .FullScreen
presentViewController(controller, animated: true, completion: nil)
}
func showSettingButtonTapped() {
- let controller = ControllerRetainer.setting
+ let controller = Controllers.setting
controller.modalPresentationStyle = .FormSheet
presentViewController(controller, animated: true, completion: nil)
}
diff --git a/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift b/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift
index d1573f9e..00252793 100644
--- a/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift
+++ b/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift
@@ -85,7 +85,7 @@ extension MainController: UIWebViewDelegate, SFSafariViewControllerDelegate, LPT
let operation = UpdateWidgetDataSourceOperation()
GlobalQueue.shared.addOperation(operation)
- let controller = ControllerRetainer.bookmarkStar
+ let controller = Controllers.bookmarkStar
controller.bookmarkAdded = article.isBookmarked
controller.transitioningDelegate = self
controller.modalPresentationStyle = .OverFullScreen
@@ -120,24 +120,7 @@ extension MainController: UIWebViewDelegate, SFSafariViewControllerDelegate, LPT
GlobalQueue.shared.add(load: operation)
}
- // MARK: - UISearchBarDelegate
- func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
- showSearch(animated: true)
- }
-
- func searchBarCancelButtonClicked(searchBar: UISearchBar) {
- hideSearch(animated: true)
- configureSearchBarPlaceHolder()
- }
-
- func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
- ControllerRetainer.search.startSearch(searchText, delayed: true)
- }
-
- func searchBarSearchButtonClicked(searchBar: UISearchBar) {
- ControllerRetainer.search.searchResultController?.selectFirstResultIfPossible()
- }
// MARK: - UIPopoverPresentationControllerDelegate
diff --git a/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift b/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift
index 6a6f5c2c..e3255851 100644
--- a/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift
+++ b/Kiwix-iOS/Controller/Main/MainControllerShowHide.swift
@@ -60,7 +60,7 @@ extension MainController {
}
private func showSearchResultController(animated animated: Bool) {
- let controller = ControllerRetainer.search
+ let controller = Controllers.search
guard !childViewControllers.contains(controller) else {return}
addChildViewController(controller)
controller.view.translatesAutoresizingMaskIntoConstraints = false
@@ -161,7 +161,7 @@ extension MainController {
// MARK: - Show Bookmark
func showBookmarkTBVC() {
- let controller = ControllerRetainer.bookmark
+ let controller = Controllers.bookmark
controller.modalPresentationStyle = .FormSheet
presentViewController(controller, animated: true, completion: nil)
}
@@ -169,7 +169,7 @@ extension MainController {
// MARK: - Show/Hide Welcome
func showWelcome() {
- let controller = ControllerRetainer.welcome
+ let controller = Controllers.welcome
controller.view.translatesAutoresizingMaskIntoConstraints = false
addChildViewController(controller)
view.addSubview(controller.view)
diff --git a/Kiwix-iOS/Controller/Search/SearchController.swift b/Kiwix-iOS/Controller/Search/SearchController.swift
index f498a1fb..cbf7ba16 100644
--- a/Kiwix-iOS/Controller/Search/SearchController.swift
+++ b/Kiwix-iOS/Controller/Search/SearchController.swift
@@ -16,11 +16,7 @@ class SearchController: UIViewController, UISearchBarDelegate, UIGestureRecogniz
@IBOutlet var tapGestureRecognizer: UITapGestureRecognizer!
var searchResultController: SearchResultController?
- private var searchText = "" {
- didSet {
- configureViewVisibility()
- }
- }
+ private var searchTerm = "" // last searchTerm
override func viewDidLoad() {
super.viewDidLoad()
@@ -30,14 +26,7 @@ class SearchController: UIViewController, UISearchBarDelegate, UIGestureRecogniz
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
- configureViewVisibility()
- }
-
- override func viewWillDisappear(animated: Bool) {
- super.viewWillDisappear(animated)
- guard searchText != "" else {return}
- Preference.recentSearchTerms.insert(searchText, atIndex: 0)
- searchText = ""
+ configureViewVisibility(searchTerm)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
@@ -47,8 +36,8 @@ class SearchController: UIViewController, UISearchBarDelegate, UIGestureRecogniz
}
}
- func configureViewVisibility() {
- if searchText == "" {
+ func configureViewVisibility(searchTerm: String) {
+ if searchTerm == "" {
searchResultTBVCContainer.hidden = true
tabControllerContainer.hidden = false
} else {
@@ -59,16 +48,17 @@ class SearchController: UIViewController, UISearchBarDelegate, UIGestureRecogniz
// MARK: - Search
- func startSearch(searchText: String, delayed: Bool) {
- self.searchText = searchText
+ func startSearch(searchTerm: String, delayed: Bool) {
+ guard self.searchTerm != searchTerm else {return}
+ self.searchTerm = searchTerm
+ configureViewVisibility(searchTerm)
if delayed {
- let previousSearchText = searchText
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(275 * USEC_PER_SEC)), dispatch_get_main_queue()) {
- guard previousSearchText == self.searchText else {return}
- self.searchResultController?.startSearch(self.searchText)
+ guard searchTerm == self.searchTerm else {return}
+ self.searchResultController?.startSearch(self.searchTerm)
}
} else {
- searchResultController?.startSearch(searchText)
+ searchResultController?.startSearch(searchTerm)
}
}
diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist
index 202df9c3..09eed1d0 100644
--- a/Kiwix-iOS/Info.plist
+++ b/Kiwix-iOS/Info.plist
@@ -49,7 +49,7 @@
CFBundleVersion
- 1.8.1343
+ 1.8.1363
ITSAppUsesNonExemptEncryption
LSRequiresIPhoneOS
diff --git a/Kiwix-iOS/View/SearchBar.swift b/Kiwix-iOS/View/SearchBar.swift
index 3ffedc6e..c9fd55e5 100644
--- a/Kiwix-iOS/View/SearchBar.swift
+++ b/Kiwix-iOS/View/SearchBar.swift
@@ -7,7 +7,7 @@
//
import UIKit
-
+// not used
class CustomSearchBar: UISearchBar, UITextFieldDelegate {
override init(frame: CGRect) {
@@ -91,7 +91,13 @@ class CustomSearchBar: UISearchBar, UITextFieldDelegate {
// Used in v1.4
-class SearchBar: UISearchBar {
+class SearchBar: UISearchBar, UISearchBarDelegate {
+ var searchTerm: String?
+
+ private var textField: UITextField {
+ return valueForKey("searchField") as! UITextField
+ }
+
override init(frame: CGRect) {
super.init(frame: frame)
}
@@ -106,5 +112,30 @@ class SearchBar: UISearchBar {
self.autocapitalizationType = .None
self.placeholder = LocalizedStrings.search
self.returnKeyType = .Go
+ self.delegate = self
}
-}
\ No newline at end of file
+
+ // MARK: - UISearchBarDelegate
+
+ func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
+ text = searchTerm
+ Controllers.shared.main.showSearch(animated: true)
+ let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.05 * Double(NSEC_PER_SEC)))
+ dispatch_after(dispatchTime, dispatch_get_main_queue(), { [unowned self] in
+ self.textField.selectAll(nil)
+ })
+ }
+
+ func searchBarCancelButtonClicked(searchBar: UISearchBar) {
+ Controllers.shared.main.hideSearch(animated: true)
+ }
+
+ func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
+ searchTerm = searchText
+ Controllers.search.startSearch(searchText, delayed: true)
+ }
+
+ func searchBarSearchButtonClicked(searchBar: UISearchBar) {
+ Controllers.search.searchResultController?.selectFirstResultIfPossible()
+ }
+}
diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist
index 59ed41e7..f1d1e4ad 100644
--- a/Kiwix-iOSWidgets/Bookmarks/Info.plist
+++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist
@@ -21,7 +21,7 @@
CFBundleSignature
????
CFBundleVersion
- 1.8.1347
+ 1.8.1367
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 0b50c5a2..0db328a9 100644
--- a/Kiwix.xcworkspace/xcuserdata/chrisli.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/Kiwix.xcworkspace/xcuserdata/chrisli.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -56,7 +56,7 @@
moduleName = "Kiwix"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Volumes/Data/Developer/Kiwix/Kiwix/Operations/BookmarkMigrationOperation.swift"
- timestampString = "496789129.532637"
+ timestampString = "496791025.863771"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "27"
@@ -71,7 +71,7 @@
moduleName = "Kiwix"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Volumes/Data/Developer/Kiwix/Kiwix/Operations/BookmarkMigrationOperation.swift"
- timestampString = "496789129.534098"
+ timestampString = "496791025.865063"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "27"