mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-25 21:05:09 -04:00
Empty table view text location fix
This commit is contained in:
parent
3acc1ddf08
commit
621d733cf3
@ -26,8 +26,8 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
// tableView.emptyDataSetSource = self
|
||||
// tableView.emptyDataSetDelegate = self
|
||||
tableView.emptyDataSetSource = self
|
||||
tableView.emptyDataSetDelegate = self
|
||||
tableView.tableFooterView = UIView()
|
||||
|
||||
refreshControl = RefreshLibControl()
|
||||
|
@ -10,8 +10,9 @@ import UIKit
|
||||
import CoreData
|
||||
import DZNEmptyDataSet
|
||||
|
||||
class DownloadTasksController: UITableViewController, NSFetchedResultsControllerDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
|
||||
class DownloadTasksController: UIViewController, NSFetchedResultsControllerDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
|
||||
|
||||
@IBOutlet weak var tableView: UITableView!
|
||||
var timer: NSTimer?
|
||||
|
||||
// MARK: - Override
|
||||
@ -84,16 +85,16 @@ class DownloadTasksController: UITableViewController, NSFetchedResultsController
|
||||
|
||||
// MARK: - TableView Data Source
|
||||
|
||||
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
|
||||
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
|
||||
return fetchedResultController.sections?.count ?? 0
|
||||
}
|
||||
|
||||
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
guard let sectionInfo = fetchedResultController.sections?[section] else {return 0}
|
||||
return sectionInfo.numberOfObjects
|
||||
}
|
||||
|
||||
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
|
||||
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
|
||||
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
|
||||
self.configureCell(cell, atIndexPath: indexPath)
|
||||
return cell
|
||||
@ -137,19 +138,19 @@ class DownloadTasksController: UITableViewController, NSFetchedResultsController
|
||||
|
||||
// MARK: Other Data Source
|
||||
|
||||
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
|
||||
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]? {
|
||||
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 {
|
||||
func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int {
|
||||
return fetchedResultController.sectionForSectionIndexTitle(title, atIndex: index)
|
||||
}
|
||||
|
||||
@ -167,13 +168,13 @@ class DownloadTasksController: UITableViewController, NSFetchedResultsController
|
||||
// header.textLabel?.font = UIFont.boldSystemFontOfSize(14)
|
||||
// }
|
||||
//
|
||||
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
|
||||
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {}
|
||||
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {}
|
||||
|
||||
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
|
||||
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
|
||||
guard let downloadTask = self.fetchedResultController.objectAtIndexPath(indexPath) as? DownloadTask else {return nil}
|
||||
|
||||
var actions = [UITableViewRowAction]()
|
||||
|
@ -26,9 +26,6 @@ extension DownloadTasksController {
|
||||
return NSAttributedString(string: string, attributes: attributes)
|
||||
}
|
||||
|
||||
func verticalOffsetForEmptyDataSet(scrollView: UIScrollView!) -> CGFloat {
|
||||
return scrollView.contentInset.top - 64
|
||||
}
|
||||
}
|
||||
|
||||
extension LocalBooksController {
|
||||
@ -37,10 +34,6 @@ extension LocalBooksController {
|
||||
let attributes = [NSFontAttributeName: UIFont.systemFontOfSize(18), NSForegroundColorAttributeName: UIColor.darkGrayColor()]
|
||||
return NSAttributedString(string: string, attributes: attributes)
|
||||
}
|
||||
|
||||
func verticalOffsetForEmptyDataSet(scrollView: UIScrollView!) -> CGFloat {
|
||||
return scrollView.contentInset.top - 64
|
||||
}
|
||||
}
|
||||
|
||||
extension BookDetailController {
|
||||
@ -49,10 +42,6 @@ extension BookDetailController {
|
||||
let attributes = [NSFontAttributeName: UIFont.systemFontOfSize(18), NSForegroundColorAttributeName: UIColor.darkGrayColor()]
|
||||
return NSAttributedString(string: string, attributes: attributes)
|
||||
}
|
||||
|
||||
func verticalOffsetForEmptyDataSet(scrollView: UIScrollView!) -> CGFloat {
|
||||
return scrollView.contentInset.top - 64
|
||||
}
|
||||
}
|
||||
|
||||
extension LanguageFilterController {
|
||||
@ -62,7 +51,7 @@ extension LanguageFilterController {
|
||||
return NSAttributedString(string: string, attributes: attributes)
|
||||
}
|
||||
|
||||
func verticalOffsetForEmptyDataSet(scrollView: UIScrollView!) -> CGFloat {
|
||||
return scrollView.contentInset.top - 64
|
||||
}
|
||||
// func verticalOffsetForEmptyDataSet(scrollView: UIScrollView!) -> CGFloat {
|
||||
// return scrollView.contentInset.top - 64
|
||||
// }
|
||||
}
|
||||
|
@ -11,13 +11,15 @@ import CoreData
|
||||
import Operations
|
||||
import DZNEmptyDataSet
|
||||
|
||||
class LocalBooksController: UITableViewController, NSFetchedResultsControllerDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
|
||||
class LocalBooksController: UIViewController, NSFetchedResultsControllerDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
|
||||
|
||||
@IBOutlet weak var tableView: UITableView!
|
||||
|
||||
// MARK: - Override
|
||||
|
||||
required init?(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
title = ""
|
||||
title = "Local"
|
||||
tabBarItem.title = LocalizedStrings.LibraryTabTitle.local
|
||||
tabBarItem.image = UIImage(named: "Folder")
|
||||
tabBarItem.selectedImage = UIImage(named: "FolderFilled")
|
||||
@ -61,16 +63,16 @@ class LocalBooksController: UITableViewController, NSFetchedResultsControllerDel
|
||||
|
||||
// MARK: - TableView Data Source
|
||||
|
||||
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
|
||||
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
|
||||
return fetchedResultController.sections?.count ?? 0
|
||||
}
|
||||
|
||||
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
guard let sectionInfo = fetchedResultController.sections?[section] else {return 0}
|
||||
return sectionInfo.numberOfObjects
|
||||
}
|
||||
|
||||
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
|
||||
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
|
||||
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
|
||||
self.configureCell(cell, atIndexPath: indexPath)
|
||||
return cell
|
||||
@ -89,43 +91,43 @@ class LocalBooksController: UITableViewController, NSFetchedResultsControllerDel
|
||||
|
||||
// MARK: Other Data Source
|
||||
|
||||
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
|
||||
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]? {
|
||||
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 {
|
||||
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, heightForHeaderInSection section: Int) -> CGFloat {
|
||||
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) {
|
||||
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
|
||||
guard let header = view as? UITableViewHeaderFooterView else {return}
|
||||
header.textLabel?.font = UIFont.boldSystemFontOfSize(14)
|
||||
}
|
||||
|
||||
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
|
||||
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {}
|
||||
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {}
|
||||
|
||||
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
|
||||
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
|
||||
let delete = UITableViewRowAction(style: .Destructive, title: LocalizedStrings.delete) { (action, indexPath) -> Void in
|
||||
guard let book = self.fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return}
|
||||
self.managedObjectContext.performBlock({ () -> Void in
|
||||
|
@ -49,7 +49,7 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.7.1606</string>
|
||||
<string>1.7.1634</string>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
|
@ -11,14 +11,15 @@
|
||||
<!--Cloud-->
|
||||
<scene sceneID="x2g-Rm-HUS">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="TMf-0g-nhn" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
<tableViewController id="NBP-9l-DA2" customClass="CloudBooksController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="sit-w1-Gpr">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<rect key="frame" x="0.0" y="64" width="375" height="603"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Cell" id="CVW-Rc-hA9" customClass="BasicBookCell" customModule="Kiwix" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="92" width="375" height="44"/>
|
||||
<rect key="frame" x="0.0" y="28" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="CVW-Rc-hA9" id="xiL-PL-4ko">
|
||||
<frame key="frameInset" width="375" height="43.5"/>
|
||||
@ -107,10 +108,10 @@
|
||||
<outlet property="delegate" destination="NBP-9l-DA2" id="sqX-J8-zlB"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<extendedEdge key="edgesForExtendedLayout" bottom="YES"/>
|
||||
<tabBarItem key="tabBarItem" title="Cloud" id="f2P-kQ-k9n"/>
|
||||
<navigationItem key="navigationItem" id="JNh-sG-ihV"/>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="TMf-0g-nhn" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-143" y="-2082"/>
|
||||
</scene>
|
||||
@ -126,8 +127,8 @@
|
||||
</tabBar>
|
||||
<connections>
|
||||
<segue destination="NBP-9l-DA2" kind="relationship" relationship="viewControllers" id="Zb0-fu-dUz"/>
|
||||
<segue destination="1jT-pv-sMM" kind="relationship" relationship="viewControllers" id="qHz-6T-Iyf"/>
|
||||
<segue destination="UgF-wM-QR2" kind="relationship" relationship="viewControllers" id="gII-bh-8JM"/>
|
||||
<segue destination="7U1-44-aEc" kind="relationship" relationship="viewControllers" id="4Zm-9B-3Cv"/>
|
||||
<segue destination="7F2-9D-s8D" kind="relationship" relationship="viewControllers" id="Gql-Nm-iFI"/>
|
||||
</connections>
|
||||
</tabBarController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="fdG-uk-I8F" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
@ -335,199 +336,227 @@
|
||||
</objects>
|
||||
<point key="canvasLocation" x="724" y="-1203"/>
|
||||
</scene>
|
||||
<!--Local-->
|
||||
<scene sceneID="raW-mN-OFh">
|
||||
<objects>
|
||||
<tableViewController id="UgF-wM-QR2" customClass="LocalBooksController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="nsT-i8-6kX">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Cell" id="nka-b0-ZmD" customClass="BasicBookCell" customModule="Kiwix" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="92" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="nka-b0-ZmD" id="8e2-Je-FJO">
|
||||
<frame key="frameInset" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" minimumFontSize="8" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oQE-dD-h38">
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="19.5" id="K11-54-ePs"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="I9A-bp-E4l">
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="Vzn-er-D7F"/>
|
||||
<constraint firstAttribute="height" constant="32" id="ac3-fQ-SdM"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z2j-6z-goy">
|
||||
<fontDescription key="fontDescription" type="system" pointSize="11"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="P" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="m78-6c-sND">
|
||||
<color key="backgroundColor" red="0.66666666669999997" green="0.66666666669999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="13" id="6aG-z5-0V8"/>
|
||||
<constraint firstAttribute="height" constant="13" id="tER-FS-P2l"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="11"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="I" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x5k-16-BqV">
|
||||
<color key="backgroundColor" red="0.66666666669999997" green="0.66666666669999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="13" id="cFr-DE-BjB"/>
|
||||
<constraint firstAttribute="width" constant="13" id="hmG-zl-XXI"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="11"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fUo-jn-9aX">
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="10" id="aXP-cf-p5h"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="x5k-16-BqV" firstAttribute="top" secondItem="fUo-jn-9aX" secondAttribute="bottom" id="66a-sF-NXZ"/>
|
||||
<constraint firstItem="m78-6c-sND" firstAttribute="leading" secondItem="I9A-bp-E4l" secondAttribute="trailing" constant="4" id="Cce-mO-8Xy"/>
|
||||
<constraint firstItem="I9A-bp-E4l" firstAttribute="leading" secondItem="8e2-Je-FJO" secondAttribute="leadingMargin" constant="-2" id="MBb-Fi-zPS"/>
|
||||
<constraint firstItem="oQE-dD-h38" firstAttribute="top" secondItem="8e2-Je-FJO" secondAttribute="topMargin" constant="-2" id="Omw-5H-k8A"/>
|
||||
<constraint firstItem="oQE-dD-h38" firstAttribute="leading" secondItem="m78-6c-sND" secondAttribute="trailing" constant="4" id="PfC-N3-0WF"/>
|
||||
<constraint firstAttribute="bottomMargin" secondItem="z2j-6z-goy" secondAttribute="bottom" constant="-2.5" id="WJx-wq-NJd"/>
|
||||
<constraint firstItem="fUo-jn-9aX" firstAttribute="leading" secondItem="I9A-bp-E4l" secondAttribute="trailing" constant="4" id="Wa0-BM-t60"/>
|
||||
<constraint firstItem="fUo-jn-9aX" firstAttribute="top" secondItem="m78-6c-sND" secondAttribute="bottom" id="WsW-UR-rhZ"/>
|
||||
<constraint firstItem="I9A-bp-E4l" firstAttribute="centerY" secondItem="8e2-Je-FJO" secondAttribute="centerY" id="eLV-CX-TIn"/>
|
||||
<constraint firstItem="x5k-16-BqV" firstAttribute="leading" secondItem="I9A-bp-E4l" secondAttribute="trailing" constant="4" id="ec6-zR-8og"/>
|
||||
<constraint firstItem="fUo-jn-9aX" firstAttribute="height" secondItem="8e2-Je-FJO" secondAttribute="height" multiplier="0.09" id="hZb-5z-bA7"/>
|
||||
<constraint firstItem="z2j-6z-goy" firstAttribute="top" secondItem="oQE-dD-h38" secondAttribute="bottom" id="lWj-2s-4NU"/>
|
||||
<constraint firstItem="fUo-jn-9aX" firstAttribute="centerY" secondItem="8e2-Je-FJO" secondAttribute="centerY" id="t3L-fI-Ekk"/>
|
||||
<constraint firstItem="z2j-6z-goy" firstAttribute="leading" secondItem="x5k-16-BqV" secondAttribute="trailing" constant="4" id="zBd-sE-GRA"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="I9A-bp-E4l" firstAttribute="top" secondItem="nka-b0-ZmD" secondAttribute="top" constant="6" id="DnW-K1-L95"/>
|
||||
<constraint firstAttribute="trailing" secondItem="oQE-dD-h38" secondAttribute="trailing" constant="40" id="R37-Uj-W8c"/>
|
||||
<constraint firstAttribute="trailing" secondItem="z2j-6z-goy" secondAttribute="trailing" constant="40" id="aST-2H-KuH"/>
|
||||
</constraints>
|
||||
<variation key="default">
|
||||
<mask key="constraints">
|
||||
<exclude reference="DnW-K1-L95"/>
|
||||
</mask>
|
||||
</variation>
|
||||
<connections>
|
||||
<outlet property="favIcon" destination="I9A-bp-E4l" id="xjE-lI-Rgz"/>
|
||||
<outlet property="hasIndexIndicator" destination="x5k-16-BqV" id="25X-oZ-JPW"/>
|
||||
<outlet property="hasPicIndicator" destination="m78-6c-sND" id="zXy-t3-J7w"/>
|
||||
<outlet property="subtitleLabel" destination="z2j-6z-goy" id="XKA-Il-WMq"/>
|
||||
<outlet property="titleLabel" destination="oQE-dD-h38" id="LXS-i7-i1M"/>
|
||||
<segue destination="5Sz-gR-dgz" kind="showDetail" identifier="ShowBookDetail" id="YBq-US-fwE"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="UgF-wM-QR2" id="4rw-4Y-Q8E"/>
|
||||
<outlet property="delegate" destination="UgF-wM-QR2" id="yB7-In-Cv3"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<tabBarItem key="tabBarItem" title="Local" id="R3g-0K-R80"/>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="yJG-EP-Ec3" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1644" y="-2082"/>
|
||||
</scene>
|
||||
<!--Download-->
|
||||
<scene sceneID="sjb-AJ-Set">
|
||||
<scene sceneID="Dfc-4k-8uO">
|
||||
<objects>
|
||||
<tableViewController id="1jT-pv-sMM" customClass="DownloadTasksController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="100" sectionHeaderHeight="28" sectionFooterHeight="28" id="PmA-ei-OQx">
|
||||
<viewController id="7U1-44-aEc" customClass="DownloadTasksController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="kxT-1r-Dgp"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="g59-Ou-zU4"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Lfq-oN-mpU">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="8u2-KO-TvT">
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Cell" rowHeight="82" id="ekT-ed-PU9" customClass="DownloadBookCell" customModule="Kiwix" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="92" width="375" height="82"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ekT-ed-PU9" id="oM4-Hy-Mkf">
|
||||
<frame key="frameInset" width="375" height="81.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" minimumFontSize="8" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Hji-3G-yaJ">
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Too-68-SzG">
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="32" id="Y0e-hv-sVn"/>
|
||||
<constraint firstAttribute="width" constant="32" id="go0-rs-4oQ"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="g0o-rT-qxm"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" minimumScaleFactor="0.10000000149011612" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="v8H-ZV-HNV">
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.33333333329999998" green="0.33333333329999998" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0%" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6Zg-Xf-xgS">
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="7Tn-he-LJu"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="6Zg-Xf-xgS" firstAttribute="leading" secondItem="Hji-3G-yaJ" secondAttribute="trailing" constant="2" id="5lO-Sp-t2G"/>
|
||||
<constraint firstItem="v8H-ZV-HNV" firstAttribute="leading" secondItem="oM4-Hy-Mkf" secondAttribute="leadingMargin" id="7FW-0t-ljT"/>
|
||||
<constraint firstAttribute="leadingMargin" secondItem="Too-68-SzG" secondAttribute="leading" constant="-2" id="9Vd-3e-m5f"/>
|
||||
<constraint firstAttribute="bottomMargin" secondItem="v8H-ZV-HNV" secondAttribute="bottom" constant="-8" id="9ac-Vl-xk9"/>
|
||||
<constraint firstAttribute="trailingMargin" secondItem="6Zg-Xf-xgS" secondAttribute="trailing" id="D9Q-Dz-SXA"/>
|
||||
<constraint firstItem="g0o-rT-qxm" firstAttribute="top" secondItem="Too-68-SzG" secondAttribute="bottom" constant="4" id="IJR-yJ-4xs"/>
|
||||
<constraint firstItem="g0o-rT-qxm" firstAttribute="trailing" secondItem="oM4-Hy-Mkf" secondAttribute="trailingMargin" id="OFh-b3-2bf"/>
|
||||
<constraint firstAttribute="topMargin" secondItem="Hji-3G-yaJ" secondAttribute="top" id="U1i-uZ-le4"/>
|
||||
<constraint firstItem="6Zg-Xf-xgS" firstAttribute="centerY" secondItem="Hji-3G-yaJ" secondAttribute="centerY" id="YMh-ny-Ldi"/>
|
||||
<constraint firstItem="6Zg-Xf-xgS" firstAttribute="height" secondItem="Hji-3G-yaJ" secondAttribute="height" id="b9b-x4-38M"/>
|
||||
<constraint firstAttribute="topMargin" secondItem="Too-68-SzG" secondAttribute="top" id="d1d-HJ-OWT"/>
|
||||
<constraint firstItem="g0o-rT-qxm" firstAttribute="leading" secondItem="oM4-Hy-Mkf" secondAttribute="leadingMargin" id="egX-0j-bnY"/>
|
||||
<constraint firstItem="Hji-3G-yaJ" firstAttribute="height" secondItem="Too-68-SzG" secondAttribute="height" id="fh9-1t-9il"/>
|
||||
<constraint firstItem="Hji-3G-yaJ" firstAttribute="leading" secondItem="Too-68-SzG" secondAttribute="trailing" constant="6" id="u7a-MC-Z6U"/>
|
||||
<constraint firstItem="v8H-ZV-HNV" firstAttribute="top" secondItem="g0o-rT-qxm" secondAttribute="bottom" constant="4" id="ybT-oZ-V6L"/>
|
||||
<constraint firstItem="v8H-ZV-HNV" firstAttribute="trailing" secondItem="oM4-Hy-Mkf" secondAttribute="trailingMargin" id="zdf-lg-EBb"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<connections>
|
||||
<outlet property="detailLabel" destination="v8H-ZV-HNV" id="nxi-1k-SWg"/>
|
||||
<outlet property="favIcon" destination="Too-68-SzG" id="nfU-AD-1Ji"/>
|
||||
<outlet property="progressLabel" destination="6Zg-Xf-xgS" id="9Tf-0y-Ix7"/>
|
||||
<outlet property="progressView" destination="g0o-rT-qxm" id="Jaw-Zr-uJY"/>
|
||||
<outlet property="titleLabel" destination="Hji-3G-yaJ" id="mZ2-S6-XEO"/>
|
||||
<segue destination="5Sz-gR-dgz" kind="showDetail" identifier="ShowBookDetail" id="eUy-Zq-fkw"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Cell" rowHeight="82" id="ekT-ed-PU9" customClass="DownloadBookCell" customModule="Kiwix" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="92" width="375" height="82"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ekT-ed-PU9" id="oM4-Hy-Mkf">
|
||||
<frame key="frameInset" width="375" height="81.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" minimumFontSize="8" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Hji-3G-yaJ">
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Too-68-SzG">
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="32" id="Y0e-hv-sVn"/>
|
||||
<constraint firstAttribute="width" constant="32" id="go0-rs-4oQ"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="g0o-rT-qxm"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" minimumScaleFactor="0.10000000149011612" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="v8H-ZV-HNV">
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.33333333329999998" green="0.33333333329999998" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0%" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6Zg-Xf-xgS">
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="7Tn-he-LJu"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="6Zg-Xf-xgS" firstAttribute="leading" secondItem="Hji-3G-yaJ" secondAttribute="trailing" constant="2" id="5lO-Sp-t2G"/>
|
||||
<constraint firstItem="v8H-ZV-HNV" firstAttribute="leading" secondItem="oM4-Hy-Mkf" secondAttribute="leadingMargin" id="7FW-0t-ljT"/>
|
||||
<constraint firstAttribute="leadingMargin" secondItem="Too-68-SzG" secondAttribute="leading" constant="-2" id="9Vd-3e-m5f"/>
|
||||
<constraint firstAttribute="bottomMargin" secondItem="v8H-ZV-HNV" secondAttribute="bottom" constant="-8" id="9ac-Vl-xk9"/>
|
||||
<constraint firstAttribute="trailingMargin" secondItem="6Zg-Xf-xgS" secondAttribute="trailing" id="D9Q-Dz-SXA"/>
|
||||
<constraint firstItem="g0o-rT-qxm" firstAttribute="top" secondItem="Too-68-SzG" secondAttribute="bottom" constant="4" id="IJR-yJ-4xs"/>
|
||||
<constraint firstItem="g0o-rT-qxm" firstAttribute="trailing" secondItem="oM4-Hy-Mkf" secondAttribute="trailingMargin" id="OFh-b3-2bf"/>
|
||||
<constraint firstAttribute="topMargin" secondItem="Hji-3G-yaJ" secondAttribute="top" id="U1i-uZ-le4"/>
|
||||
<constraint firstItem="6Zg-Xf-xgS" firstAttribute="centerY" secondItem="Hji-3G-yaJ" secondAttribute="centerY" id="YMh-ny-Ldi"/>
|
||||
<constraint firstItem="6Zg-Xf-xgS" firstAttribute="height" secondItem="Hji-3G-yaJ" secondAttribute="height" id="b9b-x4-38M"/>
|
||||
<constraint firstAttribute="topMargin" secondItem="Too-68-SzG" secondAttribute="top" id="d1d-HJ-OWT"/>
|
||||
<constraint firstItem="g0o-rT-qxm" firstAttribute="leading" secondItem="oM4-Hy-Mkf" secondAttribute="leadingMargin" id="egX-0j-bnY"/>
|
||||
<constraint firstItem="Hji-3G-yaJ" firstAttribute="height" secondItem="Too-68-SzG" secondAttribute="height" id="fh9-1t-9il"/>
|
||||
<constraint firstItem="Hji-3G-yaJ" firstAttribute="leading" secondItem="Too-68-SzG" secondAttribute="trailing" constant="6" id="u7a-MC-Z6U"/>
|
||||
<constraint firstItem="v8H-ZV-HNV" firstAttribute="top" secondItem="g0o-rT-qxm" secondAttribute="bottom" constant="4" id="ybT-oZ-V6L"/>
|
||||
<constraint firstItem="v8H-ZV-HNV" firstAttribute="trailing" secondItem="oM4-Hy-Mkf" secondAttribute="trailingMargin" id="zdf-lg-EBb"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<connections>
|
||||
<outlet property="detailLabel" destination="v8H-ZV-HNV" id="nxi-1k-SWg"/>
|
||||
<outlet property="favIcon" destination="Too-68-SzG" id="nfU-AD-1Ji"/>
|
||||
<outlet property="progressLabel" destination="6Zg-Xf-xgS" id="9Tf-0y-Ix7"/>
|
||||
<outlet property="progressView" destination="g0o-rT-qxm" id="Jaw-Zr-uJY"/>
|
||||
<outlet property="titleLabel" destination="Hji-3G-yaJ" id="mZ2-S6-XEO"/>
|
||||
<segue destination="5Sz-gR-dgz" kind="showDetail" identifier="ShowBookDetail" id="eUy-Zq-fkw"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="1jT-pv-sMM" id="6Fl-Vq-IMf"/>
|
||||
<outlet property="delegate" destination="1jT-pv-sMM" id="c9L-pM-eiZ"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<tabBarItem key="tabBarItem" title="Download" id="Re6-71-CgJ"/>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="y49-5w-Edz" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="8u2-KO-TvT" secondAttribute="trailing" id="0KV-wg-nPy"/>
|
||||
<constraint firstItem="g59-Ou-zU4" firstAttribute="top" secondItem="8u2-KO-TvT" secondAttribute="bottom" constant="-49" id="8Do-5k-TXo"/>
|
||||
<constraint firstItem="8u2-KO-TvT" firstAttribute="top" secondItem="kxT-1r-Dgp" secondAttribute="bottom" constant="-64" id="lcE-f1-hpD"/>
|
||||
<constraint firstItem="8u2-KO-TvT" firstAttribute="leading" secondItem="Lfq-oN-mpU" secondAttribute="leading" id="pQk-Tb-XMY"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="Download" id="k3e-zU-RVs"/>
|
||||
<connections>
|
||||
<outlet property="tableView" destination="8u2-KO-TvT" id="Sb0-Ir-O7u"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="3RF-Uc-QdV" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="724" y="-2082.008995502249"/>
|
||||
</scene>
|
||||
<!--Local-->
|
||||
<scene sceneID="d9I-Yb-VwG">
|
||||
<objects>
|
||||
<viewController id="7F2-9D-s8D" customClass="LocalBooksController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Cko-ed-ceh"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="Drp-Si-aLW"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="sGb-6r-dsG">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="Ofc-dk-yGh">
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Cell" id="nka-b0-ZmD" customClass="BasicBookCell" customModule="Kiwix" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="92" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="nka-b0-ZmD" id="8e2-Je-FJO">
|
||||
<frame key="frameInset" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" minimumFontSize="8" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oQE-dD-h38">
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="19.5" id="K11-54-ePs"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="I9A-bp-E4l">
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="Vzn-er-D7F"/>
|
||||
<constraint firstAttribute="height" constant="32" id="ac3-fQ-SdM"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z2j-6z-goy">
|
||||
<fontDescription key="fontDescription" type="system" pointSize="11"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="P" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="m78-6c-sND">
|
||||
<color key="backgroundColor" red="0.66666666669999997" green="0.66666666669999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="13" id="6aG-z5-0V8"/>
|
||||
<constraint firstAttribute="height" constant="13" id="tER-FS-P2l"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="11"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="I" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x5k-16-BqV">
|
||||
<color key="backgroundColor" red="0.66666666669999997" green="0.66666666669999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="13" id="cFr-DE-BjB"/>
|
||||
<constraint firstAttribute="width" constant="13" id="hmG-zl-XXI"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="11"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fUo-jn-9aX">
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="10" id="aXP-cf-p5h"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="x5k-16-BqV" firstAttribute="top" secondItem="fUo-jn-9aX" secondAttribute="bottom" id="66a-sF-NXZ"/>
|
||||
<constraint firstItem="m78-6c-sND" firstAttribute="leading" secondItem="I9A-bp-E4l" secondAttribute="trailing" constant="4" id="Cce-mO-8Xy"/>
|
||||
<constraint firstItem="I9A-bp-E4l" firstAttribute="leading" secondItem="8e2-Je-FJO" secondAttribute="leadingMargin" constant="-2" id="MBb-Fi-zPS"/>
|
||||
<constraint firstItem="oQE-dD-h38" firstAttribute="top" secondItem="8e2-Je-FJO" secondAttribute="topMargin" constant="-2" id="Omw-5H-k8A"/>
|
||||
<constraint firstItem="oQE-dD-h38" firstAttribute="leading" secondItem="m78-6c-sND" secondAttribute="trailing" constant="4" id="PfC-N3-0WF"/>
|
||||
<constraint firstAttribute="bottomMargin" secondItem="z2j-6z-goy" secondAttribute="bottom" constant="-2.5" id="WJx-wq-NJd"/>
|
||||
<constraint firstItem="fUo-jn-9aX" firstAttribute="leading" secondItem="I9A-bp-E4l" secondAttribute="trailing" constant="4" id="Wa0-BM-t60"/>
|
||||
<constraint firstItem="fUo-jn-9aX" firstAttribute="top" secondItem="m78-6c-sND" secondAttribute="bottom" id="WsW-UR-rhZ"/>
|
||||
<constraint firstItem="I9A-bp-E4l" firstAttribute="centerY" secondItem="8e2-Je-FJO" secondAttribute="centerY" id="eLV-CX-TIn"/>
|
||||
<constraint firstItem="x5k-16-BqV" firstAttribute="leading" secondItem="I9A-bp-E4l" secondAttribute="trailing" constant="4" id="ec6-zR-8og"/>
|
||||
<constraint firstItem="fUo-jn-9aX" firstAttribute="height" secondItem="8e2-Je-FJO" secondAttribute="height" multiplier="0.09" id="hZb-5z-bA7"/>
|
||||
<constraint firstItem="z2j-6z-goy" firstAttribute="top" secondItem="oQE-dD-h38" secondAttribute="bottom" id="lWj-2s-4NU"/>
|
||||
<constraint firstItem="fUo-jn-9aX" firstAttribute="centerY" secondItem="8e2-Je-FJO" secondAttribute="centerY" id="t3L-fI-Ekk"/>
|
||||
<constraint firstItem="z2j-6z-goy" firstAttribute="leading" secondItem="x5k-16-BqV" secondAttribute="trailing" constant="4" id="zBd-sE-GRA"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="I9A-bp-E4l" firstAttribute="top" secondItem="nka-b0-ZmD" secondAttribute="top" constant="6" id="DnW-K1-L95"/>
|
||||
<constraint firstAttribute="trailing" secondItem="oQE-dD-h38" secondAttribute="trailing" constant="40" id="R37-Uj-W8c"/>
|
||||
<constraint firstAttribute="trailing" secondItem="z2j-6z-goy" secondAttribute="trailing" constant="40" id="aST-2H-KuH"/>
|
||||
</constraints>
|
||||
<variation key="default">
|
||||
<mask key="constraints">
|
||||
<exclude reference="DnW-K1-L95"/>
|
||||
</mask>
|
||||
</variation>
|
||||
<connections>
|
||||
<outlet property="favIcon" destination="I9A-bp-E4l" id="xjE-lI-Rgz"/>
|
||||
<outlet property="hasIndexIndicator" destination="x5k-16-BqV" id="25X-oZ-JPW"/>
|
||||
<outlet property="hasPicIndicator" destination="m78-6c-sND" id="zXy-t3-J7w"/>
|
||||
<outlet property="subtitleLabel" destination="z2j-6z-goy" id="XKA-Il-WMq"/>
|
||||
<outlet property="titleLabel" destination="oQE-dD-h38" id="LXS-i7-i1M"/>
|
||||
<segue destination="5Sz-gR-dgz" kind="showDetail" identifier="ShowBookDetail" id="YBq-US-fwE"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="Drp-Si-aLW" firstAttribute="top" secondItem="Ofc-dk-yGh" secondAttribute="bottom" constant="-49" id="27R-n8-mas"/>
|
||||
<constraint firstItem="Ofc-dk-yGh" firstAttribute="leading" secondItem="sGb-6r-dsG" secondAttribute="leading" id="DsH-KT-BSc"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Ofc-dk-yGh" secondAttribute="trailing" id="hNG-fK-7Bf"/>
|
||||
<constraint firstItem="Ofc-dk-yGh" firstAttribute="top" secondItem="Cko-ed-ceh" secondAttribute="bottom" constant="-64" id="kiZ-jv-os8"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="Local" id="YcZ-Z5-yVM"/>
|
||||
<connections>
|
||||
<outlet property="tableView" destination="Ofc-dk-yGh" id="jPp-jZ-xVx"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="bcg-9M-Ggg" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1644" y="-2082.008995502249"/>
|
||||
</scene>
|
||||
<!--Language Filter Controller-->
|
||||
<scene sceneID="IeL-6r-fE6">
|
||||
<objects>
|
||||
@ -685,6 +714,6 @@
|
||||
</scene>
|
||||
</scenes>
|
||||
<inferredMetricsTieBreakers>
|
||||
<segue reference="YBq-US-fwE"/>
|
||||
<segue reference="hUB-db-MDL"/>
|
||||
</inferredMetricsTieBreakers>
|
||||
</document>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.7.2035</string>
|
||||
<string>1.7.2073</string>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionMainStoryboard</key>
|
||||
|
@ -19,21 +19,5 @@
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Kiwix-iOS/Controller/Library/LocalBooksController.swift"
|
||||
timestampString = "494262895.106702"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "40"
|
||||
endingLineNumber = "40"
|
||||
landmarkName = "prepareForSegue(segue:sender:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
</Bucket>
|
||||
|
@ -12,6 +12,7 @@ import Operations
|
||||
class RefreshLibraryOperation: GroupOperation {
|
||||
|
||||
private(set) var hasUpdate = false
|
||||
private(set) var firstTime = false
|
||||
|
||||
init() {
|
||||
let retrive = Retrive()
|
||||
@ -22,6 +23,7 @@ class RefreshLibraryOperation: GroupOperation {
|
||||
process.addObserver(DidFinishObserver { (operation, errors) in
|
||||
guard let operation = operation as? Process else {return}
|
||||
self.hasUpdate = operation.hasUpdate
|
||||
self.firstTime = operation.firstTime
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -50,6 +52,7 @@ private class Retrive: Operation, ResultOperationType {
|
||||
private class Process: Operation, NSXMLParserDelegate, AutomaticInjectionOperationType {
|
||||
var requirement: NSData?
|
||||
private(set) var hasUpdate = false
|
||||
private(set) var firstTime = false
|
||||
private let context: NSManagedObjectContext
|
||||
private var oldBookIDs = Set<String>()
|
||||
private var newBookIDs = Set<String>()
|
||||
@ -110,6 +113,7 @@ private class Process: Operation, NSXMLParserDelegate, AutomaticInjectionOperati
|
||||
})
|
||||
|
||||
saveManagedObjectContexts()
|
||||
firstTime = Preference.libraryLastRefreshTime == nil
|
||||
Preference.libraryLastRefreshTime = NSDate()
|
||||
}
|
||||
|
||||
|
@ -11,17 +11,6 @@ import Operations
|
||||
|
||||
// MARK: - Alerts
|
||||
|
||||
class SpaceNotEnoughAlert: AlertOperation<CloudBooksController> {
|
||||
let comment = "Library: Download Space Not Enough Alert"
|
||||
init(book: Book, presentationContext: CloudBooksController) {
|
||||
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)
|
||||
addActionWithTitle(LocalizedStrings.ok)
|
||||
}
|
||||
}
|
||||
|
||||
class RefreshLibraryLanguageFilterAlert: AlertOperation<CloudBooksController> {
|
||||
let comment = "Library: Language Filter Alert"
|
||||
let context = UIApplication.appDelegate.managedObjectContext
|
||||
@ -79,13 +68,13 @@ class RefreshLibraryLanguageFilterAlert: AlertOperation<CloudBooksController> {
|
||||
}
|
||||
|
||||
class RefreshLibraryInternetRequiredAlert: AlertOperation<CloudBooksController> {
|
||||
let comment = "Library: Internet Required Alert"
|
||||
let comment = "Library, Internet Required Alert"
|
||||
init(presentationContext: CloudBooksController) {
|
||||
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)
|
||||
addActionWithTitle(LocalizedStrings.ok)
|
||||
title = NSLocalizedString("Internet Required", comment: comment)
|
||||
message = NSLocalizedString("Please connect to the Internet to refresh library.", comment: comment)
|
||||
addActionWithTitle(LocalizedStrings.Common.ok)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user