diff options
author | sky@google.com <sky@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-29 23:38:06 +0000 |
---|---|---|
committer | sky@google.com <sky@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-29 23:38:06 +0000 |
commit | 7f856bee73ffdccdbbbbbab4cb79185290d38359 (patch) | |
tree | a837328e08a113abdc70b2fc0ae2f2a4a3f804eb /chrome/browser/bookmarks/bookmark_utils.h | |
parent | 281fe14063dd8fb81cea102f5abb7b82f407c3d1 (diff) | |
download | chromium_src-7f856bee73ffdccdbbbbbab4cb79185290d38359.zip chromium_src-7f856bee73ffdccdbbbbbab4cb79185290d38359.tar.gz chromium_src-7f856bee73ffdccdbbbbbab4cb79185290d38359.tar.bz2 |
First cut at the bookmark manager. There are still a fair number of
rough edges, but I'm at a good point where I want to land what I
have. Here's what is left:
. Flicker on show, likely the result of restoring window placement.
. tree flickers when dragging splitter.
. table/tree need to autoscroll when drop cursor held at bottom of view.
. prompts for deleting.
. When you move an item the table snaps to the top, this is because
I'm sending out model changed. need a better notification.
. Operations in menu to add need to change selection.
. Remember split location.
I would have preferred to split this up into a couple of reviews, but
everything is intertwined now. Sorry.
BUG=674
TEST=don't test the bookmark manager yet, but make sure bookmark bar
still works.
Review URL: http://codereview.chromium.org/8197
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4191 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/bookmarks/bookmark_utils.h')
-rw-r--r-- | chrome/browser/bookmarks/bookmark_utils.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/chrome/browser/bookmarks/bookmark_utils.h b/chrome/browser/bookmarks/bookmark_utils.h new file mode 100644 index 0000000..0711638 --- /dev/null +++ b/chrome/browser/bookmarks/bookmark_utils.h @@ -0,0 +1,67 @@ +// Copyright (c) 2006-2008 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 CHROME_BROWSER_BOOKMARKS_BOOKMARK_UTILS_H_ +#define CHROME_BROWSER_BOOKMARKS_BOOKMARK_UTILS_H_ + +#include <vector> + +#include "chrome/browser/bookmarks/bookmark_drag_data.h" +#include "webkit/glue/window_open_disposition.h" + +class BookmarkNode; +class PageNavigator; +class Profile; + +namespace views { +class DropTargetEvent; +} + +// A collection of bookmark utility functions used by various parts of the UI +// that show bookmarks: bookmark manager, bookmark bar view ... +namespace bookmark_utils { + +// Calculates the drop operation given the event and supported set of +// operations. This prefers the following ordering: COPY, LINK then MOVE. +int PreferredDropOperation(const views::DropTargetEvent& event, + int operation); + +// Returns true if the bookmark data can be dropped on |drop_parent| at +// |index|. A drop from a separate profile is always allowed, where as +// a drop from the same profile is only allowed if none of the nodes in +// |data| are an ancestor of |drop_parent| and one of the nodes isn't already +// a child of |drop_parent| at |index|. +bool IsValidDropLocation(Profile* profile, + const BookmarkDragData& data, + BookmarkNode* drop_parent, + int index); + +// Clones drag data, adding newly created nodes to |parent| starting at +// |index_to_add_at|. +void CloneDragData(BookmarkModel* model, + const std::vector<BookmarkDragData::Element>& elements, + BookmarkNode* parent, + int index_to_add_at); + +// Recursively opens all bookmarks. |initial_disposition| dictates how the +// first URL is opened, all subsequent URLs are opened as background tabs. +// |navigator| is used to open the URLs. If |navigator| is NULL the last +// tabbed browser with the profile |profile| is used. If there is no browser +// with the specified profile a new one is created. +void OpenAll(HWND parent, + Profile* profile, + PageNavigator* navigator, + const std::vector<BookmarkNode*>& nodes, + WindowOpenDisposition initial_disposition); + +// Convenience for opening a single BookmarkNode. +void OpenAll(HWND parent, + Profile* profile, + PageNavigator* navigator, + BookmarkNode* node, + WindowOpenDisposition initial_disposition); + +} // namespace bookmark_utils + +#endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_UTILS_H_ |