Bookmark collection controller setup

This commit is contained in:
Chris Li 2017-01-12 17:23:23 -05:00
parent a3f1687e54
commit 9fece8a0f7
5 changed files with 99 additions and 5 deletions

View File

@ -15,6 +15,15 @@ class BookmarkBooksController: CoreDataTableBaseController, UITableViewDelegate,
title = "Bookmarks" title = "Bookmarks"
} }
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier == "showBookmarks",
let navController = segue.destination as? UINavigationController,
let controller = navController.topViewController as? BookmarkCollectionController else {return}
guard let cell = sender as? UITableViewCell,
let indexPath = tableView.indexPath(for: cell) else {return}
controller.book = fetchedResultController.object(at: indexPath)
}
@IBAction func dismiss(_ sender: UIBarButtonItem) { @IBAction func dismiss(_ sender: UIBarButtonItem) {
dismiss(animated: true, completion: nil) dismiss(animated: true, completion: nil)
@ -53,6 +62,12 @@ class BookmarkBooksController: CoreDataTableBaseController, UITableViewDelegate,
return BookState(rawValue: stateInt)?.description return BookState(rawValue: stateInt)?.description
} }
// MARK: - TableView Delegate
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
// MARK: - Fetched Results Controller // MARK: - Fetched Results Controller
let managedObjectContext = AppDelegate.persistentContainer.viewContext let managedObjectContext = AppDelegate.persistentContainer.viewContext

View File

@ -0,0 +1,32 @@
//
// BookmarkCollectionController.swift
// Kiwix
//
// Created by Chris Li on 1/12/17.
// Copyright © 2017 Chris Li. All rights reserved.
//
import UIKit
class BookmarkCollectionController: UIViewController {
@IBOutlet weak var colectionView: UICollectionView!
var book: Book? {
didSet {
if let book = book {
title = book.title
} else {
title = "All"
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}

View File

@ -31,6 +31,14 @@ class BookmarkSplitController: UISplitViewController, UISplitViewControllerDeleg
} }
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool { func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
if let nav = secondaryViewController as? UINavigationController,
let controller = nav.topViewController as? BookmarkCollectionController,
let _ = controller.book {
// show detail
return false
} else {
// show master
return true return true
} }
}
} }

View File

@ -157,10 +157,10 @@
</objects> </objects>
<point key="canvasLocation" x="2402" y="1764"/> <point key="canvasLocation" x="2402" y="1764"/>
</scene> </scene>
<!--View Controller--> <!--Bookmark Collection Controller-->
<scene sceneID="cHE-4Y-51R"> <scene sceneID="cHE-4Y-51R">
<objects> <objects>
<viewController id="oLN-7t-Pr8" sceneMemberID="viewController"> <viewController id="oLN-7t-Pr8" customClass="BookmarkCollectionController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides> <layoutGuides>
<viewControllerLayoutGuide type="top" id="f18-bT-5eI"/> <viewControllerLayoutGuide type="top" id="f18-bT-5eI"/>
<viewControllerLayoutGuide type="bottom" id="ZaM-mS-Ov3"/> <viewControllerLayoutGuide type="bottom" id="ZaM-mS-Ov3"/>
@ -168,13 +168,44 @@
<view key="view" contentMode="scaleToFill" id="CNz-v0-bW2"> <view key="view" contentMode="scaleToFill" id="CNz-v0-bW2">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/> <rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="2uy-xe-2Xa">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="FG6-Px-7sh">
<size key="itemSize" width="50" height="50"/>
<size key="headerReferenceSize" width="0.0" height="0.0"/>
<size key="footerReferenceSize" width="0.0" height="0.0"/>
<inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
</collectionViewFlowLayout>
<cells>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="8Ym-GP-ecI">
<rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
<autoresizingMask key="autoresizingMask"/>
</view>
</collectionViewCell>
</cells>
</collectionView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="ZaM-mS-Ov3" firstAttribute="top" secondItem="2uy-xe-2Xa" secondAttribute="bottom" id="E2R-BE-Zo3"/>
<constraint firstAttribute="trailing" secondItem="2uy-xe-2Xa" secondAttribute="trailing" id="aAH-yb-eXm"/>
<constraint firstItem="2uy-xe-2Xa" firstAttribute="leading" secondItem="CNz-v0-bW2" secondAttribute="leading" id="dgF-e0-hE3"/>
<constraint firstItem="2uy-xe-2Xa" firstAttribute="top" secondItem="CNz-v0-bW2" secondAttribute="top" id="nk4-pm-kWp"/>
</constraints>
</view> </view>
<navigationItem key="navigationItem" id="Wqn-bE-ueD"/> <navigationItem key="navigationItem" id="Wqn-bE-ueD"/>
<connections>
<outlet property="colectionView" destination="2uy-xe-2Xa" id="eGI-rk-sWH"/>
</connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="9Ru-B3-FcT" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="9Ru-B3-FcT" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="3289.8550724637685" y="3196.467391304348"/> <point key="canvasLocation" x="3244.9275362318845" y="3196.467391304348"/>
</scene> </scene>
<!--Navigation Controller--> <!--Navigation Controller-->
<scene sceneID="i96-PS-3ib"> <scene sceneID="i96-PS-3ib">
@ -238,7 +269,7 @@
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vCd-Vo-NUE"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vCd-Vo-NUE">
<rect key="frame" x="42" y="6" width="2" height="31.5"/> <rect key="frame" x="42" y="6" width="2" height="31.666666666666664"/>
<color key="backgroundColor" red="1" green="0.40000000000000002" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <color key="backgroundColor" red="1" green="0.40000000000000002" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="2" id="mUe-cP-6T5"/> <constraint firstAttribute="width" constant="2" id="mUe-cP-6T5"/>
@ -274,6 +305,7 @@
<outlet property="hasPicIndicator" destination="vCd-Vo-NUE" id="oxG-mF-2gO"/> <outlet property="hasPicIndicator" destination="vCd-Vo-NUE" id="oxG-mF-2gO"/>
<outlet property="subtitleLabel" destination="wUN-Co-X2K" id="tJG-Vg-Ctp"/> <outlet property="subtitleLabel" destination="wUN-Co-X2K" id="tJG-Vg-Ctp"/>
<outlet property="titleLabel" destination="F5J-kg-p5Y" id="SGC-oq-RQ6"/> <outlet property="titleLabel" destination="F5J-kg-p5Y" id="SGC-oq-RQ6"/>
<segue destination="hDm-kh-ZLk" kind="showDetail" identifier="showBookmarks" id="vG1-Ih-Ag7"/>
</connections> </connections>
</tableViewCell> </tableViewCell>
</prototypes> </prototypes>
@ -479,4 +511,7 @@
<image name="BookmarkRemoved" width="348" height="331"/> <image name="BookmarkRemoved" width="348" height="331"/>
<image name="Cross" width="16" height="16"/> <image name="Cross" width="16" height="16"/>
</resources> </resources>
<inferredMetricsTieBreakers>
<segue reference="ipW-qc-ph3"/>
</inferredMetricsTieBreakers>
</document> </document>

View File

@ -67,6 +67,7 @@
9757C74C1E106958008A9469 /* BackgroundDownload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9757C74B1E106958008A9469 /* BackgroundDownload.swift */; }; 9757C74C1E106958008A9469 /* BackgroundDownload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9757C74B1E106958008A9469 /* BackgroundDownload.swift */; };
97599AA21E26D3B000BA15EF /* BookmarkBooksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97599AA11E26D3B000BA15EF /* BookmarkBooksController.swift */; }; 97599AA21E26D3B000BA15EF /* BookmarkBooksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97599AA11E26D3B000BA15EF /* BookmarkBooksController.swift */; };
97599AE01E28031A00BA15EF /* BookmarkSplitController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97599ADF1E28031A00BA15EF /* BookmarkSplitController.swift */; }; 97599AE01E28031A00BA15EF /* BookmarkSplitController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97599ADF1E28031A00BA15EF /* BookmarkSplitController.swift */; };
97599AE21E28193D00BA15EF /* BookmarkCollectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97599AE11E28193D00BA15EF /* BookmarkCollectionController.swift */; };
975B90FE1CEB909100D13906 /* iOSExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975B90FD1CEB909100D13906 /* iOSExtensions.swift */; }; 975B90FE1CEB909100D13906 /* iOSExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975B90FD1CEB909100D13906 /* iOSExtensions.swift */; };
9764CBD11D806AD800072D6A /* RefreshLibControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9764CBD01D806AD800072D6A /* RefreshLibControl.swift */; }; 9764CBD11D806AD800072D6A /* RefreshLibControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9764CBD01D806AD800072D6A /* RefreshLibControl.swift */; };
9764F5931D830EF200E0B1C4 /* liblzma.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9764F5921D830EF200E0B1C4 /* liblzma.tbd */; }; 9764F5931D830EF200E0B1C4 /* liblzma.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9764F5921D830EF200E0B1C4 /* liblzma.tbd */; };
@ -226,6 +227,7 @@
9757C74B1E106958008A9469 /* BackgroundDownload.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackgroundDownload.swift; sourceTree = "<group>"; }; 9757C74B1E106958008A9469 /* BackgroundDownload.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackgroundDownload.swift; sourceTree = "<group>"; };
97599AA11E26D3B000BA15EF /* BookmarkBooksController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkBooksController.swift; sourceTree = "<group>"; }; 97599AA11E26D3B000BA15EF /* BookmarkBooksController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkBooksController.swift; sourceTree = "<group>"; };
97599ADF1E28031A00BA15EF /* BookmarkSplitController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkSplitController.swift; sourceTree = "<group>"; }; 97599ADF1E28031A00BA15EF /* BookmarkSplitController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkSplitController.swift; sourceTree = "<group>"; };
97599AE11E28193D00BA15EF /* BookmarkCollectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkCollectionController.swift; sourceTree = "<group>"; };
975B90FD1CEB909100D13906 /* iOSExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = iOSExtensions.swift; path = "Kiwix-iOS/iOSExtensions.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 = "<group>"; }; 9763275D1D64FE0F0034F120 /* BookDetailController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookDetailController.swift; sourceTree = "<group>"; };
9764CBD01D806AD800072D6A /* RefreshLibControl.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefreshLibControl.swift; sourceTree = "<group>"; }; 9764CBD01D806AD800072D6A /* RefreshLibControl.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefreshLibControl.swift; sourceTree = "<group>"; };
@ -537,6 +539,7 @@
children = ( children = (
97599ADF1E28031A00BA15EF /* BookmarkSplitController.swift */, 97599ADF1E28031A00BA15EF /* BookmarkSplitController.swift */,
97599AA11E26D3B000BA15EF /* BookmarkBooksController.swift */, 97599AA11E26D3B000BA15EF /* BookmarkBooksController.swift */,
97599AE11E28193D00BA15EF /* BookmarkCollectionController.swift */,
97C5BD4A1D9AF4B5009692CF /* BookmarkController.swift */, 97C5BD4A1D9AF4B5009692CF /* BookmarkController.swift */,
97219DBC1D383A00009FDFF1 /* BookmarkHUD.swift */, 97219DBC1D383A00009FDFF1 /* BookmarkHUD.swift */,
); );
@ -1167,6 +1170,7 @@
973207A41DD1983D00EDD3DC /* EmptyTableConfigExtension.swift in Sources */, 973207A41DD1983D00EDD3DC /* EmptyTableConfigExtension.swift in Sources */,
97A127C91D777CF100FB204D /* RecentSearchController.swift in Sources */, 97A127C91D777CF100FB204D /* RecentSearchController.swift in Sources */,
970E7F7B1DA0069600741290 /* FontSizeController.swift in Sources */, 970E7F7B1DA0069600741290 /* FontSizeController.swift in Sources */,
97599AE21E28193D00BA15EF /* BookmarkCollectionController.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };