From 0d6498fa3e2855ae8680a449260a26466a18ecc2 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Tue, 19 Jul 2016 13:48:30 -0400 Subject: [PATCH] Bookmark edit --- .../Setting2.imageset/multimedia.png | Bin 1015 -> 0 bytes .../Contents.json | 2 +- .../StarRemoved.imageset/star.png | Bin 0 -> 3315 bytes Kiwix-iOS/Controller/BookmarkTBVC.swift | 43 ++++++++++++++++++ Kiwix-iOS/Info.plist | 2 +- Kiwix-iOS/Storyboard/Main.storyboard | 30 +++++++++--- 6 files changed, 69 insertions(+), 8 deletions(-) delete mode 100644 Kiwix-iOS/Assets.xcassets/Setting2.imageset/multimedia.png rename Kiwix-iOS/Assets.xcassets/{Setting2.imageset => StarRemoved.imageset}/Contents.json (87%) create mode 100644 Kiwix-iOS/Assets.xcassets/StarRemoved.imageset/star.png diff --git a/Kiwix-iOS/Assets.xcassets/Setting2.imageset/multimedia.png b/Kiwix-iOS/Assets.xcassets/Setting2.imageset/multimedia.png deleted file mode 100644 index 978a0578d1f6800a55ceff4ab3eeb4416ac16203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1015 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 literal 0 HcmV?d00001 diff --git a/Kiwix-iOS/Controller/BookmarkTBVC.swift b/Kiwix-iOS/Controller/BookmarkTBVC.swift index 8b4bae36..366ce06e 100644 --- a/Kiwix-iOS/Controller/BookmarkTBVC.swift +++ b/Kiwix-iOS/Controller/BookmarkTBVC.swift @@ -18,6 +18,7 @@ class BookmarkTBVC: UITableViewController, NSFetchedResultsControllerDelegate, D title = LocalizedStrings.bookmarks tableView.estimatedRowHeight = 66.0 tableView.rowHeight = UITableViewAutomaticDimension + tableView.allowsMultipleSelectionDuringEditing = true tableView.emptyDataSetSource = self tableView.emptyDataSetDelegate = self @@ -29,6 +30,13 @@ class BookmarkTBVC: UITableViewController, NSFetchedResultsControllerDelegate, D override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(animated) + setEditing(false, animated: false) + } + + override func setEditing(editing: Bool, animated: Bool) { + super.setEditing(editing, animated: animated) + tableView.setEditing(editing, animated: animated) + navigationController?.setToolbarHidden(!editing, animated: animated) } // MARK: - Empty table datasource & delegate @@ -111,6 +119,7 @@ class BookmarkTBVC: UITableViewController, NSFetchedResultsControllerDelegate, D // MARK: - Table view delegate override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { + guard !tableView.editing else {return} defer {dismissViewControllerAnimated(true, completion: nil)} guard let navigationController = navigationController?.presentingViewController as? UINavigationController else {return} guard let mainVC = navigationController.topViewController as? MainController else {return} @@ -118,6 +127,23 @@ class BookmarkTBVC: UITableViewController, NSFetchedResultsControllerDelegate, D mainVC.load(article.url) } + override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { + return true + } + + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {} + + override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { + let remove = UITableViewRowAction(style: .Destructive, title: LocalizedStrings.remove) { (action, indexPath) -> Void in + guard let article = self.fetchedResultController.objectAtIndexPath(indexPath) as? Article else {return} + let context = NSManagedObjectContext.mainQueueContext + context.performBlockAndWait({ () -> Void in + context.deleteObject(article) + }) + } + return [remove] + } + // MARK: - Fetched Result Controller Delegate let managedObjectContext = UIApplication.appDelegate.managedObjectContext @@ -175,6 +201,23 @@ class BookmarkTBVC: UITableViewController, NSFetchedResultsControllerDelegate, D // MARK: - Action + @IBAction func editingButtonTapped(sender: UIBarButtonItem) { + setEditing(!editing, animated: true) + } + + @IBAction func removeBookmarkButtonTapped(sender: UIBarButtonItem) { + guard editing else {return} + guard let selectedIndexPathes = tableView.indexPathsForSelectedRows else {return} + let artiicles = selectedIndexPathes.flatMap() {fetchedResultController.objectAtIndexPath($0) as? Article} + let context = NSManagedObjectContext.mainQueueContext + context.performBlock { + artiicles.forEach() { + $0.isBookmarked = false + $0.bookmarkDate = nil + } + } + } + @IBAction func dismissButtonTapped(sender: UIBarButtonItem) { dismissViewControllerAnimated(true, completion: nil) } diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 7ff50d5c..683a44f4 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -36,7 +36,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.284 + 1.7.300 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Storyboard/Main.storyboard b/Kiwix-iOS/Storyboard/Main.storyboard index 824bf545..38b26582 100644 --- a/Kiwix-iOS/Storyboard/Main.storyboard +++ b/Kiwix-iOS/Storyboard/Main.storyboard @@ -30,13 +30,13 @@ - + @@ -78,7 +78,7 @@ - + @@ -100,7 +100,7 @@ @@ -138,12 +138,25 @@ + + + + + + + + + + + + + @@ -487,13 +500,17 @@ - + + + + + @@ -623,5 +640,6 @@ +