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

Side by Side Diff: chrome/browser/bookmarks/bookmark_folder_tree_model.cc

Issue 27262: Wires up sorting of bookmarks to the 'organize menu' in the bookmark... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/bookmarks/bookmark_folder_tree_model.h" 5 #include "chrome/browser/bookmarks/bookmark_folder_tree_model.h"
6 6
7 #include "chrome/common/l10n_util.h" 7 #include "chrome/common/l10n_util.h"
8 #include "chrome/common/resource_bundle.h" 8 #include "chrome/common/resource_bundle.h"
9 #include "grit/generated_resources.h" 9 #include "grit/generated_resources.h"
10 #include "grit/theme_resources.h" 10 #include "grit/theme_resources.h"
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 123
124 FolderNode* folder_node = GetFolderNodeForBookmarkNode(node); 124 FolderNode* folder_node = GetFolderNodeForBookmarkNode(node);
125 if (!folder_node) 125 if (!folder_node)
126 return; 126 return;
127 127
128 folder_node->SetTitle(node->GetTitle()); 128 folder_node->SetTitle(node->GetTitle());
129 if (GetObserver()) 129 if (GetObserver())
130 GetObserver()->TreeNodeChanged(this, folder_node); 130 GetObserver()->TreeNodeChanged(this, folder_node);
131 } 131 }
132 132
133 void BookmarkFolderTreeModel::BookmarkNodeChildrenReordered(
134 BookmarkModel* model,
135 BookmarkNode* node) {
136 FolderNode* folder_node = GetFolderNodeForBookmarkNode(node);
137 DCHECK(folder_node);
138 if (folder_node->GetChildCount() <= 1)
139 return; // Order won't have changed if 1 or fewer nodes.
140
141 // Build a map between folder node and bookmark node.
142 std::map<BookmarkNode*, FolderNode*> bn_to_folder;
143 for (int i = 0; i < folder_node->GetChildCount(); ++i)
144 bn_to_folder[folder_node->GetChild(i)->value] = folder_node->GetChild(i);
ncarter (slow) 2009/02/27 21:22:34 If this map always existed (for all FolderNodes),
sky 2009/02/27 21:42:06 That's a good idea. I'm going to hold off at this
145
146 // Remove all the folder nodes.
147 int original_count = folder_node->GetChildCount();
148 folder_node->RemoveAll();
149
150 // And add them back in the new order.
151 for (int i = 0; i < node->GetChildCount(); ++i) {
152 BookmarkNode* child = node->GetChild(i);
153 if (child->is_folder()) {
154 DCHECK(bn_to_folder.find(child) != bn_to_folder.end());
155 folder_node->Add(folder_node->GetChildCount(), bn_to_folder[child]);
156 }
157 }
158 // The new count better match the original count, otherwise we're leaking and
159 // treeview is likely to get way out of sync.
160 DCHECK(original_count == folder_node->GetChildCount());
161
162 // Finally, notify observers.
163 if (GetObserver())
164 GetObserver()->TreeNodeChildrenReordered(this, folder_node);
165 }
166
133 void BookmarkFolderTreeModel::GetIcons(std::vector<SkBitmap>* icons) { 167 void BookmarkFolderTreeModel::GetIcons(std::vector<SkBitmap>* icons) {
134 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 168 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
135 icons->push_back(*rb.GetBitmapNamed(IDR_BOOKMARK_MANAGER_RECENT_ICON)); 169 icons->push_back(*rb.GetBitmapNamed(IDR_BOOKMARK_MANAGER_RECENT_ICON));
136 icons->push_back(*rb.GetBitmapNamed(IDR_BOOKMARK_MANAGER_SEARCH_ICON)); 170 icons->push_back(*rb.GetBitmapNamed(IDR_BOOKMARK_MANAGER_SEARCH_ICON));
137 } 171 }
138 172
139 int BookmarkFolderTreeModel::GetIconIndex(views::TreeModelNode* node) { 173 int BookmarkFolderTreeModel::GetIconIndex(views::TreeModelNode* node) {
140 if (node == recently_bookmarked_node_) 174 if (node == recently_bookmarked_node_)
141 return 0; 175 return 0;
142 if (node == search_node_) 176 if (node == search_node_)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 for (int i = 0, folder_count = 0; i < parent->GetChildCount(); ++i) { 222 for (int i = 0, folder_count = 0; i < parent->GetChildCount(); ++i) {
189 BookmarkNode* child = parent->GetChild(i); 223 BookmarkNode* child = parent->GetChild(i);
190 if (child == node) 224 if (child == node)
191 return folder_count; 225 return folder_count;
192 if (child->is_folder()) 226 if (child->is_folder())
193 folder_count++; 227 folder_count++;
194 } 228 }
195 NOTREACHED(); 229 NOTREACHED();
196 return 0; 230 return 0;
197 } 231 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698