mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-27 22:10:57 -04:00
load article
This commit is contained in:
parent
159c8a3159
commit
04eb423b93
@ -25,10 +25,6 @@ class Controllers {
|
|||||||
return (UIApplication.appDelegate.window?.rootViewController as! UINavigationController).topViewController as! MainController
|
return (UIApplication.appDelegate.window?.rootViewController as! UINavigationController).topViewController as! MainController
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Web
|
|
||||||
|
|
||||||
lazy private(set) var web = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "WebViewController") as! WebViewController
|
|
||||||
|
|
||||||
// // MARK: - Bookmark
|
// // MARK: - Bookmark
|
||||||
//
|
//
|
||||||
// private var bookmark: UINavigationController?
|
// private var bookmark: UINavigationController?
|
||||||
|
@ -10,6 +10,7 @@ import UIKit
|
|||||||
|
|
||||||
class MainController: UIViewController {
|
class MainController: UIViewController {
|
||||||
|
|
||||||
|
@IBOutlet weak var webView: UIWebView!
|
||||||
let searchBar = SearchBar()
|
let searchBar = SearchBar()
|
||||||
lazy var controllers = Controllers()
|
lazy var controllers = Controllers()
|
||||||
lazy var buttons = Buttons()
|
lazy var buttons = Buttons()
|
||||||
@ -17,6 +18,7 @@ class MainController: UIViewController {
|
|||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
|
||||||
|
webView.loadRequest(URLRequest(url: URL(string: "about:blank")!))
|
||||||
navigationItem.titleView = searchBar
|
navigationItem.titleView = searchBar
|
||||||
searchBar.delegate = self
|
searchBar.delegate = self
|
||||||
buttons.delegate = self
|
buttons.delegate = self
|
||||||
|
@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
extension MainController: SearchBarDelegate, ButtonDelegates, SearchContainerDelegate {
|
// MARK: - Search
|
||||||
|
|
||||||
// MARK: - SearchBarDelegate
|
extension MainController: SearchBarDelegate {
|
||||||
|
|
||||||
func didBecomeFirstResponder(searchBar: SearchBar) {
|
func didBecomeFirstResponder(searchBar: SearchBar) {
|
||||||
showSearch(animated: true)
|
showSearch(animated: true)
|
||||||
@ -24,8 +24,68 @@ extension MainController: SearchBarDelegate, ButtonDelegates, SearchContainerDel
|
|||||||
controllers.search.searchText = text
|
controllers.search.searchText = text
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Button Delegates
|
private func showSearch(animated: Bool) {
|
||||||
|
let controller = controllers.search
|
||||||
|
controller.delegate = self
|
||||||
|
guard !childViewControllers.contains(controller) else {return}
|
||||||
|
|
||||||
|
// add cancel button if needed
|
||||||
|
if traitCollection.horizontalSizeClass == .compact {
|
||||||
|
navigationItem.setRightBarButton(buttons.cancel, animated: animated)
|
||||||
|
}
|
||||||
|
|
||||||
|
// manage view hierarchy
|
||||||
|
addChildViewController(controller)
|
||||||
|
controller.view.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
view.addSubview(controller.view)
|
||||||
|
|
||||||
|
let views = ["view": controller.view]
|
||||||
|
view.addConstraints(NSLayoutConstraint.constraints(
|
||||||
|
withVisualFormat: "H:|[view]|", options: .alignAllCenterY, metrics: nil, views: views))
|
||||||
|
view.addConstraint(controller.view.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor))
|
||||||
|
view.addConstraint(controller.view.bottomAnchor.constraint(equalTo: bottomLayoutGuide.topAnchor))
|
||||||
|
|
||||||
|
if animated {
|
||||||
|
controller.view.alpha = 0.5
|
||||||
|
UIView.animate(withDuration: 0.15, delay: 0.0, options: .curveEaseOut, animations: { () -> Void in
|
||||||
|
controller.view.alpha = 1.0
|
||||||
|
}, completion: nil)
|
||||||
|
} else {
|
||||||
|
controller.view.alpha = 1.0
|
||||||
|
}
|
||||||
|
controller.didMove(toParentViewController: self)
|
||||||
|
}
|
||||||
|
|
||||||
|
private func hideSearch(animated: Bool) {
|
||||||
|
guard let searchController = childViewControllers.flatMap({$0 as? SearchContainer}).first else {return}
|
||||||
|
|
||||||
|
// remove cancel button if needed
|
||||||
|
if traitCollection.horizontalSizeClass == .compact {
|
||||||
|
navigationItem.setRightBarButton(nil, animated: animated)
|
||||||
|
}
|
||||||
|
|
||||||
|
let completion = { (complete: Bool) -> Void in
|
||||||
|
guard complete else {return}
|
||||||
|
searchController.view.removeFromSuperview()
|
||||||
|
searchController.removeFromParentViewController()
|
||||||
|
guard self.traitCollection.horizontalSizeClass == .compact else {return}
|
||||||
|
self.navigationController?.setToolbarHidden(false, animated: animated)
|
||||||
|
}
|
||||||
|
|
||||||
|
searchController.willMove(toParentViewController: nil)
|
||||||
|
if animated {
|
||||||
|
UIView.animate(withDuration: 0.15, delay: 0.0, options: .beginFromCurrentState, animations: {
|
||||||
|
searchController.view.alpha = 0.0
|
||||||
|
}, completion: completion)
|
||||||
|
} else {
|
||||||
|
completion(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Button Delegates
|
||||||
|
|
||||||
|
extension MainController: ButtonDelegates, SearchContainerDelegate {
|
||||||
func didTapLibraryButton() {
|
func didTapLibraryButton() {
|
||||||
present(controllers.library, animated: true, completion: nil)
|
present(controllers.library, animated: true, completion: nil)
|
||||||
}
|
}
|
||||||
@ -33,11 +93,33 @@ extension MainController: SearchBarDelegate, ButtonDelegates, SearchContainerDel
|
|||||||
func didTapCancelButton() {
|
func didTapCancelButton() {
|
||||||
_ = searchBar.resignFirstResponder()
|
_ = searchBar.resignFirstResponder()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// MARK: - SearchContainerDelegate
|
|
||||||
|
// MARK: - SearchContainerDelegate
|
||||||
|
|
||||||
|
extension MainController {
|
||||||
func didTapDimView() {
|
func didTapDimView() {
|
||||||
_ = searchBar.resignFirstResponder()
|
_ = searchBar.resignFirstResponder()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Welcome
|
||||||
|
|
||||||
|
extension MainController {
|
||||||
|
func showWelcome() {
|
||||||
|
let controller = controllers.welcome
|
||||||
|
controller.view.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
addChildViewController(controller)
|
||||||
|
view.addSubview(controller.view)
|
||||||
|
let views = ["view": controller.view]
|
||||||
|
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[view]|", options: .alignAllTop, metrics: nil, views: views))
|
||||||
|
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[view]|", options: .alignAllLeft, metrics: nil, views: views))
|
||||||
|
controller.didMove(toParentViewController: self)
|
||||||
|
}
|
||||||
|
|
||||||
|
func hideWelcome() {
|
||||||
|
guard let controller = childViewControllers.flatMap({$0 as? WelcomeController}).first else {return}
|
||||||
|
controller.removeFromParentViewController()
|
||||||
|
controller.view.removeFromSuperview()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,110 +0,0 @@
|
|||||||
//
|
|
||||||
// MainShowHide.swift
|
|
||||||
// Kiwix
|
|
||||||
//
|
|
||||||
// Created by Chris Li on 11/16/16.
|
|
||||||
// Copyright © 2016 Chris Li. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import UIKit
|
|
||||||
|
|
||||||
extension MainController {
|
|
||||||
|
|
||||||
// MARK: - Welcome
|
|
||||||
|
|
||||||
func showWelcome() {
|
|
||||||
let controller = controllers.welcome
|
|
||||||
controller.view.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
addChildViewController(controller)
|
|
||||||
view.addSubview(controller.view)
|
|
||||||
let views = ["view": controller.view]
|
|
||||||
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[view]|", options: .alignAllTop, metrics: nil, views: views))
|
|
||||||
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[view]|", options: .alignAllLeft, metrics: nil, views: views))
|
|
||||||
controller.didMove(toParentViewController: self)
|
|
||||||
}
|
|
||||||
|
|
||||||
func hideWelcome() {
|
|
||||||
guard let controller = childViewControllers.flatMap({$0 as? WelcomeController}).first else {return}
|
|
||||||
controller.removeFromParentViewController()
|
|
||||||
controller.view.removeFromSuperview()
|
|
||||||
}
|
|
||||||
|
|
||||||
// MARK: - Search
|
|
||||||
|
|
||||||
func showSearch(animated: Bool) {
|
|
||||||
let controller = controllers.search
|
|
||||||
controller.delegate = self
|
|
||||||
guard !childViewControllers.contains(controller) else {return}
|
|
||||||
|
|
||||||
// add cancel button if needed
|
|
||||||
if traitCollection.horizontalSizeClass == .compact {
|
|
||||||
navigationItem.setRightBarButton(buttons.cancel, animated: animated)
|
|
||||||
}
|
|
||||||
|
|
||||||
// manage view hierarchy
|
|
||||||
addChildViewController(controller)
|
|
||||||
controller.view.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
view.addSubview(controller.view)
|
|
||||||
|
|
||||||
let views = ["view": controller.view]
|
|
||||||
view.addConstraints(NSLayoutConstraint.constraints(
|
|
||||||
withVisualFormat: "H:|[view]|", options: .alignAllCenterY, metrics: nil, views: views))
|
|
||||||
view.addConstraint(controller.view.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor))
|
|
||||||
view.addConstraint(controller.view.bottomAnchor.constraint(equalTo: bottomLayoutGuide.topAnchor))
|
|
||||||
|
|
||||||
if animated {
|
|
||||||
controller.view.alpha = 0.5
|
|
||||||
UIView.animate(withDuration: 0.15, delay: 0.0, options: .curveEaseOut, animations: { () -> Void in
|
|
||||||
controller.view.alpha = 1.0
|
|
||||||
}, completion: nil)
|
|
||||||
} else {
|
|
||||||
controller.view.alpha = 1.0
|
|
||||||
}
|
|
||||||
controller.didMove(toParentViewController: self)
|
|
||||||
}
|
|
||||||
|
|
||||||
func hideSearch(animated: Bool) {
|
|
||||||
guard let searchController = childViewControllers.flatMap({$0 as? SearchContainer}).first else {return}
|
|
||||||
|
|
||||||
// remove cancel button if needed
|
|
||||||
if traitCollection.horizontalSizeClass == .compact {
|
|
||||||
navigationItem.setRightBarButton(nil, animated: animated)
|
|
||||||
}
|
|
||||||
|
|
||||||
let completion = { (complete: Bool) -> Void in
|
|
||||||
guard complete else {return}
|
|
||||||
searchController.view.removeFromSuperview()
|
|
||||||
searchController.removeFromParentViewController()
|
|
||||||
guard self.traitCollection.horizontalSizeClass == .compact else {return}
|
|
||||||
self.navigationController?.setToolbarHidden(false, animated: animated)
|
|
||||||
}
|
|
||||||
|
|
||||||
searchController.willMove(toParentViewController: nil)
|
|
||||||
if animated {
|
|
||||||
UIView.animate(withDuration: 0.15, delay: 0.0, options: .beginFromCurrentState, animations: {
|
|
||||||
searchController.view.alpha = 0.0
|
|
||||||
}, completion: completion)
|
|
||||||
} else {
|
|
||||||
completion(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// MARK: - Web
|
|
||||||
|
|
||||||
func showWeb() {
|
|
||||||
let controller = controllers.web
|
|
||||||
guard !childViewControllers.contains(controller) else {return}
|
|
||||||
|
|
||||||
addChildViewController(controller)
|
|
||||||
controller.view.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
view.addSubview(controller.view)
|
|
||||||
|
|
||||||
let views = ["view": controller.view]
|
|
||||||
view.addConstraints(NSLayoutConstraint.constraints(
|
|
||||||
withVisualFormat: "H:|[view]|", options: .alignAllCenterY, metrics: nil, views: views))
|
|
||||||
view.addConstraint(controller.view.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor))
|
|
||||||
view.addConstraint(controller.view.bottomAnchor.constraint(equalTo: bottomLayoutGuide.topAnchor))
|
|
||||||
controller.didMove(toParentViewController: self)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
//
|
|
||||||
// WebViewController.swift
|
|
||||||
// Kiwix
|
|
||||||
//
|
|
||||||
// Created by Chris Li on 11/16/16.
|
|
||||||
// Copyright © 2016 Chris Li. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import UIKit
|
|
||||||
|
|
||||||
class WebViewController: UIViewController {
|
|
||||||
|
|
||||||
@IBOutlet weak var webView: UIWebView!
|
|
||||||
|
|
||||||
override func viewDidLoad() {
|
|
||||||
super.viewDidLoad()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -87,6 +87,8 @@ class SearchResultController: SearchBaseTableController, UITableViewDataSource,
|
|||||||
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||||
tableView.deselectRow(at: indexPath, animated: true)
|
tableView.deselectRow(at: indexPath, animated: true)
|
||||||
let result = searchResults[indexPath.row]
|
let result = searchResults[indexPath.row]
|
||||||
|
let operation = ArticleLoadOperation(bookID: result.bookID, articlePath: result.path)
|
||||||
|
GlobalQueue.shared.add(articleLoadOperation: operation)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - DZNEmptyDataSet
|
// MARK: - DZNEmptyDataSet
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.8.2903</string>
|
<string>1.8.2932</string>
|
||||||
<key>ITSAppUsesNonExemptEncryption</key>
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
|
@ -10,40 +10,6 @@
|
|||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
<!--Web View Controller-->
|
|
||||||
<scene sceneID="Plq-9G-fRT">
|
|
||||||
<objects>
|
|
||||||
<viewController storyboardIdentifier="WebViewController" id="hhM-UO-XZK" customClass="WebViewController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
|
||||||
<layoutGuides>
|
|
||||||
<viewControllerLayoutGuide type="top" id="gaV-4e-09V"/>
|
|
||||||
<viewControllerLayoutGuide type="bottom" id="7Tg-lD-cCY"/>
|
|
||||||
</layoutGuides>
|
|
||||||
<view key="view" contentMode="scaleToFill" id="h0X-vc-qIf">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MjM-In-ehJ">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
</webView>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="MjM-In-ehJ" firstAttribute="top" secondItem="gaV-4e-09V" secondAttribute="bottom" constant="-64" id="2DB-FF-mbL"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="MjM-In-ehJ" secondAttribute="trailing" id="2On-HI-gaZ"/>
|
|
||||||
<constraint firstItem="MjM-In-ehJ" firstAttribute="leading" secondItem="h0X-vc-qIf" secondAttribute="leading" id="qz0-jI-wLz"/>
|
|
||||||
<constraint firstItem="7Tg-lD-cCY" firstAttribute="top" secondItem="MjM-In-ehJ" secondAttribute="bottom" id="rmz-qH-LFY"/>
|
|
||||||
</constraints>
|
|
||||||
</view>
|
|
||||||
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
|
|
||||||
<connections>
|
|
||||||
<outlet property="webView" destination="MjM-In-ehJ" id="tud-dZ-b7q"/>
|
|
||||||
</connections>
|
|
||||||
</viewController>
|
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="3pg-HH-V5d" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
<point key="canvasLocation" x="2474.4000000000001" y="-348.57571214392806"/>
|
|
||||||
</scene>
|
|
||||||
<!--Table Of Contents Controller-->
|
<!--Table Of Contents Controller-->
|
||||||
<scene sceneID="sFA-xU-ByH">
|
<scene sceneID="sFA-xU-ByH">
|
||||||
<objects>
|
<objects>
|
||||||
@ -242,13 +208,29 @@
|
|||||||
<view key="view" contentMode="scaleToFill" id="hRW-ET-fRA">
|
<view key="view" contentMode="scaleToFill" id="hRW-ET-fRA">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<webView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MjM-In-ehJ">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</webView>
|
||||||
|
</subviews>
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="MjM-In-ehJ" firstAttribute="top" secondItem="KVH-WC-JGt" secondAttribute="bottom" constant="-64" id="1Om-9P-m57"/>
|
||||||
|
<constraint firstItem="MjM-In-ehJ" firstAttribute="leading" secondItem="hRW-ET-fRA" secondAttribute="leading" id="Kf8-Rn-ROp"/>
|
||||||
|
<constraint firstItem="UIX-e1-SUg" firstAttribute="top" secondItem="MjM-In-ehJ" secondAttribute="bottom" constant="-44" id="MRq-VY-WQT"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="MjM-In-ehJ" secondAttribute="trailing" id="tIZ-J4-u59"/>
|
||||||
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<navigationItem key="navigationItem" id="fuj-b7-iB1"/>
|
<navigationItem key="navigationItem" id="fuj-b7-iB1"/>
|
||||||
|
<simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>
|
||||||
|
<connections>
|
||||||
|
<outlet property="webView" destination="MjM-In-ehJ" id="bOM-dN-Gc6"/>
|
||||||
|
</connections>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Yrv-8u-IwG" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="Yrv-8u-IwG" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="1657" y="-349"/>
|
<point key="canvasLocation" x="1656.8" y="-349.47526236881561"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Main Controller-->
|
<!--Main Controller-->
|
||||||
<scene sceneID="nEL-IB-dp3">
|
<scene sceneID="nEL-IB-dp3">
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.8.2903</string>
|
<string>1.8.2932</string>
|
||||||
<key>NSExtension</key>
|
<key>NSExtension</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSExtensionMainStoryboard</key>
|
<key>NSExtensionMainStoryboard</key>
|
||||||
|
@ -29,8 +29,6 @@
|
|||||||
9726591D1D90A64600D1DFFB /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9726591C1D90A64500D1DFFB /* Notifications.swift */; };
|
9726591D1D90A64600D1DFFB /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9726591C1D90A64500D1DFFB /* Notifications.swift */; };
|
||||||
972F81571DDBFC79008D7289 /* Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972F81561DDBFC79008D7289 /* Search.swift */; };
|
972F81571DDBFC79008D7289 /* Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972F81561DDBFC79008D7289 /* Search.swift */; };
|
||||||
972F81591DDC1B71008D7289 /* Controllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972F81581DDC1B71008D7289 /* Controllers.swift */; };
|
972F81591DDC1B71008D7289 /* Controllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972F81581DDC1B71008D7289 /* Controllers.swift */; };
|
||||||
972F815B1DDCBF71008D7289 /* MainShowHide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972F815A1DDCBF71008D7289 /* MainShowHide.swift */; };
|
|
||||||
972F815D1DDCBFF9008D7289 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972F815C1DDCBFF9008D7289 /* WebViewController.swift */; };
|
|
||||||
9732075C1DD136BB00EDD3DC /* CoreDataExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9732075B1DD136BB00EDD3DC /* CoreDataExtension.swift */; };
|
9732075C1DD136BB00EDD3DC /* CoreDataExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9732075B1DD136BB00EDD3DC /* CoreDataExtension.swift */; };
|
||||||
9732079E1DD197EA00EDD3DC /* LibrarySplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C005D71D64B99E004352E8 /* LibrarySplitViewController.swift */; };
|
9732079E1DD197EA00EDD3DC /* LibrarySplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C005D71D64B99E004352E8 /* LibrarySplitViewController.swift */; };
|
||||||
9732079F1DD197F400EDD3DC /* CloudBooksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C005DB1D64BEFE004352E8 /* CloudBooksController.swift */; };
|
9732079F1DD197F400EDD3DC /* CloudBooksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C005DB1D64BEFE004352E8 /* CloudBooksController.swift */; };
|
||||||
@ -190,8 +188,6 @@
|
|||||||
9726591C1D90A64500D1DFFB /* Notifications.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Notifications.swift; sourceTree = "<group>"; };
|
9726591C1D90A64500D1DFFB /* Notifications.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Notifications.swift; sourceTree = "<group>"; };
|
||||||
972F81561DDBFC79008D7289 /* Search.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Search.swift; sourceTree = "<group>"; };
|
972F81561DDBFC79008D7289 /* Search.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Search.swift; sourceTree = "<group>"; };
|
||||||
972F81581DDC1B71008D7289 /* Controllers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Controllers.swift; sourceTree = "<group>"; };
|
972F81581DDC1B71008D7289 /* Controllers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Controllers.swift; sourceTree = "<group>"; };
|
||||||
972F815A1DDCBF71008D7289 /* MainShowHide.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainShowHide.swift; sourceTree = "<group>"; };
|
|
||||||
972F815C1DDCBFF9008D7289 /* WebViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = "<group>"; };
|
|
||||||
9732075B1DD136BB00EDD3DC /* CoreDataExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataExtension.swift; sourceTree = "<group>"; };
|
9732075B1DD136BB00EDD3DC /* CoreDataExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataExtension.swift; sourceTree = "<group>"; };
|
||||||
973208251DD21E9C00EDD3DC /* CoreDataContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataContainer.swift; sourceTree = "<group>"; };
|
973208251DD21E9C00EDD3DC /* CoreDataContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataContainer.swift; sourceTree = "<group>"; };
|
||||||
973208281DD223DB00EDD3DC /* RefreshLibrary.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefreshLibrary.swift; sourceTree = "<group>"; };
|
973208281DD223DB00EDD3DC /* RefreshLibrary.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefreshLibrary.swift; sourceTree = "<group>"; };
|
||||||
@ -485,8 +481,6 @@
|
|||||||
97BC0FBA1DD90A34004BBAD1 /* old */,
|
97BC0FBA1DD90A34004BBAD1 /* old */,
|
||||||
97BC0FBE1DD90A65004BBAD1 /* MainController.swift */,
|
97BC0FBE1DD90A65004BBAD1 /* MainController.swift */,
|
||||||
97D0E98E1DDA12B30029530E /* MainDelegates.swift */,
|
97D0E98E1DDA12B30029530E /* MainDelegates.swift */,
|
||||||
972F815A1DDCBF71008D7289 /* MainShowHide.swift */,
|
|
||||||
972F815C1DDCBFF9008D7289 /* WebViewController.swift */,
|
|
||||||
97BC0FC11DD92B62004BBAD1 /* Buttons.swift */,
|
97BC0FC11DD92B62004BBAD1 /* Buttons.swift */,
|
||||||
97BC0FBD1DD90A65004BBAD1 /* JSInjection.swift */,
|
97BC0FBD1DD90A65004BBAD1 /* JSInjection.swift */,
|
||||||
972F81581DDC1B71008D7289 /* Controllers.swift */,
|
972F81581DDC1B71008D7289 /* Controllers.swift */,
|
||||||
@ -1189,9 +1183,7 @@
|
|||||||
97A1FD1C1D6F71D800A80EE2 /* KiwixURLProtocol.swift in Sources */,
|
97A1FD1C1D6F71D800A80EE2 /* KiwixURLProtocol.swift in Sources */,
|
||||||
97C2C26A1DDCC58500A9CC64 /* ArticleOperation.swift in Sources */,
|
97C2C26A1DDCC58500A9CC64 /* ArticleOperation.swift in Sources */,
|
||||||
973208261DD21E9C00EDD3DC /* CoreDataContainer.swift in Sources */,
|
973208261DD21E9C00EDD3DC /* CoreDataContainer.swift in Sources */,
|
||||||
972F815B1DDCBF71008D7289 /* MainShowHide.swift in Sources */,
|
|
||||||
97D6813F1D6F712800E5FA99 /* Article+CoreDataProperties.swift in Sources */,
|
97D6813F1D6F712800E5FA99 /* Article+CoreDataProperties.swift in Sources */,
|
||||||
972F815D1DDCBFF9008D7289 /* WebViewController.swift in Sources */,
|
|
||||||
97A1FD1D1D6F71D800A80EE2 /* URLResponseCache.swift in Sources */,
|
97A1FD1D1D6F71D800A80EE2 /* URLResponseCache.swift in Sources */,
|
||||||
97A1FD441D6F728200A80EE2 /* Preference.swift in Sources */,
|
97A1FD441D6F728200A80EE2 /* Preference.swift in Sources */,
|
||||||
97D681311D6F70EC00E5FA99 /* 1.5.xcmappingmodel in Sources */,
|
97D681311D6F70EC00E5FA99 /* 1.5.xcmappingmodel in Sources */,
|
||||||
|
@ -75,18 +75,19 @@ class ArticleLoadOperation: Procedure {
|
|||||||
let request = URLRequest(url: url)
|
let request = URLRequest(url: url)
|
||||||
|
|
||||||
OperationQueue.main.addOperation {
|
OperationQueue.main.addOperation {
|
||||||
main.hideWelcome()
|
_ = main.searchBar.resignFirstResponder()
|
||||||
main.showWeb()
|
|
||||||
main.hideSearch(animated: self.animated)
|
|
||||||
main.presentingViewController?.dismiss(animated: self.animated, completion: nil)
|
main.presentingViewController?.dismiss(animated: self.animated, completion: nil)
|
||||||
//if main.traitCollection.horizontalSizeClass == .compact {main.hideTableOfContentsController()}
|
main.hideWelcome()
|
||||||
|
|
||||||
let webView = main.controllers.web.webView
|
let webView = main.webView
|
||||||
if webView.request?.url != url {
|
if webView?.request?.url != url {
|
||||||
webView?.loadRequest(request)
|
webView?.loadRequest(request)
|
||||||
}
|
}
|
||||||
|
|
||||||
self.finish()
|
self.finish()
|
||||||
|
|
||||||
|
|
||||||
|
// //if main.traitCollection.horizontalSizeClass == .compact {main.hideTableOfContentsController()}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user