Index: ios/chrome/browser/ui/bookmarks/bookmark_collection_cells.h |
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_collection_cells.h b/ios/chrome/browser/ui/bookmarks/bookmark_collection_cells.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4652ca0a67f9e93e7f6d4f7106264b32f0b948b0 |
--- /dev/null |
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_collection_cells.h |
@@ -0,0 +1,97 @@ |
+// 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_COLLECTION_CELLS_H_ |
+#define IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_COLLECTION_CELLS_H_ |
+ |
+#import <UIKit/UIKit.h> |
+ |
+namespace bookmark_cell { |
+// The types get cached, which means that their values must not change. |
+typedef enum { |
+ ButtonNone = 0, // No button. |
+ ButtonMenu, // 3-vertical-dots button. |
+} ButtonType; |
+ |
+} // bookmark_cell |
+ |
+// Views that expect to display an image associated with a bookmark must |
+// implement this protocol. |
+// Since the image fetching API is asynchronous and uncancellable, views must |
+// store some metadata associated with the image to ensure irrelevant callbacks |
+// are discarded. |
+@protocol BookmarkImageableView |
+@property(nonatomic, assign) BOOL shouldAnimateImageChanges; |
+// Sets the image on the view, animating the change if |
+// shouldAnimateImageChanges is YES. Hides the overlay placeholder text. |
+- (void)setImage:(UIImage*)image; |
+// Sets the placeholder text that is displayed over the image view. Hides the |
+// image. |
+- (void)setPlaceholderText:(NSString*)text |
+ textColor:(UIColor*)textColor |
+ backgroundColor:(UIColor*)backgroundColor; |
+@end |
+ |
+#pragma mark - Base Classes For Both Device Types |
+ |
+// Abstract base class for cells in the bookmark collection view. |
+// Most controllers that use this cell have an "edit" mode that allows users to |
+// select multiple bookmarks. When a cell is selected, a translucent overlay |
+// is layered on top to change the look of the view. |
+// Subclasses should insert new views below the "highlightCover" property. |
+// There is also an image and an optional menu button. |
+@interface BookmarkCell : UICollectionViewCell<BookmarkImageableView> |
+ |
+@property(nonatomic, retain, readonly) UILabel* titleLabel; |
+ |
++ (NSString*)reuseIdentifier; |
+ |
+// Sets the target/selector for the top-right corner button. |
+// |action| must take exactly 2 arguments. |
+// The first object passed to |action| will be of type BookmarkItemCell. |
+// The second will be the view that was tapped on to trigger the action. |
+- (void)setButtonTarget:(id)target action:(SEL)action; |
+ |
+// Changes the appearance of the button. |
+- (void)showButtonOfType:(bookmark_cell::ButtonType)buttonType |
+ animated:(BOOL)animated; |
+ |
+// The cell has been selected by the user in editing mode. |
+- (void)setSelectedForEditing:(BOOL)selected animated:(BOOL)animated; |
+ |
+// Sets the title. |
+- (void)updateWithTitle:(NSString*)title; |
+ |
+@end |
+ |
+#pragma mark - Specialized Cells |
+ |
+// Specialized cell for bookmark urls. |
+// It is intended to show the title, domain, and parent folder of the bookmark. |
+@interface BookmarkItemCell : BookmarkCell |
+// Returns the icon size that is preferred for this cell. Icons are square, and |
+// the returned value is the side of the square in points. |
++ (CGFloat)preferredImageSize; |
+@end |
+ |
+// Specialized cell for bookmark folders. Uses a default folder image. |
+@interface BookmarkFolderCell : BookmarkCell |
+@end |
+ |
+#pragma mark - Header Views |
+ |
+// Standard header view for a section. |
+@interface BookmarkHeaderView : UICollectionReusableView |
++ (NSString*)reuseIdentifier; |
++ (CGFloat)handsetHeight; |
+- (void)setTitle:(NSString*)title; |
+@end |
+ |
+// Blank white header with thin separator line in the bottom. |
+@interface BookmarkHeaderSeparatorView : UICollectionReusableView |
++ (NSString*)reuseIdentifier; |
++ (CGFloat)preferredHeight; |
+@end |
+ |
+#endif // IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_COLLECTION_CELLS_H_ |