| Index: chrome/browser/bookmarks/bookmark_folder_tree_model.cc
|
| diff --git a/chrome/browser/bookmarks/bookmark_folder_tree_model.cc b/chrome/browser/bookmarks/bookmark_folder_tree_model.cc
|
| deleted file mode 100644
|
| index e8b3827e29df5ef975ab0b72905cb10162e8a314..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/bookmarks/bookmark_folder_tree_model.cc
|
| +++ /dev/null
|
| @@ -1,236 +0,0 @@
|
| -// 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.
|
| -
|
| -#include "chrome/browser/bookmarks/bookmark_folder_tree_model.h"
|
| -
|
| -#include "app/l10n_util.h"
|
| -#include "app/resource_bundle.h"
|
| -#include "chrome/browser/bookmarks/bookmark_model.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "grit/theme_resources.h"
|
| -#include "third_party/skia/include/core/SkBitmap.h"
|
| -
|
| -BookmarkFolderTreeModel::BookmarkFolderTreeModel(BookmarkModel* model)
|
| - : TreeNodeModel<FolderNode>(new FolderNode(NULL)),
|
| - model_(model),
|
| - recently_bookmarked_node_(new FolderNode(NULL)),
|
| - search_node_(new FolderNode(NULL)) {
|
| - recently_bookmarked_node_->SetTitle(
|
| - l10n_util::GetString(IDS_BOOKMARK_TREE_RECENTLY_BOOKMARKED_NODE_TITLE));
|
| - search_node_->SetTitle(
|
| - l10n_util::GetString(IDS_BOOKMARK_TREE_SEARCH_NODE_TITLE));
|
| - if (model_->IsLoaded())
|
| - AddRootChildren();
|
| - model_->AddObserver(this);
|
| -}
|
| -
|
| -BookmarkFolderTreeModel::~BookmarkFolderTreeModel() {
|
| - if (model_)
|
| - model_->RemoveObserver(this);
|
| -}
|
| -
|
| -BookmarkFolderTreeModel::NodeType BookmarkFolderTreeModel::GetNodeType(
|
| - TreeModelNode* node) {
|
| - if (node == recently_bookmarked_node_)
|
| - return RECENTLY_BOOKMARKED;
|
| - if (node == search_node_)
|
| - return SEARCH;
|
| - if (node == GetRoot())
|
| - return NONE;
|
| - return BOOKMARK;
|
| -}
|
| -
|
| -FolderNode* BookmarkFolderTreeModel::GetFolderNodeForBookmarkNode(
|
| - const BookmarkNode* node) {
|
| - if (!node->is_folder())
|
| - return NULL;
|
| -
|
| - return GetFolderNodeForBookmarkNode(AsNode(GetRoot()), node);
|
| -}
|
| -
|
| -const BookmarkNode* BookmarkFolderTreeModel::TreeNodeAsBookmarkNode(
|
| - TreeModelNode* node) {
|
| - if (GetNodeType(node) != BOOKMARK)
|
| - return NULL;
|
| - return AsNode(node)->value;
|
| -}
|
| -
|
| -void BookmarkFolderTreeModel::Loaded(BookmarkModel* model) {
|
| - AddRootChildren();
|
| -}
|
| -
|
| -void BookmarkFolderTreeModel::BookmarkModelBeingDeleted(BookmarkModel* model) {
|
| - DCHECK(model_);
|
| - model_->RemoveObserver(this);
|
| - model_ = NULL;
|
| -}
|
| -
|
| -void BookmarkFolderTreeModel::BookmarkNodeMoved(BookmarkModel* model,
|
| - const BookmarkNode* old_parent,
|
| - int old_index,
|
| - const BookmarkNode* new_parent,
|
| - int new_index) {
|
| - const BookmarkNode* moved_node = new_parent->GetChild(new_index);
|
| - if (!moved_node->is_folder())
|
| - return; // We're only showing folders, so we can ignore this.
|
| -
|
| - FolderNode* moved_folder_node = GetFolderNodeForBookmarkNode(moved_node);
|
| - DCHECK(moved_folder_node);
|
| - int old_folder_index =
|
| - moved_folder_node->GetParent()->IndexOfChild(moved_folder_node);
|
| - Remove(moved_folder_node->GetParent(), old_folder_index);
|
| - int new_folder_index = CalculateIndexForChild(moved_node);
|
| - Add(GetFolderNodeForBookmarkNode(new_parent), new_folder_index,
|
| - moved_folder_node);
|
| -}
|
| -
|
| -void BookmarkFolderTreeModel::BookmarkNodeAdded(BookmarkModel* model,
|
| - const BookmarkNode* parent,
|
| - int index) {
|
| - const BookmarkNode* new_node = parent->GetChild(index);
|
| - if (!new_node->is_folder())
|
| - return; // We're only showing folders, so we can ignore this.
|
| -
|
| - int folder_index = CalculateIndexForChild(new_node);
|
| - Add(GetFolderNodeForBookmarkNode(parent), folder_index,
|
| - CreateFolderNode(new_node));
|
| -}
|
| -
|
| -void BookmarkFolderTreeModel::BookmarkNodeRemoved(BookmarkModel* model,
|
| - const BookmarkNode* parent,
|
| - int index,
|
| - const BookmarkNode* node) {
|
| - if (!node->is_folder())
|
| - return; // We're only showing folders.
|
| -
|
| - FolderNode* folder_node = GetFolderNodeForBookmarkNode(parent);
|
| - DCHECK(folder_node);
|
| - for (int i = 0; i < folder_node->GetChildCount(); ++i) {
|
| - if (folder_node->GetChild(i)->value == node) {
|
| - scoped_ptr<FolderNode> removed_node(Remove(folder_node, i));
|
| - return;
|
| - }
|
| - }
|
| -
|
| - // If we get here it means a folder was removed that we didn't know about,
|
| - // which shouldn't happen.
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void BookmarkFolderTreeModel::BookmarkNodeChanged(BookmarkModel* model,
|
| - const BookmarkNode* node) {
|
| - if (!node->is_folder())
|
| - return;
|
| -
|
| - FolderNode* folder_node = GetFolderNodeForBookmarkNode(node);
|
| - if (!folder_node)
|
| - return;
|
| -
|
| - folder_node->SetTitle(node->GetTitle());
|
| - FOR_EACH_OBSERVER(TreeModelObserver,
|
| - observer_list(),
|
| - TreeNodeChanged(this, folder_node));
|
| -}
|
| -
|
| -void BookmarkFolderTreeModel::BookmarkNodeChildrenReordered(
|
| - BookmarkModel* model,
|
| - const BookmarkNode* node) {
|
| - FolderNode* folder_node = GetFolderNodeForBookmarkNode(node);
|
| - DCHECK(folder_node);
|
| - if (folder_node->GetChildCount() <= 1)
|
| - return; // Order won't have changed if 1 or fewer nodes.
|
| -
|
| - // Build a map between folder node and bookmark node.
|
| - std::map<const BookmarkNode*, FolderNode*> bn_to_folder;
|
| - for (int i = 0; i < folder_node->GetChildCount(); ++i)
|
| - bn_to_folder[folder_node->GetChild(i)->value] = folder_node->GetChild(i);
|
| -
|
| - // Remove all the folder nodes.
|
| - int original_count = folder_node->GetChildCount();
|
| - folder_node->RemoveAll();
|
| -
|
| - // And add them back in the new order.
|
| - for (int i = 0; i < node->GetChildCount(); ++i) {
|
| - const BookmarkNode* child = node->GetChild(i);
|
| - if (child->is_folder()) {
|
| - DCHECK(bn_to_folder.find(child) != bn_to_folder.end());
|
| - folder_node->Add(folder_node->GetChildCount(), bn_to_folder[child]);
|
| - }
|
| - }
|
| - // The new count better match the original count, otherwise we're leaking and
|
| - // treeview is likely to get way out of sync.
|
| - DCHECK(original_count == folder_node->GetChildCount());
|
| -
|
| - // Finally, notify observers.
|
| - FOR_EACH_OBSERVER(TreeModelObserver,
|
| - observer_list(),
|
| - TreeNodeChildrenReordered(this, folder_node));
|
| -}
|
| -
|
| -void BookmarkFolderTreeModel::GetIcons(std::vector<SkBitmap>* icons) {
|
| - ResourceBundle& rb = ResourceBundle::GetSharedInstance();
|
| - icons->push_back(*rb.GetBitmapNamed(IDR_BOOKMARK_MANAGER_RECENT_ICON));
|
| - icons->push_back(*rb.GetBitmapNamed(IDR_BOOKMARK_MANAGER_SEARCH_ICON));
|
| -}
|
| -
|
| -int BookmarkFolderTreeModel::GetIconIndex(TreeModelNode* node) {
|
| - if (node == recently_bookmarked_node_)
|
| - return 0;
|
| - if (node == search_node_)
|
| - return 1;
|
| -
|
| - // Return -1 to use the default.
|
| - return -1;
|
| -}
|
| -
|
| -void BookmarkFolderTreeModel::AddRootChildren() {
|
| - Add(AsNode(GetRoot()), 0, CreateFolderNode(model_->GetBookmarkBarNode()));
|
| - Add(AsNode(GetRoot()), 1, CreateFolderNode(model_->other_node()));
|
| - Add(AsNode(GetRoot()), 2, recently_bookmarked_node_);
|
| - Add(AsNode(GetRoot()), 3, search_node_);
|
| -}
|
| -
|
| -FolderNode* BookmarkFolderTreeModel::GetFolderNodeForBookmarkNode(
|
| - FolderNode* folder_node,
|
| - const BookmarkNode* node) {
|
| - DCHECK(node->is_folder());
|
| - if (folder_node->value == node)
|
| - return folder_node;
|
| - for (int i = 0; i < folder_node->GetChildCount(); ++i) {
|
| - FolderNode* result =
|
| - GetFolderNodeForBookmarkNode(folder_node->GetChild(i), node);
|
| - if (result)
|
| - return result;
|
| - }
|
| - return NULL;
|
| -}
|
| -
|
| -FolderNode* BookmarkFolderTreeModel::CreateFolderNode(
|
| - const BookmarkNode* node) {
|
| - DCHECK(node->is_folder());
|
| - FolderNode* folder_node = new FolderNode(node);
|
| - folder_node->SetTitle(node->GetTitle());
|
| -
|
| - // And clone the children folders.
|
| - for (int i = 0; i < node->GetChildCount(); ++i) {
|
| - const BookmarkNode* child = node->GetChild(i);
|
| - if (child->is_folder())
|
| - folder_node->Add(folder_node->GetChildCount(), CreateFolderNode(child));
|
| - }
|
| - return folder_node;
|
| -}
|
| -
|
| -int BookmarkFolderTreeModel::CalculateIndexForChild(const BookmarkNode* node) {
|
| - const BookmarkNode* parent = node->GetParent();
|
| - DCHECK(parent);
|
| - for (int i = 0, folder_count = 0; i < parent->GetChildCount(); ++i) {
|
| - const BookmarkNode* child = parent->GetChild(i);
|
| - if (child == node)
|
| - return folder_count;
|
| - if (child->is_folder())
|
| - folder_count++;
|
| - }
|
| - NOTREACHED();
|
| - return 0;
|
| -}
|
|
|