mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-24 04:03:03 -04:00
Disk space detection restructure
This commit is contained in:
parent
8e5e969768
commit
bb10595f37
@ -9,7 +9,7 @@
|
||||
import UIKit
|
||||
import CoreData
|
||||
|
||||
class CloudBooksController: UITableViewController, NSFetchedResultsControllerDelegate, TableCellDelegate{
|
||||
class CloudBooksController: UITableViewController, NSFetchedResultsControllerDelegate {
|
||||
|
||||
var bookDetailController = UIStoryboard.libraryNew.initViewController(BookDetailController.self)!
|
||||
|
||||
@ -17,7 +17,7 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel
|
||||
super.viewDidLoad()
|
||||
title = ""
|
||||
navigationController?.view.backgroundColor = UIColor.whiteColor()
|
||||
splitViewController?.tabBarItem.title = "Cloud"
|
||||
tabBarItem.title = "Cloud"
|
||||
}
|
||||
|
||||
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
|
||||
@ -36,23 +36,8 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel
|
||||
|
||||
}
|
||||
|
||||
// MARK: - TableCellDelegate
|
||||
|
||||
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
|
||||
}
|
||||
@IBAction func dismissSelf(sender: UIBarButtonItem) {
|
||||
dismissViewControllerAnimated(true, completion: nil)
|
||||
}
|
||||
|
||||
// MARK: - TableView Data Source
|
||||
@ -102,10 +87,6 @@ class CloudBooksController: UITableViewController, NSFetchedResultsControllerDel
|
||||
|
||||
// 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 {
|
||||
guard tableView.numberOfSections > 1 else {return 0.0}
|
||||
guard let headerText = self.tableView(tableView, titleForHeaderInSection: section) else {return 0.0}
|
||||
|
@ -225,7 +225,7 @@ class MainController: UIViewController {
|
||||
|
||||
func showLibraryButtonTapped() {
|
||||
guard let viewController = libraryNewController ?? UIStoryboard.libraryNew.instantiateInitialViewController() else {return}
|
||||
viewController.modalPresentationStyle = .OverFullScreen
|
||||
viewController.modalPresentationStyle = .FullScreen
|
||||
libraryNewController = viewController
|
||||
presentViewController(viewController, animated: true, completion: nil)
|
||||
}
|
||||
|
@ -49,7 +49,7 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.7.873</string>
|
||||
<string>1.7.882</string>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
@ -26,7 +26,7 @@
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2177" y="51"/>
|
||||
</scene>
|
||||
<!--Root View Controller-->
|
||||
<!--Cloud Books Controller-->
|
||||
<scene sceneID="x2g-Rm-HUS">
|
||||
<objects>
|
||||
<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"/>
|
||||
</connections>
|
||||
</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>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="TMf-0g-nhn" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
@ -374,7 +380,7 @@
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="SrR-CP-faE" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2177" y="-642"/>
|
||||
<point key="canvasLocation" x="2185" y="-642"/>
|
||||
</scene>
|
||||
<!--Tab Bar Controller-->
|
||||
<scene sceneID="kCG-vK-1nx">
|
||||
@ -453,7 +459,10 @@
|
||||
<point key="canvasLocation" x="3121" y="-463"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="Cross" width="21" height="21"/>
|
||||
</resources>
|
||||
<inferredMetricsTieBreakers>
|
||||
<segue reference="Sog-cN-G9P"/>
|
||||
<segue reference="N3M-rH-rAM"/>
|
||||
</inferredMetricsTieBreakers>
|
||||
</document>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.7.928</string>
|
||||
<string>1.7.942</string>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionMainStoryboard</key>
|
||||
|
@ -181,18 +181,14 @@ class Book: NSManagedObject {
|
||||
// MARK: - States
|
||||
|
||||
var spaceState: BookSpaceState {
|
||||
#if os(iOS) || os(watchOS) || os(tvOS)
|
||||
let freeSpaceInBytes = UIDevice.availableDiskSpace ?? INT64_MAX
|
||||
if (0.8 * Double(freeSpaceInBytes)) > Double(fileSize) {
|
||||
return .Enough
|
||||
} else if freeSpaceInBytes < fileSize{
|
||||
return .NotEnough
|
||||
} else {
|
||||
return .Caution
|
||||
}
|
||||
#elseif os(OSX)
|
||||
guard let freeSpaceInBytes = UIDevice.availableDiskSpace?.freeSize else {return .Enough}
|
||||
if (0.8 * Double(freeSpaceInBytes)) > Double(fileSize) {
|
||||
return .Enough
|
||||
#endif
|
||||
} else if freeSpaceInBytes < fileSize{
|
||||
return .NotEnough
|
||||
} else {
|
||||
return .Caution
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user