Index: ios/chrome/browser/ui/collection_view/collection_view_controller.h |
diff --git a/ios/chrome/browser/ui/collection_view/collection_view_controller.h b/ios/chrome/browser/ui/collection_view/collection_view_controller.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cd8d08c6c8c5cca4b2dc3461809e6d4271b295bb |
--- /dev/null |
+++ b/ios/chrome/browser/ui/collection_view/collection_view_controller.h |
@@ -0,0 +1,92 @@ |
+// Copyright 2016 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_COLLECTION_VIEW_COLLECTION_VIEW_CONTROLLER_H_ |
+#define IOS_CHROME_BROWSER_UI_COLLECTION_VIEW_COLLECTION_VIEW_CONTROLLER_H_ |
+ |
+#import "ios/chrome/browser/ui/material_components/app_bar_presenting.h" |
+#import "ios/third_party/material_components_ios/src/components/Collections/src/MaterialCollections.h" |
+ |
+@class CollectionViewModel; |
+ |
+typedef NS_ENUM(NSInteger, CollectionViewControllerStyle) { |
+ // A simple collection view controller. |
+ CollectionViewControllerStyleDefault, |
+ // A collection view controller with an app bar. |
+ CollectionViewControllerStyleAppBar, |
+}; |
+ |
+// Chrome-specific Material Design collection view controller. With |
+// CollectionViewControllerStyleAppBar, it features an app bar in the card |
+// style. |
+@interface CollectionViewController |
+ : MDCCollectionViewController<AppBarPresenting> |
+ |
+// The model of this controller. |
+@property(nonatomic, readonly) CollectionViewModel* collectionViewModel; |
+ |
+// Initializer with the desired style. |
+- (instancetype)initWithStyle:(CollectionViewControllerStyle)style |
+ NS_DESIGNATED_INITIALIZER; |
+- (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout*)layout |
+ NS_UNAVAILABLE; |
+- (instancetype)initWithNibName:(NSString*)nibNameOrNil |
+ bundle:(NSBundle*)nibBundleOrNil NS_UNAVAILABLE; |
+- (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE; |
+- (instancetype)init NS_UNAVAILABLE; |
+ |
+// Initializes the collection view model. Must be called by subclasses if they |
+// override this method in order to get a clean collectionViewModel. |
+- (void)loadModel NS_REQUIRES_SUPER; |
+ |
+// Reconfigures the cells corresponding to the given |items| by calling |
+// |configureCell:| on each cell. |
+- (void)reconfigureCellsForItems:(NSArray*)items |
+ inSectionWithIdentifier:(NSInteger)sectionIdentifier; |
+ |
+#pragma mark MDCCollectionViewEditingDelegate |
+ |
+// Updates the model with changes to the collection view items. Must be called |
+// by subclasses if they override this method in order to maintain this |
+// functionality. |
+- (void)collectionView:(UICollectionView*)collectionView |
+ willDeleteItemsAtIndexPaths:(NSArray*)indexPaths NS_REQUIRES_SUPER; |
+ |
+// Updates the model with changes to the collection view item. Must be called |
+// by subclasses if they override this method in order to maintain this |
+// functionality. |
+- (void)collectionView:(UICollectionView*)collectionView |
+ willMoveItemAtIndexPath:(NSIndexPath*)indexPath |
+ toIndexPath:(NSIndexPath*)newIndexPath NS_REQUIRES_SUPER; |
+ |
+#pragma mark UIScrollViewDelegate |
+ |
+// Updates the MDCFlexibleHeader 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 MDCFlexibleHeader 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 MDCFlexibleHeader 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 MDCFlexibleHeader 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_COLLECTION_VIEW_COLLECTION_VIEW_CONTROLLER_H_ |