Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Unified Diff: ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h

Issue 2586993002: Upstream Chrome on iOS source code [3/11]. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h
new file mode 100644
index 0000000000000000000000000000000000000000..af28381b87b8c122bde95dc88488487db35673d6
--- /dev/null
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h
@@ -0,0 +1,193 @@
+// Copyright (c) 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_UTILS_IOS_H_
+#define IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_UTILS_IOS_H_
+
+#import <UIKit/UIKit.h>
+#include <set>
+#include <vector>
+
+#include "base/memory/scoped_vector.h"
+#include "base/strings/string16.h"
+#include "base/time/time.h"
+
+@class BookmarkCell;
+@class BookmarkMenuItem;
+@class BookmarkPositionCache;
+class GURL;
+
+namespace bookmarks {
+class BookmarkModel;
+class BookmarkNode;
+} // namespace bookmarks
+
+namespace ios {
+class ChromeBrowserState;
+} // namespace ios
+
+namespace bookmark_utils_ios {
+
+typedef std::vector<const bookmarks::BookmarkNode*> NodeVector;
+typedef std::set<const bookmarks::BookmarkNode*> NodeSet;
+
+// The iOS code is doing some munging of the bookmark folder names in order
+// to display a slighly different wording for the default folders.
+NSString* TitleForBookmarkNode(const bookmarks::BookmarkNode* node);
+
+// Returns the default color for |url| when no image is available.
+UIColor* DefaultColor(const GURL& url);
+
+// Returns the subtitle relevant to the bookmark navigation ui.
+NSString* subtitleForBookmarkNode(const bookmarks::BookmarkNode* node);
+
+// This margin is designed to align with the menu button in the navigation bar.
+extern const CGFloat menuMargin;
+// The margin from the left of the screen for the title of the navigation bar.
+extern const CGFloat titleMargin;
+// The distance between the icon in hamburger menu and the menu item title.
+extern const CGFloat titleToIconDistance;
+// The amount of time it takes to show or hide the bookmark menu.
+extern const CGFloat menuAnimationDuration;
+
+// On iPad, background color can be transparent. Wrapper for the light grey
+// background color.
+UIColor* mainBackgroundColor();
+// Returns the menu's background color. White when the menu is in a slide over
+// panel, transparent otherwise.
+UIColor* menuBackgroundColor();
+// Primary title labels use this color.
+UIColor* darkTextColor();
+// Secondary title labels use this color.
+UIColor* lightTextColor();
+// The color to use if the text needs to change color when highlighted.
+UIColor* highlightedDarkTextColor();
+// The color used for the editing bar.
+UIColor* blueColor();
+// The color used for the navigation bar.
+UIColor* GrayColor();
+// The gray color for line separators.
+UIColor* separatorColor();
+// The black color for the folder labels.
+UIColor* FolderLabelColor();
+
+// Returns the current status bar height.
+CGFloat StatusBarHeight();
+
+// Returns whether the bookmark menu should be presented in a slide in panel.
+BOOL bookmarkMenuIsInSlideInPanel();
+
+// Creates a drop shadow with the given width.
+UIView* dropShadowWithWidth(CGFloat width);
+
+#pragma mark - Updating Bookmarks
+
+// Creates the bookmark if |node| is NULL. Otherwise updates |node|.
+// |folder| is the intended parent of |node|.
+// A snackbar is presented, that let the user undo the changes.
+void CreateOrUpdateBookmarkWithUndoToast(
+ const bookmarks::BookmarkNode* node,
+ NSString* title,
+ const GURL& url,
+ const bookmarks::BookmarkNode* folder,
+ bookmarks::BookmarkModel* bookmark_model,
+ ios::ChromeBrowserState* browser_state);
+
+// Deletes all bookmarks in |model| that are in |bookmarks|, and presents a
+// snackbar with an undo action.
+void DeleteBookmarksWithUndoToast(
+ const std::set<const bookmarks::BookmarkNode*>& bookmarks,
+ bookmarks::BookmarkModel* model,
+ ios::ChromeBrowserState* browser_state);
+
+// Deletes all nodes in |bookmarks|.
+void DeleteBookmarks(const std::set<const bookmarks::BookmarkNode*>& bookmarks,
+ bookmarks::BookmarkModel* model);
+
+// Move all |bookmarks| to the given |folder|, and presents a snackbar with an
+// undo action.
+void MoveBookmarksWithUndoToast(
+ const std::set<const bookmarks::BookmarkNode*>& bookmarks,
+ bookmarks::BookmarkModel* model,
+ const bookmarks::BookmarkNode* folder,
+ ios::ChromeBrowserState* browser_state);
+
+// Move all |bookmarks| to the given |folder|.
+// Returns whether this method actually moved bookmarks (for example, only
+// moving a folder to its parent will return |false|).
+bool MoveBookmarks(const std::set<const bookmarks::BookmarkNode*>& bookmarks,
+ bookmarks::BookmarkModel* model,
+ const bookmarks::BookmarkNode* folder);
+
+// Category name for all bookmarks related snackbars.
+extern NSString* const kBookmarksSnackbarCategory;
+
+// Returns the parent, if all the bookmarks are siblings.
+// Otherwise returns the mobile_node.
+const bookmarks::BookmarkNode* defaultMoveFolder(
+ const std::set<const bookmarks::BookmarkNode*>& bookmarks,
+ bookmarks::BookmarkModel* model);
+
+#pragma mark - Segregation of nodes by time.
+
+// A container for nodes which have been aggregated by some time property.
+// e.g. (creation date) or (last access date).
+class NodesSection {
+ public:
+ NodesSection();
+ virtual ~NodesSection();
+
+ // |vector| is sorted by the relevant time property.
+ NodeVector vector;
+ // A representative time of all nodes in vector.
+ base::Time time;
+ // A string representation of |time|.
+ // e.g. (March 2014) or (4 March 2014).
+ std::string timeRepresentation;
+};
+
+// Given the nodes in |vector|, segregates them by some time property into
+// NodesSections.
+// Automatically clears, populates and sorts |nodesSectionVector|.
+// This method is not thread safe - it should only be called from the ui thread.
+void segregateNodes(const NodeVector& vector,
+ ScopedVector<NodesSection>& nodesSectionVector);
+
+#pragma mark - Useful bookmark manipulation.
+
+// Sorts a vector full of folders by title.
+void SortFolders(NodeVector* vector);
+
+// Returns a vector of root level folders and all their folder descendants,
+// sorted depth-first, then alphabetically. The returned nodes are visible, and
+// are guaranteed to not be descendants of any nodes in |obstructions|.
+NodeVector VisibleNonDescendantNodes(const NodeSet& obstructions,
+ bookmarks::BookmarkModel* model);
+
+// Whether |vector1| contains only elements of |vector2| in the same order.
+BOOL IsSubvectorOfNodes(const NodeVector& vector1, const NodeVector& vector2);
+
+// Returns the indices in |vector2| of the items in |vector2| that are not
+// present in |vector1|.
+// |vector1| MUST be a subvector of |vector2| in the sense of |IsSubvector|.
+std::vector<NodeVector::size_type> MissingNodesIndices(
+ const NodeVector& vector1,
+ const NodeVector& vector2);
+
+#pragma mark - Cache position in collection view.
+
+// Caches the active menu item, and the position in the collection view.
+void CachePosition(CGFloat position, BookmarkMenuItem* item);
+// Returns YES if a valid cache exists.
+// |model| must be loaded.
+// |item| and |position| are out variables, only populated if the return is YES.
+BOOL GetPositionCache(bookmarks::BookmarkModel* model,
+ BookmarkMenuItem** item,
+ CGFloat* position);
+// Method exists for testing.
+void ClearPositionCache();
+
+} // namespace bookmark_utils_ios
+
+#endif // IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_UTILS_IOS_H_
« no previous file with comments | « ios/chrome/browser/ui/bookmarks/bookmark_promo_controller.mm ('k') | ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698