diff options
author | sky@google.com <sky@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-09-09 23:08:13 +0000 |
---|---|---|
committer | sky@google.com <sky@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-09-09 23:08:13 +0000 |
commit | 68de8b76186059157dc916c499923d46bedb56b1 (patch) | |
tree | 870704b95740f2cafc144ced59b6bbf3c77c39d1 /chrome/browser/bookmarks/bookmark_drag_data.h | |
parent | d9b168764a9e7ad7dcd2561791041f660a54cdde (diff) | |
download | chromium_src-68de8b76186059157dc916c499923d46bedb56b1.zip chromium_src-68de8b76186059157dc916c499923d46bedb56b1.tar.gz chromium_src-68de8b76186059157dc916c499923d46bedb56b1.tar.bz2 |
Moves bookmark related classes into bookmarks directory. There are no
code changes here (other than converting to COPY_AND_BLAH_BLAH and
updating include guards).
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/1868
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1944 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/bookmarks/bookmark_drag_data.h')
-rw-r--r-- | chrome/browser/bookmarks/bookmark_drag_data.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/chrome/browser/bookmarks/bookmark_drag_data.h b/chrome/browser/bookmarks/bookmark_drag_data.h new file mode 100644 index 0000000..fd967eb --- /dev/null +++ b/chrome/browser/bookmarks/bookmark_drag_data.h @@ -0,0 +1,81 @@ +// 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_DRAG_DATA_ +#define CHROME_BROWSER_BOOKMARKS_BOOKMARK_DRAG_DATA_ + +#include <vector> + +#include "chrome/browser/history/history.h" +#include "googleurl/src/gurl.h" + +class BookmarkBarModel; +class BookmarkBarNode; +class OSExchangeData; +class Pickle; + +// BookmarkDragData is used by the bookmark bar to represent a dragged +// URL or starred group on the clipboard during drag and drop. +// +// Typical usage when writing data for a drag is: +// BookmarkDragData data(node_user_is_dragging); +// data.profile_id = profile_id; +// data.Write(os_exchange_data_for_drag); +// +// Typical usage to read is: +// BookmarkDragData data; +// if (data.Read(os_exchange_data)) +// // data is valid + +struct BookmarkDragData { + BookmarkDragData(); + + // Created a BookmarkDragData populated from node. + explicit BookmarkDragData(BookmarkBarNode* node); + + // Writes this BookmarkDragData to data. If BookmarkDragData is a URL, + // this writes out the URL and URL title clipboard data as well. + void Write(OSExchangeData* data) const; + + // Restores this data from the clipboard, returning true on success. + bool Read(const OSExchangeData& data); + + // Returns the node represented by this drag data from root. If the + // path can not be found, NULL is returned. + // + // This is only valid for groups. + BookmarkBarNode* BookmarkDragData::GetNode(BookmarkBarModel* model) const; + + // If true, this entry represents a StarredEntry of type URL. + bool is_url; + + // ID of the profile we originated from. + std::wstring profile_id; + + // The URL, only valid if is_url is true. + GURL url; + + // Title of the entry + std::wstring title; + + // Children, only used for non-URL nodes. + std::vector<BookmarkDragData> children; + + // If true our data is valid. + bool is_valid; + + private: + // Writes the data to a Pickle. + void WriteToPickle(Pickle* pickle) const; + + bool ReadFromPickle(Pickle* pickle, void** iterator); + + // Adds to children an entry for each child of node. + void AddChildren(BookmarkBarNode* node); + + // ID (node->id()) of the node this BookmarkDragData was created from. + int id_; +}; + +#endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_DRAG_DATA_ |