Index: ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.h |
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.h b/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d2deeaa2c2dd05b037512809dd696bc5ceb89b52 |
--- /dev/null |
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.h |
@@ -0,0 +1,87 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_FOLDER_VIEW_CONTROLLER_H_ |
+#define IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_FOLDER_VIEW_CONTROLLER_H_ |
+ |
+#import <UIKit/UIKit.h> |
+#include <set> |
+ |
+@class BookmarkFolderViewController; |
+namespace bookmarks { |
+class BookmarkModel; |
+class BookmarkNode; |
+} // namespace bookmarks |
+ |
+@protocol BookmarkFolderViewControllerDelegate |
+// Called when a bookmark folder is selected. |folder| is the newly selected |
+// folder. |
+- (void)folderPicker:(BookmarkFolderViewController*)folderPicker |
+ didFinishWithFolder:(const bookmarks::BookmarkNode*)folder; |
+// Called when the user is done with the picker, either by tapping the Cancel or |
+// the Back button. |
+- (void)folderPickerDidCancel:(BookmarkFolderViewController*)folderPicker; |
+@end |
+ |
+// A folder selector view controller. |
+// |
+// This controller monitors the state of the bookmark model, so changes to the |
+// bookmark model can affect this controller's state. |
+// The bookmark model is assumed to be loaded, thus also not to be NULL. |
+@interface BookmarkFolderViewController : UIViewController |
+ |
+@property(nonatomic, assign) id<BookmarkFolderViewControllerDelegate> delegate; |
+ |
+// The current nodes (bookmarks or folders) that are considered for a move. |
+@property(nonatomic, assign, readonly) |
+ const std::set<const bookmarks::BookmarkNode*>& editedNodes; |
+ |
+// Initializes the view controller with a bookmarks model. |allowsNewFolders| |
+// will instruct the controller to provide the necessary UI to create a folder. |
+// |bookmarkModel| must not be NULL and must be loaded. |
+// |editedNodes| affects which cells can be selected, since it is not possible |
+// to move a node into its subnode. |
+// |allowsCancel| puts a cancel and done button in the navigation bar instead of |
+// a back button, which is needed if this view controller is presented modally. |
+- (instancetype) |
+initWithBookmarkModel:(bookmarks::BookmarkModel*)bookmarkModel |
+ allowsNewFolders:(BOOL)allowsNewFolders |
+ editedNodes:(const std::set<const bookmarks::BookmarkNode*>&)nodes |
+ allowsCancel:(BOOL)allowsCancel |
+ selectedFolder:(const bookmarks::BookmarkNode*)selectedFolder; |
+ |
+// This method changes the currently selected folder and updates the UI. The |
+// delegate is not notified of the change. |
+- (void)changeSelectedFolder:(const bookmarks::BookmarkNode*)selectedFolder; |
+ |
+#pragma mark UIScrollViewDelegate |
+ |
+// Updates the MDCAppBar with changes to the collection view scroll state. Must |
+// be called by subclasses if they override this method in order to maintain |
+// this functionality. |
+- (void)scrollViewDidScroll:(UIScrollView*)scrollView NS_REQUIRES_SUPER; |
+ |
+// Updates the MDCAppBar with changes to the collection view scroll state. Must |
+// be called by subclasses if they override this method in order to maintain |
+// this functionality. |
+- (void)scrollViewDidEndDragging:(UIScrollView*)scrollView |
+ willDecelerate:(BOOL)decelerate NS_REQUIRES_SUPER; |
+ |
+// Updates the MDCAppBar with changes to the collection view scroll state. Must |
+// be called by subclasses if they override this method in order to maintain |
+// this functionality. |
+- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView |
+ NS_REQUIRES_SUPER; |
+ |
+// Updates the MDCAppBar with changes to the collection view scroll state. Must |
+// be called by subclasses if they override this method in order to maintain |
+// this functionality. |
+- (void)scrollViewWillEndDragging:(UIScrollView*)scrollView |
+ withVelocity:(CGPoint)velocity |
+ targetContentOffset:(inout CGPoint*)targetContentOffset |
+ NS_REQUIRES_SUPER; |
+ |
+@end |
+ |
+#endif // IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_FOLDER_VIEW_CONTROLLER_H_ |