mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-27 13:59:04 -04:00
NavigationList
This commit is contained in:
parent
adbbc3350e
commit
3496d1e95d
@ -19,7 +19,7 @@ class MainController: UIViewController {
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
webView.loadRequest(URLRequest(url: URL(string: "about:blank")!))
|
||||
// webView.loadRequest(URLRequest(url: URL(string: "about:blank")!))
|
||||
navigationItem.titleView = searchBar
|
||||
searchBar.delegate = self
|
||||
buttons.delegate = self
|
||||
@ -56,3 +56,49 @@ class MainController: UIViewController {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class WebView: UIWebView {
|
||||
var backList = [URL]()
|
||||
var forwardList = [URL]()
|
||||
var currentURL: URL?
|
||||
|
||||
override var canGoBack: Bool {
|
||||
return backList.count > 0
|
||||
}
|
||||
|
||||
override var canGoForward: Bool {
|
||||
return forwardList.count > 0
|
||||
}
|
||||
|
||||
override func goBack() {
|
||||
guard let lastURL = backList.last, let currentURL = currentURL else {return}
|
||||
backList.removeLast()
|
||||
self.currentURL = lastURL
|
||||
forwardList.insert(currentURL, at: 0)
|
||||
|
||||
let request = URLRequest(url: lastURL)
|
||||
loadRequest(request)
|
||||
}
|
||||
|
||||
override func goForward() {
|
||||
guard let nextURL = forwardList.first, let currentURL = currentURL else {return}
|
||||
backList.append(currentURL)
|
||||
self.currentURL = nextURL
|
||||
forwardList.removeFirst()
|
||||
|
||||
let request = URLRequest(url: nextURL)
|
||||
loadRequest(request)
|
||||
}
|
||||
|
||||
override func loadRequest(_ request: URLRequest) {
|
||||
super.loadRequest(request)
|
||||
guard let currentURL = currentURL, let requestURL = request.url else {
|
||||
self.currentURL = request.url
|
||||
return
|
||||
}
|
||||
guard currentURL != requestURL else {return}
|
||||
backList.append(currentURL)
|
||||
self.currentURL = requestURL
|
||||
forwardList.removeAll()
|
||||
}
|
||||
}
|
||||
|
@ -95,11 +95,11 @@ extension MainController: UIWebViewDelegate, SFSafariViewControllerDelegate {
|
||||
present(controller, animated: true, completion: nil)
|
||||
return false
|
||||
}
|
||||
navigationList.webViewStartLoading(requestURL: url)
|
||||
return true
|
||||
}
|
||||
|
||||
func webViewDidStartLoad(_ webView: UIWebView) {
|
||||
|
||||
}
|
||||
|
||||
func webViewDidFinishLoad(_ webView: UIWebView) {
|
||||
@ -107,8 +107,8 @@ extension MainController: UIWebViewDelegate, SFSafariViewControllerDelegate {
|
||||
guard let title = JS.getTitle(from: webView) else {return}
|
||||
searchBar.title = title
|
||||
|
||||
buttons.back.tintColor = webView.canGoBack ? nil : UIColor.gray
|
||||
buttons.forward.tintColor = webView.canGoForward ? nil : UIColor.gray
|
||||
buttons.back.tintColor = navigationList.canGoBack ? nil : UIColor.gray
|
||||
buttons.forward.tintColor = navigationList.canGoForward ? nil : UIColor.gray
|
||||
}
|
||||
|
||||
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
|
||||
@ -128,11 +128,11 @@ extension MainController {
|
||||
|
||||
extension MainController: ButtonDelegates, SearchContainerDelegate {
|
||||
func didTapBackButton() {
|
||||
webView.goBack()
|
||||
navigationList.goBack(webView: webView)
|
||||
}
|
||||
|
||||
func didTapForwardButton() {
|
||||
webView.goForward()
|
||||
navigationList.goForward(webView: webView)
|
||||
}
|
||||
|
||||
func didTapBookmarkButton() {
|
||||
|
@ -13,24 +13,44 @@ class NavigationList {
|
||||
var forwardList = [URL]()
|
||||
var currentURL: URL?
|
||||
|
||||
func webViewFinishedLoading(url: URL) {
|
||||
guard url != currentURL else { return }
|
||||
func webViewStartLoading(requestURL: URL) {
|
||||
guard let currentURL = currentURL else {
|
||||
self.currentURL = requestURL
|
||||
return
|
||||
}
|
||||
|
||||
guard currentURL != requestURL else {return}
|
||||
backList.append(currentURL)
|
||||
self.currentURL = requestURL
|
||||
forwardList.removeAll()
|
||||
}
|
||||
|
||||
func goBack() {
|
||||
func goBack(webView: UIWebView) {
|
||||
guard let lastURL = backList.last, let currentURL = currentURL else {return}
|
||||
backList.removeLast()
|
||||
self.currentURL = lastURL
|
||||
forwardList.insert(currentURL, at: 0)
|
||||
|
||||
let request = URLRequest(url: lastURL)
|
||||
webView.loadRequest(request)
|
||||
}
|
||||
|
||||
func goForward() {
|
||||
func goForward(webView: UIWebView) {
|
||||
guard let nextURL = forwardList.first, let currentURL = currentURL else {return}
|
||||
backList.append(currentURL)
|
||||
self.currentURL = nextURL
|
||||
forwardList.removeFirst()
|
||||
|
||||
let request = URLRequest(url: nextURL)
|
||||
webView.loadRequest(request)
|
||||
}
|
||||
|
||||
var canGoBack: Bool {
|
||||
return false
|
||||
return backList.count > 0
|
||||
}
|
||||
|
||||
var canGoForward: Bool {
|
||||
return false
|
||||
return forwardList.count > 0
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -49,7 +49,7 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.8.3001</string>
|
||||
<string>1.8.3037</string>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
|
@ -30,7 +30,7 @@
|
||||
<rect key="frame" x="0.0" y="28" width="414" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="DSn-3Y-Gs4" id="vq5-6x-vLY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="43.666666666666664"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xPq-dt-NK6">
|
||||
@ -52,7 +52,7 @@
|
||||
<rect key="frame" x="0.0" y="72" width="414" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="au4-iz-tLz" id="3UD-lZ-hs0">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="43.666666666666664"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DJX-Kf-59M">
|
||||
@ -74,7 +74,7 @@
|
||||
<rect key="frame" x="0.0" y="116" width="414" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="cam-ik-ZIw" id="ooG-35-3Wp">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="43.666666666666664"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ry7-2s-QyS">
|
||||
|
@ -21,7 +21,7 @@
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.8.3001</string>
|
||||
<string>1.8.3037</string>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionMainStoryboard</key>
|
||||
|
@ -43,21 +43,5 @@
|
||||
stopOnStyle = "0">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Kiwix/Operations/ArticleOperation.swift"
|
||||
timestampString = "501088031.696211"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "61"
|
||||
endingLineNumber = "61"
|
||||
landmarkName = "execute()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
</Bucket>
|
||||
|
Loading…
x
Reference in New Issue
Block a user