Disk space detection restructure

This commit is contained in:
Chris Li 2016-08-18 15:30:58 -04:00
parent 8e5e969768
commit bb10595f37
8 changed files with 36 additions and 55 deletions

View File

@ -9,7 +9,7 @@
import UIKit import UIKit
import CoreData import CoreData
class CloudBooksController: UITableViewController, NSFetchedResultsControllerDelegate, TableCellDelegate{ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDelegate {
var bookDetailController = UIStoryboard.libraryNew.initViewController(BookDetailController.self)! var bookDetailController = UIStoryboard.libraryNew.initViewController(BookDetailController.self)!
@ -17,7 +17,7 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel
super.viewDidLoad() super.viewDidLoad()
title = "" title = ""
navigationController?.view.backgroundColor = UIColor.whiteColor() navigationController?.view.backgroundColor = UIColor.whiteColor()
splitViewController?.tabBarItem.title = "Cloud" tabBarItem.title = "Cloud"
} }
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
@ -36,23 +36,8 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel
} }
// MARK: - TableCellDelegate @IBAction func dismissSelf(sender: UIBarButtonItem) {
dismissViewControllerAnimated(true, completion: nil)
func didTapOnAccessoryViewForCell(cell: UITableViewCell) {
guard let indexPath = tableView.indexPathForCell(cell),
let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return}
switch book.spaceState {
case .Enough:
Network.sharedInstance.download(book)
//case .Caution:
// TODO: - Switch to a global op queue
//Network.sharedInstance.operationQueue.addOperation(SpaceCautionAlert(book: book, presentationContext: self))
//case .NotEnough:
// TODO: - Switch to a global op queue
//Network.sharedInstance.operationQueue.addOperation(SpaceNotEnoughAlert(book: book, presentationContext: self))
default:
break
}
} }
// MARK: - TableView Data Source // MARK: - TableView Data Source
@ -102,10 +87,6 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel
// MARK: - Table View Delegate // MARK: - Table View Delegate
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
guard let book = fetchedResultController.objectAtIndexPath(indexPath) as? Book else {return}
}
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
guard tableView.numberOfSections > 1 else {return 0.0} guard tableView.numberOfSections > 1 else {return 0.0}
guard let headerText = self.tableView(tableView, titleForHeaderInSection: section) else {return 0.0} guard let headerText = self.tableView(tableView, titleForHeaderInSection: section) else {return 0.0}

View File

@ -225,7 +225,7 @@ class MainController: UIViewController {
func showLibraryButtonTapped() { func showLibraryButtonTapped() {
guard let viewController = libraryNewController ?? UIStoryboard.libraryNew.instantiateInitialViewController() else {return} guard let viewController = libraryNewController ?? UIStoryboard.libraryNew.instantiateInitialViewController() else {return}
viewController.modalPresentationStyle = .OverFullScreen viewController.modalPresentationStyle = .FullScreen
libraryNewController = viewController libraryNewController = viewController
presentViewController(viewController, animated: true, completion: nil) presentViewController(viewController, animated: true, completion: nil)
} }

View File

@ -49,7 +49,7 @@
</dict> </dict>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.7.873</string> <string>1.7.882</string>
<key>ITSAppUsesNonExemptEncryption</key> <key>ITSAppUsesNonExemptEncryption</key>
<false/> <false/>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>

View File

@ -35,17 +35,3 @@ class Utilities: NSObject {
} }
} }
} }
extension UIDevice {
class var availableDiskSpace: Int64? {
do {
let docDirPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).first!
let systemAttributes = try NSFileManager.defaultManager().attributesOfFileSystemForPath(docDirPath)
guard let freeSize = systemAttributes[NSFileSystemFreeSize] as? NSNumber else {return nil}
return freeSize.longLongValue
} catch let error as NSError {
print("Fetch system disk free space failed, error: \(error.localizedDescription)")
return nil
}
}
}

View File

@ -26,7 +26,7 @@
</objects> </objects>
<point key="canvasLocation" x="2177" y="51"/> <point key="canvasLocation" x="2177" y="51"/>
</scene> </scene>
<!--Root View Controller--> <!--Cloud Books Controller-->
<scene sceneID="x2g-Rm-HUS"> <scene sceneID="x2g-Rm-HUS">
<objects> <objects>
<tableViewController clearsSelectionOnViewWillAppear="NO" id="NBP-9l-DA2" customClass="CloudBooksController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController"> <tableViewController clearsSelectionOnViewWillAppear="NO" id="NBP-9l-DA2" customClass="CloudBooksController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
@ -151,7 +151,13 @@
<outlet property="delegate" destination="NBP-9l-DA2" id="sqX-J8-zlB"/> <outlet property="delegate" destination="NBP-9l-DA2" id="sqX-J8-zlB"/>
</connections> </connections>
</tableView> </tableView>
<navigationItem key="navigationItem" title="Root View Controller" id="JNh-sG-ihV"/> <navigationItem key="navigationItem" id="JNh-sG-ihV">
<barButtonItem key="leftBarButtonItem" image="Cross" id="D4H-l5-1nf">
<connections>
<action selector="dismissSelf:" destination="NBP-9l-DA2" id="h1L-7d-KgQ"/>
</connections>
</barButtonItem>
</navigationItem>
</tableViewController> </tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="TMf-0g-nhn" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="TMf-0g-nhn" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
@ -374,7 +380,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="SrR-CP-faE" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="SrR-CP-faE" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="2177" y="-642"/> <point key="canvasLocation" x="2185" y="-642"/>
</scene> </scene>
<!--Tab Bar Controller--> <!--Tab Bar Controller-->
<scene sceneID="kCG-vK-1nx"> <scene sceneID="kCG-vK-1nx">
@ -453,7 +459,10 @@
<point key="canvasLocation" x="3121" y="-463"/> <point key="canvasLocation" x="3121" y="-463"/>
</scene> </scene>
</scenes> </scenes>
<resources>
<image name="Cross" width="21" height="21"/>
</resources>
<inferredMetricsTieBreakers> <inferredMetricsTieBreakers>
<segue reference="Sog-cN-G9P"/> <segue reference="N3M-rH-rAM"/>
</inferredMetricsTieBreakers> </inferredMetricsTieBreakers>
</document> </document>

View File

@ -21,7 +21,7 @@
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.7.928</string> <string>1.7.942</string>
<key>NSExtension</key> <key>NSExtension</key>
<dict> <dict>
<key>NSExtensionMainStoryboard</key> <key>NSExtensionMainStoryboard</key>

View File

@ -181,8 +181,7 @@ class Book: NSManagedObject {
// MARK: - States // MARK: - States
var spaceState: BookSpaceState { var spaceState: BookSpaceState {
#if os(iOS) || os(watchOS) || os(tvOS) guard let freeSpaceInBytes = UIDevice.availableDiskSpace?.freeSize else {return .Enough}
let freeSpaceInBytes = UIDevice.availableDiskSpace ?? INT64_MAX
if (0.8 * Double(freeSpaceInBytes)) > Double(fileSize) { if (0.8 * Double(freeSpaceInBytes)) > Double(fileSize) {
return .Enough return .Enough
} else if freeSpaceInBytes < fileSize{ } else if freeSpaceInBytes < fileSize{
@ -190,9 +189,6 @@ class Book: NSManagedObject {
} else { } else {
return .Caution return .Caution
} }
#elseif os(OSX)
return .Enough
#endif
} }
} }

View File

@ -70,4 +70,13 @@ extension NSFileManager {
} }
} }
extension UIDevice {
class var availableDiskSpace: (freeSize: Int64, totalSize: Int64)? {
let docDirPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).first!
guard let systemAttributes = try? NSFileManager.defaultManager().attributesOfFileSystemForPath(docDirPath) else {return nil}
guard let freeSize = systemAttributes[NSFileSystemFreeSize] as? Int64,
let totalSize = systemAttributes[NSFileSystemSize] as? Int64 else {return nil}
return (freeSize, totalSize)
}
}