Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |