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

Unified Diff: chrome/browser/bookmarks/bookmark_table_model.cc

Issue 1730015: Windows/Views: delete native bookmark manager code. (Closed)
Patch Set: Patch with fixed file perms. Created 10 years, 8 months 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: chrome/browser/bookmarks/bookmark_table_model.cc
diff --git a/chrome/browser/bookmarks/bookmark_table_model.cc b/chrome/browser/bookmarks/bookmark_table_model.cc
deleted file mode 100644
index 0ac5416cc30eb9289b079b0ed8bc9d3c6145d247..0000000000000000000000000000000000000000
--- a/chrome/browser/bookmarks/bookmark_table_model.cc
+++ /dev/null
@@ -1,412 +0,0 @@
-// Copyright (c) 2010 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_table_model.h"
-
-#include <limits>
-
-#include "app/l10n_util.h"
-#include "app/resource_bundle.h"
-#include "app/table_model_observer.h"
-#include "base/i18n/rtl.h"
-#include "base/i18n/time_formatting.h"
-#include "base/string_util.h"
-#include "chrome/browser/bookmarks/bookmark_model.h"
-#include "chrome/browser/bookmarks/bookmark_utils.h"
-#include "chrome/browser/pref_service.h"
-#include "chrome/browser/profile.h"
-#include "chrome/common/pref_names.h"
-#include "googleurl/src/gurl.h"
-#include "grit/app_resources.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
-#include "net/base/escape.h"
-#include "net/base/net_util.h"
-
-namespace {
-
-// Number of bookmarks shown in recently bookmarked.
-const int kRecentlyBookmarkedCount = 50;
-
-// VectorBackedBookmarkTableModel ----------------------------------------------
-
-class VectorBackedBookmarkTableModel : public BookmarkTableModel {
- public:
- explicit VectorBackedBookmarkTableModel(BookmarkModel* model)
- : BookmarkTableModel(model) {
- }
-
- virtual const BookmarkNode* GetNodeForRow(int row) {
- return nodes_[row];
- }
-
- virtual int RowCount() {
- return static_cast<int>(nodes_.size());
- }
-
- virtual void BookmarkNodeMoved(BookmarkModel* model,
- const BookmarkNode* old_parent,
- int old_index,
- const BookmarkNode* new_parent,
- int new_index) {
- NotifyObserverOfChange(new_parent->GetChild(new_index));
- }
-
- virtual void BookmarkNodeFavIconLoaded(BookmarkModel* model,
- const BookmarkNode* node) {
- NotifyObserverOfChange(node);
- }
-
- virtual void BookmarkNodeChanged(BookmarkModel* model,
- const BookmarkNode* node) {
- NotifyObserverOfChange(node);
- }
-
- protected:
- void NotifyObserverOfChange(const BookmarkNode* node) {
- if (!observer())
- return;
-
- int index = IndexOfNode(node);
- if (index != -1)
- observer()->OnItemsChanged(index, 1);
- }
-
- typedef std::vector<const BookmarkNode*> Nodes;
- Nodes& nodes() { return nodes_; }
-
- private:
- Nodes nodes_;
-
- DISALLOW_COPY_AND_ASSIGN(VectorBackedBookmarkTableModel);
-};
-
-// FolderBookmarkTableModel ----------------------------------------------------
-
-// FolderBookmarkTableModel is a TableModel implementation backed by the
-// contents of a bookmark folder. FolderBookmarkTableModel caches the contents
-// of the folder so that it can send out the correct events when a bookmark
-// node is moved.
-class FolderBookmarkTableModel : public VectorBackedBookmarkTableModel {
- public:
- FolderBookmarkTableModel(BookmarkModel* model, const BookmarkNode* root_node)
- : VectorBackedBookmarkTableModel(model),
- root_node_(root_node) {
- PopulateNodesFromRoot();
- }
-
- virtual void BookmarkNodeMoved(BookmarkModel* model,
- const BookmarkNode* old_parent,
- int old_index,
- const BookmarkNode* new_parent,
- int new_index) {
- if (old_parent == root_node_) {
- nodes().erase(nodes().begin() + old_index);
- if (observer())
- observer()->OnItemsRemoved(old_index, 1);
- }
- if (new_parent == root_node_) {
- nodes().insert(nodes().begin() + new_index,
- root_node_->GetChild(new_index));
- if (observer())
- observer()->OnItemsAdded(new_index, 1);
- }
- }
-
- virtual void BookmarkNodeAdded(BookmarkModel* model,
- const BookmarkNode* parent,
- int index) {
- if (root_node_ == parent) {
- nodes().insert(nodes().begin() + index, parent->GetChild(index));
- if (observer())
- observer()->OnItemsAdded(index, 1);
- }
- }
-
- virtual void BookmarkNodeRemoved(BookmarkModel* model,
- const BookmarkNode* parent,
- int index,
- const BookmarkNode* node) {
- if (root_node_->HasAncestor(node)) {
- // We, or one of our ancestors was removed.
- root_node_ = NULL;
- nodes().clear();
- if (observer())
- observer()->OnModelChanged();
- return;
- }
- if (root_node_ == parent) {
- nodes().erase(nodes().begin() + index);
- if (observer())
- observer()->OnItemsRemoved(index, 1);
- }
- }
-
- virtual void BookmarkNodeChanged(BookmarkModel* model,
- const BookmarkNode* node) {
- NotifyChanged(node);
- }
-
- virtual void BookmarkNodeFavIconLoaded(BookmarkModel* model,
- const BookmarkNode* node) {
- NotifyChanged(node);
- }
-
- virtual void BookmarkNodeChildrenReordered(BookmarkModel* model,
- const BookmarkNode* node) {
- if (node != root_node_)
- return;
-
- nodes().clear();
- PopulateNodesFromRoot();
-
- if (observer())
- observer()->OnModelChanged();
- }
-
- private:
- void NotifyChanged(const BookmarkNode* node) {
- if (node->GetParent() == root_node_ && observer())
- observer()->OnItemsChanged(node->GetParent()->IndexOfChild(node), 1);
- }
-
- void PopulateNodesFromRoot() {
- for (int i = 0; i < root_node_->GetChildCount(); ++i)
- nodes().push_back(root_node_->GetChild(i));
- }
-
- // The node we're showing the children of. This is set to NULL if the node
- // (or one of its ancestors) is removed from the model.
- const BookmarkNode* root_node_;
-
- DISALLOW_COPY_AND_ASSIGN(FolderBookmarkTableModel);
-};
-
-// RecentlyBookmarkedTableModel ------------------------------------------------
-
-class RecentlyBookmarkedTableModel : public VectorBackedBookmarkTableModel {
- public:
- explicit RecentlyBookmarkedTableModel(BookmarkModel* model)
- : VectorBackedBookmarkTableModel(model) {
- UpdateRecentlyBookmarked();
- }
-
- virtual void BookmarkNodeAdded(BookmarkModel* model,
- const BookmarkNode* parent,
- int index) {
- if (parent->GetChild(index)->is_url())
- UpdateRecentlyBookmarked();
- }
-
- virtual void BookmarkNodeRemoved(BookmarkModel* model,
- const BookmarkNode* parent,
- int old_index,
- const BookmarkNode* old_node) {
- if (old_node->is_url())
- UpdateRecentlyBookmarked();
- }
-
- private:
- void UpdateRecentlyBookmarked() {
- nodes().clear();
- bookmark_utils::GetMostRecentlyAddedEntries(model(),
- kRecentlyBookmarkedCount,
- &nodes());
- if (observer())
- observer()->OnModelChanged();
- }
-
- DISALLOW_COPY_AND_ASSIGN(RecentlyBookmarkedTableModel);
-};
-
-// BookmarkSearchTableModel ----------------------------------------------------
-
-class BookmarkSearchTableModel : public VectorBackedBookmarkTableModel {
- public:
- BookmarkSearchTableModel(BookmarkModel* model,
- const std::wstring& search_text,
- const std::wstring& languages)
- : VectorBackedBookmarkTableModel(model),
- search_text_(search_text),
- languages_(languages) {
- bookmark_utils::GetBookmarksContainingText(
- model, search_text, std::numeric_limits<int>::max(),
- languages, &nodes());
- }
-
- virtual void BookmarkNodeAdded(BookmarkModel* model,
- const BookmarkNode* parent,
- int index) {
- const BookmarkNode* node = parent->GetChild(index);
- if (bookmark_utils::DoesBookmarkContainText(
- node, search_text_, languages_)) {
- nodes().push_back(node);
- if (observer())
- observer()->OnItemsAdded(static_cast<int>(nodes().size() - 1), 1);
- }
- }
-
- virtual void BookmarkNodeRemoved(BookmarkModel* model,
- const BookmarkNode* parent,
- int index,
- const BookmarkNode* node) {
- int internal_index = IndexOfNode(node);
- if (internal_index == -1)
- return;
-
- nodes().erase(nodes().begin() + static_cast<int>(internal_index));
- if (observer())
- observer()->OnItemsRemoved(internal_index, 1);
- }
-
- private:
- const std::wstring search_text_;
- const std::wstring languages_;
-
- DISALLOW_COPY_AND_ASSIGN(BookmarkSearchTableModel);
-};
-
-} // namespace
-
-// BookmarkTableModel ----------------------------------------------------------
-
-// static
-BookmarkTableModel* BookmarkTableModel::CreateRecentlyBookmarkedModel(
- BookmarkModel* model) {
- return new RecentlyBookmarkedTableModel(model);
-}
-
-// static
-BookmarkTableModel* BookmarkTableModel::CreateBookmarkTableModelForFolder(
- BookmarkModel* model, const BookmarkNode* node) {
- return new FolderBookmarkTableModel(model, node);
-}
-
-// static
-BookmarkTableModel* BookmarkTableModel::CreateSearchTableModel(
- BookmarkModel* model,
- const std::wstring& text,
- const std::wstring& languages) {
- return new BookmarkSearchTableModel(model, text, languages);
-}
-
-BookmarkTableModel::BookmarkTableModel(BookmarkModel* model)
- : model_(model),
- observer_(NULL) {
- model_->AddObserver(this);
-}
-
-BookmarkTableModel::~BookmarkTableModel() {
- if (model_)
- model_->RemoveObserver(this);
-}
-
-std::wstring BookmarkTableModel::GetText(int row, int column_id) {
- const BookmarkNode* node = GetNodeForRow(row);
- switch (column_id) {
- case IDS_BOOKMARK_TABLE_TITLE: {
- std::wstring title = node->GetTitle();
- // Adjust the text as well, for example, put LRE-PDF pair around LTR text
- // in RTL enviroment, so that the ending punctuation in the text will not
- // be rendered incorrectly (such as rendered as the leftmost character,
- // and/or rendered as a mirrored punctuation character).
- //
- // TODO(xji): Consider adding a special case if the title text is a URL,
- // since those should always be displayed LTR. Please refer to
- // http://crbug.com/6726 for more information.
- base::i18n::AdjustStringForLocaleDirection(title, &title);
- return title;
- }
-
- case IDS_BOOKMARK_TABLE_URL: {
- if (!node->is_url())
- return std::wstring();
- std::wstring languages = model_ && model_->profile()
- ? model_->profile()->GetPrefs()->GetString(prefs::kAcceptLanguages)
- : std::wstring();
- std::wstring url_text = net::FormatUrl(node->GetURL(), languages,
- net::kFormatUrlOmitAll, UnescapeRule::SPACES, NULL, NULL, NULL);
- if (base::i18n::IsRTL())
- base::i18n::WrapStringWithLTRFormatting(&url_text);
- return url_text;
- }
-
- case IDS_BOOKMARK_TABLE_PATH: {
- std::wstring path;
- BuildPath(node->GetParent(), &path);
- // Force path to have LTR directionality. The whole path (but not every
- // single path component) is marked with LRE-PDF. For example,
- // ALEPH/BET/GIMEL (using uppercase English for Hebrew) is supposed to
- // appear (visually) as LEMIG/TEB/HPELA; foo/C/B/A.doc refers to file
- // C.doc in directory B in directory A in directory foo, not to file
- // A.doc in directory B in directory C in directory foo. The reason to
- // mark the whole path, but not every single path component, as LTR is
- // because paths need to get written in text documents, and that is how
- // they will appear there. Being a saint and doing the tedious formatting
- // to every single path component to get it to come out in the logical
- // order will accomplish nothing but confuse people, since they will now
- // see both formats being used, and will never know what anything means.
- // Furthermore, doing the "logical" formatting with characters like LRM,
- // LRE, and PDF to every single path component means that when someone
- // copy/pastes your path, it will still contain those characters, and
- // trying to access the file will fail because of them. Windows Explorer,
- // Firefox, IE, Nautilus, gedit choose to format only the whole path as
- // LTR too. The point here is to display the path the same way as it's
- // displayed by other software.
- if (base::i18n::IsRTL())
- base::i18n::WrapStringWithLTRFormatting(&path);
- return path;
- }
- }
- NOTREACHED();
- return std::wstring();
-}
-
-SkBitmap BookmarkTableModel::GetIcon(int row) {
- static SkBitmap* folder_icon = ResourceBundle::GetSharedInstance().
- GetBitmapNamed(IDR_BOOKMARK_BAR_FOLDER);
- static SkBitmap* default_icon = ResourceBundle::GetSharedInstance().
- GetBitmapNamed(IDR_DEFAULT_FAVICON);
-
- const BookmarkNode* node = GetNodeForRow(row);
- if (node->is_folder())
- return *folder_icon;
-
- if (model_->GetFavIcon(node).empty())
- return *default_icon;
-
- return model_->GetFavIcon(node);
-}
-
-void BookmarkTableModel::BookmarkModelBeingDeleted(BookmarkModel* model) {
- model_->RemoveObserver(this);
- model_ = NULL;
-}
-
-int BookmarkTableModel::IndexOfNode(const BookmarkNode* node) {
- for (int i = RowCount() - 1; i >= 0; --i) {
- if (GetNodeForRow(i) == node)
- return i;
- }
- return -1;
-}
-
-void BookmarkTableModel::BuildPath(const BookmarkNode* node,
- std::wstring* path) {
- if (!node) {
- NOTREACHED();
- return;
- }
- if (node == model()->GetBookmarkBarNode()) {
- *path = l10n_util::GetString(IDS_BOOKMARK_TABLE_BOOKMARK_BAR_PATH);
- return;
- }
- if (node == model()->other_node()) {
- *path = l10n_util::GetString(IDS_BOOKMARK_TABLE_OTHER_BOOKMARKS_PATH);
- return;
- }
- BuildPath(node->GetParent(), path);
- path->append(l10n_util::GetString(IDS_BOOKMARK_TABLE_PATH_SEPARATOR));
- path->append(node->GetTitle());
-}
« no previous file with comments | « chrome/browser/bookmarks/bookmark_table_model.h ('k') | chrome/browser/bookmarks/bookmark_table_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698