Commit 1c422ade authored by Ramya Sharma's avatar Ramya Sharma Committed by Commit Bot

Moves folderSelector, folderEditor and editViewController to super class

This cl moves folderSelector, folderEditor and editViewController to
a common super class from bookmark handset and table view controllers.

Bug: 705339
Change-Id: I0ed26a3a6dac8d89ff8498f2753995e4772e4a8d
Reviewed-on: https://chromium-review.googlesource.com/566778
Commit-Queue: Ramya Sharma <ramyasharma@chromium.org>
Reviewed-by: default avatarEric Noyau <noyau@chromium.org>
Cr-Commit-Position: refs/heads/master@{#486226}
parent 3bc90915
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#import "ios/chrome/browser/ui/bookmarks/bookmark_collection_view.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_collection_view.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_home_primary_view.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_home_primary_view.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_menu_item.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_menu_item.h"
...@@ -47,9 +46,6 @@ using bookmarks::BookmarkNode; ...@@ -47,9 +46,6 @@ using bookmarks::BookmarkNode;
@interface BookmarkHomeHandsetViewController ()< @interface BookmarkHomeHandsetViewController ()<
BookmarkCollectionViewDelegate, BookmarkCollectionViewDelegate,
BookmarkEditViewControllerDelegate,
BookmarkFolderEditorViewControllerDelegate,
BookmarkFolderViewControllerDelegate,
BookmarkMenuViewDelegate, BookmarkMenuViewDelegate,
BookmarkModelBridgeObserver, BookmarkModelBridgeObserver,
BookmarkPanelViewDelegate> { BookmarkPanelViewDelegate> {
...@@ -81,13 +77,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks ...@@ -81,13 +77,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks
// The action sheet coordinator used when trying to edit a single bookmark. // The action sheet coordinator used when trying to edit a single bookmark.
@property(nonatomic, strong) ActionSheetCoordinator* actionSheetCoordinator; @property(nonatomic, strong) ActionSheetCoordinator* actionSheetCoordinator;
// The view controller used to view and edit a single bookmark.
@property(nonatomic, strong) BookmarkEditViewController* editViewController;
// The view controller used to pick a folder in which to move the selected
// bookmarks.
@property(nonatomic, strong) BookmarkFolderViewController* folderSelector;
// The view controller to present when editing the current folder.
@property(nonatomic, strong) BookmarkFolderEditorViewController* folderEditor;
#pragma mark View loading and switching #pragma mark View loading and switching
// This method should be called at most once in the life-cycle of the // This method should be called at most once in the life-cycle of the
...@@ -129,12 +118,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks ...@@ -129,12 +118,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks
// Enters into edit mode by selecting the given node and cell. // Enters into edit mode by selecting the given node and cell.
- (void)selectFirstNode:(const BookmarkNode*)node - (void)selectFirstNode:(const BookmarkNode*)node
withCell:(UICollectionViewCell*)cell; withCell:(UICollectionViewCell*)cell;
// Opens the editor on the given node with a transition from cell.
- (void)editNode:(const BookmarkNode*)node;
// Opens the folder move editor for the given node.
- (void)moveNodes:(const std::set<const BookmarkNode*>&)nodes;
// Deletes the current node.
- (void)deleteNodes:(const std::set<const BookmarkNode*>&)nodes;
#pragma mark private utility methods #pragma mark private utility methods
// Deletes the nodes, and presents a toast with an undo button. // Deletes the nodes, and presents a toast with an undo button.
...@@ -157,8 +140,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks ...@@ -157,8 +140,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks
// Whether the back button on the navigation bar should be preferred to the menu // Whether the back button on the navigation bar should be preferred to the menu
// button. // button.
- (BOOL)shouldShowBackButtonInsteadOfMenuButton; - (BOOL)shouldShowBackButtonInsteadOfMenuButton;
// Called when the edit button is pressed on the navigation bar.
- (void)navigationBarWantsEditing:(id)sender;
// Called when the cancel button is pressed on the navigation bar. // Called when the cancel button is pressed on the navigation bar.
- (void)navigationBarCancel:(id)sender; - (void)navigationBarCancel:(id)sender;
// Called when the menu button is pressed on the navigation bar. // Called when the menu button is pressed on the navigation bar.
...@@ -191,10 +172,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks ...@@ -191,10 +172,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks
@synthesize editingBar = _editingBar; @synthesize editingBar = _editingBar;
@synthesize actionSheetCoordinator = _actionSheetCoordinator; @synthesize actionSheetCoordinator = _actionSheetCoordinator;
@synthesize editViewController = _editViewController;
@synthesize folderSelector = _folderSelector;
@synthesize folderEditor = _folderEditor;
@synthesize delegate = _delegate; @synthesize delegate = _delegate;
@synthesize editIndexPaths = _editIndexPaths; @synthesize editIndexPaths = _editIndexPaths;
@synthesize editing = _editing; @synthesize editing = _editing;
...@@ -212,11 +189,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks ...@@ -212,11 +189,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks
return self; return self;
} }
- (void)dealloc {
_editViewController.delegate = nil;
_folderSelector.delegate = nil;
}
- (void)resetEditNodes { - (void)resetEditNodes {
_editNodes = std::set<const BookmarkNode*>(); _editNodes = std::set<const BookmarkNode*>();
_editNodesOrdered = std::vector<const BookmarkNode*>(); _editNodesOrdered = std::vector<const BookmarkNode*>();
...@@ -635,58 +607,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks ...@@ -635,58 +607,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks
[self setEditing:YES animated:YES]; [self setEditing:YES animated:YES];
} }
- (void)editNode:(const BookmarkNode*)node {
DCHECK(!self.editViewController);
DCHECK(!self.folderEditor);
UIViewController* editorController = nil;
if (node->is_folder()) {
BookmarkFolderEditorViewController* folderEditor =
[BookmarkFolderEditorViewController
folderEditorWithBookmarkModel:self.bookmarks
folder:node
browserState:self.browserState];
folderEditor.delegate = self;
self.folderEditor = folderEditor;
editorController = folderEditor;
} else {
BookmarkEditViewController* controller =
[[BookmarkEditViewController alloc] initWithBookmark:node
browserState:self.browserState];
self.editViewController = controller;
self.editViewController.delegate = self;
editorController = self.editViewController;
}
DCHECK(editorController);
UINavigationController* navController = [[BookmarkNavigationController alloc]
initWithRootViewController:editorController];
[navController setModalPresentationStyle:UIModalPresentationFormSheet];
[self presentViewController:navController animated:YES completion:NULL];
}
- (void)moveNodes:(const std::set<const BookmarkNode*>&)nodes {
DCHECK(!self.folderSelector);
DCHECK(nodes.size() > 0);
const BookmarkNode* editedNode = *(nodes.begin());
const BookmarkNode* selectedFolder = editedNode->parent();
self.folderSelector = [[BookmarkFolderViewController alloc]
initWithBookmarkModel:self.bookmarks
allowsNewFolders:YES
editedNodes:nodes
allowsCancel:YES
selectedFolder:selectedFolder];
self.folderSelector.delegate = self;
UINavigationController* navController = [[BookmarkNavigationController alloc]
initWithRootViewController:self.folderSelector];
[navController setModalPresentationStyle:UIModalPresentationFormSheet];
[self presentViewController:navController animated:YES completion:NULL];
}
- (void)deleteNodes:(const std::set<const BookmarkNode*>&)nodes {
DCHECK_GE(nodes.size(), 1u);
bookmark_utils_ios::DeleteBookmarksWithUndoToast(nodes, self.bookmarks,
self.browserState);
}
#pragma mark - BookmarkCollectionViewDelegate #pragma mark - BookmarkCollectionViewDelegate
- (void)bookmarkCollectionView:(BookmarkCollectionView*)view - (void)bookmarkCollectionView:(BookmarkCollectionView*)view
...@@ -703,72 +623,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks ...@@ -703,72 +623,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks
[self updatePrimaryMenuItem:menuItem animated:YES]; [self updatePrimaryMenuItem:menuItem animated:YES];
} }
#pragma mark - BookmarkEditViewControllerDelegate
- (BOOL)bookmarkEditor:(BookmarkEditViewController*)controller
shoudDeleteAllOccurencesOfBookmark:(const BookmarkNode*)bookmark {
return NO;
}
- (void)bookmarkEditorWantsDismissal:(BookmarkEditViewController*)controller {
self.editViewController.delegate = nil;
self.editViewController = nil;
[self dismissViewControllerAnimated:YES completion:NULL];
// The editViewController can be displayed from the menu button, or from the
// edit button in edit mode. Either way, after it's dismissed, edit mode
// should be off.
[self setEditing:NO animated:NO];
}
#pragma mark - BookmarkFolderViewControllerDelegate
- (void)folderPicker:(BookmarkFolderViewController*)folderPicker
didFinishWithFolder:(const BookmarkNode*)folder {
DCHECK(folder);
DCHECK(!folder->is_url());
DCHECK_GE(folderPicker.editedNodes.size(), 1u);
bookmark_utils_ios::MoveBookmarksWithUndoToast(
folderPicker.editedNodes, self.bookmarks, folder, self.browserState);
[self setEditing:NO animated:NO];
[self dismissViewControllerAnimated:YES completion:NULL];
self.folderSelector.delegate = nil;
self.folderSelector = nil;
}
- (void)folderPickerDidCancel:(BookmarkFolderViewController*)folderPicker {
[self setEditing:NO animated:NO];
[self dismissViewControllerAnimated:YES completion:NULL];
self.folderSelector.delegate = nil;
self.folderSelector = nil;
}
#pragma mark - BookmarkFolderEditorViewControllerDelegate
- (void)bookmarkFolderEditor:(BookmarkFolderEditorViewController*)folderEditor
didFinishEditingFolder:(const BookmarkNode*)folder {
DCHECK(folder);
[self dismissViewControllerAnimated:YES completion:nil];
self.folderEditor.delegate = nil;
self.folderEditor = nil;
}
- (void)bookmarkFolderEditorDidDeleteEditedFolder:
(BookmarkFolderEditorViewController*)folderEditor {
[self dismissViewControllerAnimated:YES completion:nil];
self.folderEditor.delegate = nil;
self.folderEditor = nil;
}
- (void)bookmarkFolderEditorDidCancel:
(BookmarkFolderEditorViewController*)folderEditor {
[self dismissViewControllerAnimated:YES completion:nil];
self.folderEditor.delegate = nil;
self.folderEditor = nil;
}
#pragma mark - Internal Utility Methods #pragma mark - Internal Utility Methods
- (void)deleteSelectedNodes { - (void)deleteSelectedNodes {
...@@ -830,24 +684,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks ...@@ -830,24 +684,6 @@ defaultMoveFolderFromBookmarks:(const std::set<const BookmarkNode*>&)bookmarks
#pragma mark Navigation Bar Callbacks #pragma mark Navigation Bar Callbacks
- (void)navigationBarWantsEditing:(id)sender {
DCHECK(self.primaryMenuItem.type == bookmarks::MenuItemFolder);
const BookmarkNode* folder = self.primaryMenuItem.folder;
BookmarkFolderEditorViewController* folderEditor =
[BookmarkFolderEditorViewController
folderEditorWithBookmarkModel:self.bookmarks
folder:folder
browserState:self.browserState];
folderEditor.delegate = self;
self.folderEditor = folderEditor;
BookmarkNavigationController* navController =
[[BookmarkNavigationController alloc]
initWithRootViewController:self.folderEditor];
[navController setModalPresentationStyle:UIModalPresentationFormSheet];
[self presentViewController:navController animated:YES completion:NULL];
}
- (void)navigationBarCancel:(id)sender { - (void)navigationBarCancel:(id)sender {
[self delegateDismiss:GURL()]; [self delegateDismiss:GURL()];
} }
......
...@@ -19,14 +19,18 @@ class ChromeBrowserState; ...@@ -19,14 +19,18 @@ class ChromeBrowserState;
namespace bookmarks { namespace bookmarks {
class BookmarkModel; class BookmarkModel;
class BookmarkNode;
} // namespace bookmarks } // namespace bookmarks
@class BookmarkCollectionView; @class BookmarkCollectionView;
@class BookmarkPanelView; @class BookmarkEditViewController;
@class BookmarkMenuView; @class BookmarkFolderEditorViewController;
@class BookmarkFolderViewController;
@class BookmarkHomeWaitingView; @class BookmarkHomeWaitingView;
@class BookmarkNavigationBar;
@class BookmarkMenuItem; @class BookmarkMenuItem;
@class BookmarkMenuView;
@class BookmarkNavigationBar;
@class BookmarkPanelView;
@class BookmarkPromoController; @class BookmarkPromoController;
// Class to navigate the bookmark hierarchy, needs subclassing for tablet / // Class to navigate the bookmark hierarchy, needs subclassing for tablet /
...@@ -50,6 +54,11 @@ class BookmarkModel; ...@@ -50,6 +54,11 @@ class BookmarkModel;
// The main view showing all the bookmarks. // The main view showing all the bookmarks.
@property(nonatomic, strong, readonly) BookmarkCollectionView* folderView; @property(nonatomic, strong, readonly) BookmarkCollectionView* folderView;
// The view controller used to pick a folder in which to move the selected
// bookmarks.
@property(nonatomic, strong, readonly)
BookmarkFolderViewController* folderSelector;
// Object to load URLs. // Object to load URLs.
@property(nonatomic, weak, readonly) id<UrlLoader> loader; @property(nonatomic, weak, readonly) id<UrlLoader> loader;
...@@ -75,6 +84,14 @@ class BookmarkModel; ...@@ -75,6 +84,14 @@ class BookmarkModel;
// set it to nil, once finished with it. // set it to nil, once finished with it.
@property(nonatomic, strong) BookmarkHomeWaitingView* waitForModelView; @property(nonatomic, strong) BookmarkHomeWaitingView* waitForModelView;
// The view controller used to view and edit a single bookmark.
@property(nonatomic, strong, readonly)
BookmarkEditViewController* editViewController;
// The view controller to present when editing the current folder.
@property(nonatomic, strong, readonly)
BookmarkFolderEditorViewController* folderEditor;
// This method should be called at most once in the life-cycle of the class. // This method should be called at most once in the life-cycle of the class.
// It should be called at the soonest possible time after the view has been // It should be called at the soonest possible time after the view has been
// loaded, and the bookmark model is loaded. // loaded, and the bookmark model is loaded.
...@@ -98,6 +115,21 @@ class BookmarkModel; ...@@ -98,6 +115,21 @@ class BookmarkModel;
// controller. // controller.
@property(nonatomic, strong, readonly) @property(nonatomic, strong, readonly)
BookmarkPromoController* bookmarkPromoController; BookmarkPromoController* bookmarkPromoController;
#pragma mark - Navigation bar callbacks.
// Called when the edit button is pressed on the navigation bar.
- (void)navigationBarWantsEditing:(id)sender;
#pragma mark - Action sheet callbacks
// Opens the folder move editor for the given node.
- (void)moveNodes:(const std::set<const bookmarks::BookmarkNode*>&)nodes;
// Deletes the current node.
- (void)deleteNodes:(const std::set<const bookmarks::BookmarkNode*>&)nodes;
- (void)editNode:(const bookmarks::BookmarkNode*)node;
@end @end
#endif // IOS_CHROME_BROWSER_UI_BOOKMARKS_HOME_VIEW_CONTROLLER_H_ #endif // IOS_CHROME_BROWSER_UI_BOOKMARKS_HOME_VIEW_CONTROLLER_H_
...@@ -9,10 +9,14 @@ ...@@ -9,10 +9,14 @@
#include "ios/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#import "ios/chrome/browser/ui/bookmarks/bars/bookmark_navigation_bar.h" #import "ios/chrome/browser/ui/bookmarks/bars/bookmark_navigation_bar.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_collection_view.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_collection_view.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_home_primary_view.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_home_primary_view.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_menu_item.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_menu_item.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_menu_view.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_menu_view.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_panel_view.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_panel_view.h"
#import "ios/chrome/browser/ui/bookmarks/bookmark_promo_controller.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_promo_controller.h"
#import "ios/chrome/browser/ui/rtl_geometry.h" #import "ios/chrome/browser/ui/rtl_geometry.h"
...@@ -27,17 +31,25 @@ namespace { ...@@ -27,17 +31,25 @@ namespace {
const CGFloat kMenuWidth = 264; const CGFloat kMenuWidth = 264;
} }
@interface BookmarkHomeViewController ()<BookmarkPromoControllerDelegate> @interface BookmarkHomeViewController ()<
BookmarkEditViewControllerDelegate,
BookmarkFolderEditorViewControllerDelegate,
BookmarkFolderViewControllerDelegate,
BookmarkPromoControllerDelegate>
// Read / write declaration of read only properties. // Read / write declaration of read only properties.
@property(nonatomic, strong) BookmarkPromoController* bookmarkPromoController; @property(nonatomic, strong) BookmarkPromoController* bookmarkPromoController;
@property(nonatomic, assign) bookmarks::BookmarkModel* bookmarks; @property(nonatomic, assign) bookmarks::BookmarkModel* bookmarks;
@property(nonatomic, assign) ios::ChromeBrowserState* browserState; @property(nonatomic, assign) ios::ChromeBrowserState* browserState;
@property(nonatomic, strong) BookmarkEditViewController* editViewController;
@property(nonatomic, strong) BookmarkFolderEditorViewController* folderEditor;
@property(nonatomic, strong) BookmarkFolderViewController* folderSelector;
@property(nonatomic, strong) BookmarkCollectionView* folderView; @property(nonatomic, strong) BookmarkCollectionView* folderView;
@property(nonatomic, weak) id<UrlLoader> loader; @property(nonatomic, weak) id<UrlLoader> loader;
@property(nonatomic, strong) BookmarkMenuView* menuView; @property(nonatomic, strong) BookmarkMenuView* menuView;
@property(nonatomic, strong) BookmarkNavigationBar* navigationBar; @property(nonatomic, strong) BookmarkNavigationBar* navigationBar;
@property(nonatomic, strong) BookmarkPanelView* panelView; @property(nonatomic, strong) BookmarkPanelView* panelView;
@property(nonatomic, strong) BookmarkMenuItem* primaryMenuItem; @property(nonatomic, strong) BookmarkMenuItem* primaryMenuItem;
@end @end
@implementation BookmarkHomeViewController @implementation BookmarkHomeViewController
...@@ -45,6 +57,9 @@ const CGFloat kMenuWidth = 264; ...@@ -45,6 +57,9 @@ const CGFloat kMenuWidth = 264;
@synthesize bookmarkPromoController = _bookmarkPromoController; @synthesize bookmarkPromoController = _bookmarkPromoController;
@synthesize bookmarks = _bookmarks; @synthesize bookmarks = _bookmarks;
@synthesize browserState = _browserState; @synthesize browserState = _browserState;
@synthesize editViewController = _editViewController;
@synthesize folderEditor = _folderEditor;
@synthesize folderSelector = _folderSelector;
@synthesize folderView = _folderView; @synthesize folderView = _folderView;
@synthesize loader = _loader; @synthesize loader = _loader;
@synthesize menuView = _menuView; @synthesize menuView = _menuView;
...@@ -165,4 +180,144 @@ const CGFloat kMenuWidth = 264; ...@@ -165,4 +180,144 @@ const CGFloat kMenuWidth = 264;
promoStateChangedAnimated:self.folderView == [self primaryView]]; promoStateChangedAnimated:self.folderView == [self primaryView]];
} }
#pragma mark Action sheet callbacks
- (void)moveNodes:(const std::set<const BookmarkNode*>&)nodes {
DCHECK(!self.folderSelector);
DCHECK(nodes.size() > 0);
const BookmarkNode* editedNode = *(nodes.begin());
const BookmarkNode* selectedFolder = editedNode->parent();
self.folderSelector = [[BookmarkFolderViewController alloc]
initWithBookmarkModel:self.bookmarks
allowsNewFolders:YES
editedNodes:nodes
allowsCancel:YES
selectedFolder:selectedFolder];
self.folderSelector.delegate = self;
UINavigationController* navController = [[BookmarkNavigationController alloc]
initWithRootViewController:self.folderSelector];
[navController setModalPresentationStyle:UIModalPresentationFormSheet];
[self presentViewController:navController animated:YES completion:NULL];
}
- (void)deleteNodes:(const std::set<const BookmarkNode*>&)nodes {
DCHECK_GE(nodes.size(), 1u);
bookmark_utils_ios::DeleteBookmarksWithUndoToast(nodes, self.bookmarks,
self.browserState);
}
- (void)editNode:(const BookmarkNode*)node {
DCHECK(!self.editViewController);
DCHECK(!self.folderEditor);
UIViewController* editorController = nil;
if (node->is_folder()) {
BookmarkFolderEditorViewController* folderEditor =
[BookmarkFolderEditorViewController
folderEditorWithBookmarkModel:self.bookmarks
folder:node
browserState:self.browserState];
folderEditor.delegate = self;
self.folderEditor = folderEditor;
editorController = folderEditor;
} else {
BookmarkEditViewController* controller =
[[BookmarkEditViewController alloc] initWithBookmark:node
browserState:self.browserState];
self.editViewController = controller;
self.editViewController.delegate = self;
editorController = self.editViewController;
}
DCHECK(editorController);
UINavigationController* navController = [[BookmarkNavigationController alloc]
initWithRootViewController:editorController];
navController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:navController animated:YES completion:NULL];
}
#pragma mark - Navigation Bar Callbacks
- (void)navigationBarWantsEditing:(id)sender {
DCHECK(self.primaryMenuItem.type == bookmarks::MenuItemFolder);
const BookmarkNode* folder = self.primaryMenuItem.folder;
BookmarkFolderEditorViewController* folderEditor =
[BookmarkFolderEditorViewController
folderEditorWithBookmarkModel:self.bookmarks
folder:folder
browserState:self.browserState];
folderEditor.delegate = self;
self.folderEditor = folderEditor;
BookmarkNavigationController* navController =
[[BookmarkNavigationController alloc]
initWithRootViewController:self.folderEditor];
navController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:navController animated:YES completion:NULL];
}
#pragma mark - BookmarkFolderViewControllerDelegate
- (void)folderPicker:(BookmarkFolderViewController*)folderPicker
didFinishWithFolder:(const BookmarkNode*)folder {
DCHECK(folder);
DCHECK(!folder->is_url());
DCHECK_GE(folderPicker.editedNodes.size(), 1u);
bookmark_utils_ios::MoveBookmarksWithUndoToast(
folderPicker.editedNodes, self.bookmarks, folder, self.browserState);
[self setEditing:NO animated:NO];
[self dismissViewControllerAnimated:YES completion:NULL];
self.folderSelector.delegate = nil;
self.folderSelector = nil;
}
- (void)folderPickerDidCancel:(BookmarkFolderViewController*)folderPicker {
[self setEditing:NO animated:NO];
[self dismissViewControllerAnimated:YES completion:NULL];
self.folderSelector.delegate = nil;
self.folderSelector = nil;
}
#pragma mark - BookmarkFolderEditorViewControllerDelegate
- (void)bookmarkFolderEditor:(BookmarkFolderEditorViewController*)folderEditor
didFinishEditingFolder:(const BookmarkNode*)folder {
DCHECK(folder);
[self dismissViewControllerAnimated:YES completion:nil];
self.folderEditor.delegate = nil;
self.folderEditor = nil;
}
- (void)bookmarkFolderEditorDidDeleteEditedFolder:
(BookmarkFolderEditorViewController*)folderEditor {
[self dismissViewControllerAnimated:YES completion:nil];
self.folderEditor.delegate = nil;
self.folderEditor = nil;
}
- (void)bookmarkFolderEditorDidCancel:
(BookmarkFolderEditorViewController*)folderEditor {
[self dismissViewControllerAnimated:YES completion:nil];
self.folderEditor.delegate = nil;
self.folderEditor = nil;
}
#pragma mark - BookmarkEditViewControllerDelegate
- (BOOL)bookmarkEditor:(BookmarkEditViewController*)controller
shoudDeleteAllOccurencesOfBookmark:(const BookmarkNode*)bookmark {
return NO;
}
- (void)bookmarkEditorWantsDismissal:(BookmarkEditViewController*)controller {
self.editViewController.delegate = nil;
self.editViewController = nil;
[self dismissViewControllerAnimated:YES completion:NULL];
// The editViewController can be displayed from the menu button, or from the
// edit button in edit mode. Either way, after it's dismissed, edit mode
// should be off.
[self setEditing:NO animated:NO];
}
@end @end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment