| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/gtk/bookmark_tree_model.h" | 5 #include "chrome/browser/gtk/bookmark_tree_model.h" |
| 6 | 6 |
| 7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
| 8 | 8 |
| 9 #include "app/resource_bundle.h" | 9 #include "app/resource_bundle.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 } // namespace | 91 } // namespace |
| 92 | 92 |
| 93 namespace bookmark_utils { | 93 namespace bookmark_utils { |
| 94 | 94 |
| 95 GtkTreeStore* MakeFolderTreeStore() { | 95 GtkTreeStore* MakeFolderTreeStore() { |
| 96 return gtk_tree_store_new(FOLDER_STORE_NUM_COLUMNS, GDK_TYPE_PIXBUF, | 96 return gtk_tree_store_new(FOLDER_STORE_NUM_COLUMNS, GDK_TYPE_PIXBUF, |
| 97 G_TYPE_STRING, G_TYPE_INT64, G_TYPE_BOOLEAN); | 97 G_TYPE_STRING, G_TYPE_INT64, G_TYPE_BOOLEAN); |
| 98 } | 98 } |
| 99 | 99 |
| 100 void AddToTreeStore(BookmarkModel* model, int64 selected_id, | 100 void AddToTreeStore(BookmarkModel* model, int64 selected_id, |
| 101 const BookmarkNode* node_to_ignore, GtkTreeStore* store, | 101 GtkTreeStore* store, GtkTreeIter* selected_iter) { |
| 102 GtkTreeIter* selected_iter) { | |
| 103 const BookmarkNode* root_node = model->root_node(); | 102 const BookmarkNode* root_node = model->root_node(); |
| 104 for (int i = 0; i < root_node->GetChildCount(); ++i) { | 103 for (int i = 0; i < root_node->GetChildCount(); ++i) { |
| 105 AddToTreeStoreAt(root_node->GetChild(i), selected_id, node_to_ignore, store, | 104 AddToTreeStoreAt(root_node->GetChild(i), selected_id, store, selected_iter, |
| 106 selected_iter, NULL); | 105 NULL); |
| 107 } | 106 } |
| 108 } | 107 } |
| 109 | 108 |
| 110 GtkWidget* MakeTreeViewForStore(GtkTreeStore* store) { | 109 GtkWidget* MakeTreeViewForStore(GtkTreeStore* store) { |
| 111 GtkTreeViewColumn* column = gtk_tree_view_column_new(); | 110 GtkTreeViewColumn* column = gtk_tree_view_column_new(); |
| 112 GtkCellRenderer* image_renderer = gtk_cell_renderer_pixbuf_new(); | 111 GtkCellRenderer* image_renderer = gtk_cell_renderer_pixbuf_new(); |
| 113 gtk_tree_view_column_pack_start(column, image_renderer, FALSE); | 112 gtk_tree_view_column_pack_start(column, image_renderer, FALSE); |
| 114 gtk_tree_view_column_add_attribute(column, image_renderer, | 113 gtk_tree_view_column_add_attribute(column, image_renderer, |
| 115 "pixbuf", FOLDER_ICON); | 114 "pixbuf", FOLDER_ICON); |
| 116 GtkCellRenderer* text_renderer = gtk_cell_renderer_text_new(); | 115 GtkCellRenderer* text_renderer = gtk_cell_renderer_text_new(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 131 g_object_set_data(G_OBJECT(tree_view), kCellRendererTextKey, text_renderer); | 130 g_object_set_data(G_OBJECT(tree_view), kCellRendererTextKey, text_renderer); |
| 132 return tree_view; | 131 return tree_view; |
| 133 } | 132 } |
| 134 | 133 |
| 135 GtkCellRenderer* GetCellRendererText(GtkTreeView* tree_view) { | 134 GtkCellRenderer* GetCellRendererText(GtkTreeView* tree_view) { |
| 136 return static_cast<GtkCellRenderer*>( | 135 return static_cast<GtkCellRenderer*>( |
| 137 g_object_get_data(G_OBJECT(tree_view), kCellRendererTextKey)); | 136 g_object_get_data(G_OBJECT(tree_view), kCellRendererTextKey)); |
| 138 } | 137 } |
| 139 | 138 |
| 140 void AddToTreeStoreAt(const BookmarkNode* node, int64 selected_id, | 139 void AddToTreeStoreAt(const BookmarkNode* node, int64 selected_id, |
| 141 const BookmarkNode* node_to_ignore, GtkTreeStore* store, | 140 GtkTreeStore* store, GtkTreeIter* selected_iter, |
| 142 GtkTreeIter* selected_iter, GtkTreeIter* parent) { | 141 GtkTreeIter* parent) { |
| 143 if (!node->is_folder() || node == node_to_ignore) | 142 if (!node->is_folder()) |
| 144 return; | 143 return; |
| 145 | 144 |
| 146 GtkTreeIter iter; | 145 GtkTreeIter iter; |
| 147 AddSingleNodeToTreeStore(store, node, &iter, parent); | 146 AddSingleNodeToTreeStore(store, node, &iter, parent); |
| 148 if (selected_iter && node->id() == selected_id) { | 147 if (selected_iter && node->id() == selected_id) { |
| 149 // Save the iterator. Since we're using a GtkTreeStore, we're | 148 // Save the iterator. Since we're using a GtkTreeStore, we're |
| 150 // guaranteed that the iterator will remain valid as long as the above | 149 // guaranteed that the iterator will remain valid as long as the above |
| 151 // appended item exists. | 150 // appended item exists. |
| 152 *selected_iter = iter; | 151 *selected_iter = iter; |
| 153 } | 152 } |
| 154 | 153 |
| 155 for (int i = 0; i < node->GetChildCount(); ++i) { | 154 for (int i = 0; i < node->GetChildCount(); ++i) { |
| 156 AddToTreeStoreAt(node->GetChild(i), selected_id, node_to_ignore, store, | 155 AddToTreeStoreAt(node->GetChild(i), selected_id, store, selected_iter, |
| 157 selected_iter, &iter); | 156 &iter); |
| 158 } | 157 } |
| 159 } | 158 } |
| 160 | 159 |
| 161 const BookmarkNode* CommitTreeStoreDifferencesBetween( | 160 const BookmarkNode* CommitTreeStoreDifferencesBetween( |
| 162 BookmarkModel* bb_model, GtkTreeStore* tree_store, GtkTreeIter* selected) { | 161 BookmarkModel* bb_model, GtkTreeStore* tree_store, GtkTreeIter* selected) { |
| 163 const BookmarkNode* node_to_return = NULL; | 162 const BookmarkNode* node_to_return = NULL; |
| 164 GtkTreeModel* tree_model = GTK_TREE_MODEL(tree_store); | 163 GtkTreeModel* tree_model = GTK_TREE_MODEL(tree_store); |
| 165 | 164 |
| 166 GtkTreePath* selected_path = gtk_tree_model_get_path(tree_model, selected); | 165 GtkTreePath* selected_path = gtk_tree_model_get_path(tree_model, selected); |
| 167 | 166 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 ret_val = UTF8ToWide(utf8str); | 219 ret_val = UTF8ToWide(utf8str); |
| 221 g_value_unset(&value); | 220 g_value_unset(&value); |
| 222 } else { | 221 } else { |
| 223 NOTREACHED() << "Impossible type mismatch"; | 222 NOTREACHED() << "Impossible type mismatch"; |
| 224 } | 223 } |
| 225 | 224 |
| 226 return ret_val; | 225 return ret_val; |
| 227 } | 226 } |
| 228 | 227 |
| 229 } // namespace bookmark_utils | 228 } // namespace bookmark_utils |
| OLD | NEW |