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

Side by Side Diff: ui/views/examples/tree_view_example.cc

Issue 2379863002: Fix object ownership in ui/base/models. (Closed)
Patch Set: fix Created 4 years, 2 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
« no previous file with comments | « ui/views/examples/tree_view_example.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/views/examples/tree_view_example.h" 5 #include "ui/views/examples/tree_view_example.h"
6 6
7 #include "base/memory/ptr_util.h"
7 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
8 #include "ui/views/controls/button/label_button.h" 9 #include "ui/views/controls/button/label_button.h"
9 #include "ui/views/controls/menu/menu_model_adapter.h" 10 #include "ui/views/controls/menu/menu_model_adapter.h"
10 #include "ui/views/controls/menu/menu_runner.h" 11 #include "ui/views/controls/menu/menu_runner.h"
11 #include "ui/views/controls/tree/tree_view.h" 12 #include "ui/views/controls/tree/tree_view.h"
12 #include "ui/views/layout/grid_layout.h" 13 #include "ui/views/layout/grid_layout.h"
13 14
14 using base::ASCIIToUTF16; 15 using base::ASCIIToUTF16;
15 16
16 namespace views { 17 namespace views {
17 namespace examples { 18 namespace examples {
18 19
19 TreeViewExample::TreeViewExample() 20 TreeViewExample::TreeViewExample()
20 : ExampleBase("Tree View"), 21 : ExampleBase("Tree View"),
21 tree_view_(NULL), 22 model_(base::MakeUnique<NodeType>(ASCIIToUTF16("root"), 1)) {}
22 model_(new NodeType(ASCIIToUTF16("root"), 1)) {
23 }
24 23
25 TreeViewExample::~TreeViewExample() { 24 TreeViewExample::~TreeViewExample() {
26 // Delete the view before the model. 25 // Delete the view before the model.
27 delete tree_view_; 26 tree_view_.reset();
28 tree_view_ = NULL;
29 } 27 }
30 28
31 void TreeViewExample::CreateExampleView(View* container) { 29 void TreeViewExample::CreateExampleView(View* container) {
32 // Add some sample data. 30 // Add some sample data.
33 NodeType* colors_node = new NodeType(ASCIIToUTF16("colors"), 1); 31 NodeType* colors_node = model_.GetRoot()->Add(
34 model_.GetRoot()->Add(colors_node, 0); 32 base::MakeUnique<NodeType>(ASCIIToUTF16("colors"), 1), 0);
35 colors_node->Add(new NodeType(ASCIIToUTF16("red"), 1), 0); 33 colors_node->Add(base::MakeUnique<NodeType>(ASCIIToUTF16("red"), 1), 0);
36 colors_node->Add(new NodeType(ASCIIToUTF16("green"), 1), 1); 34 colors_node->Add(base::MakeUnique<NodeType>(ASCIIToUTF16("green"), 1), 1);
37 colors_node->Add(new NodeType(ASCIIToUTF16("blue"), 1), 2); 35 colors_node->Add(base::MakeUnique<NodeType>(ASCIIToUTF16("blue"), 1), 2);
38 36
39 NodeType* sheep_node = new NodeType(ASCIIToUTF16("sheep"), 1); 37 NodeType* sheep_node = model_.GetRoot()->Add(
40 model_.GetRoot()->Add(sheep_node, 0); 38 base::MakeUnique<NodeType>(ASCIIToUTF16("sheep"), 1), 0);
41 sheep_node->Add(new NodeType(ASCIIToUTF16("Sheep 1"), 1), 0); 39 sheep_node->Add(base::MakeUnique<NodeType>(ASCIIToUTF16("Sheep 1"), 1), 0);
42 sheep_node->Add(new NodeType(ASCIIToUTF16("Sheep 2"), 1), 1); 40 sheep_node->Add(base::MakeUnique<NodeType>(ASCIIToUTF16("Sheep 2"), 1), 1);
43 41
44 tree_view_ = new TreeView(); 42 tree_view_ = base::MakeUnique<TreeView>();
45 tree_view_->set_context_menu_controller(this); 43 tree_view_->set_context_menu_controller(this);
46 tree_view_->SetRootShown(false); 44 tree_view_->SetRootShown(false);
47 tree_view_->SetModel(&model_); 45 tree_view_->SetModel(&model_);
48 tree_view_->SetController(this); 46 tree_view_->SetController(this);
49 add_ = new LabelButton(this, ASCIIToUTF16("Add")); 47 add_ = new LabelButton(this, ASCIIToUTF16("Add"));
50 add_->SetFocusForPlatform(); 48 add_->SetFocusForPlatform();
51 add_->set_request_focus_on_press(true); 49 add_->set_request_focus_on_press(true);
52 remove_ = new LabelButton(this, ASCIIToUTF16("Remove")); 50 remove_ = new LabelButton(this, ASCIIToUTF16("Remove"));
53 remove_->SetFocusForPlatform(); 51 remove_->SetFocusForPlatform();
54 remove_->set_request_focus_on_press(true); 52 remove_->set_request_focus_on_press(true);
(...skipping 23 matching lines...) Expand all
78 layout->AddView(add_); 76 layout->AddView(add_);
79 layout->AddView(remove_); 77 layout->AddView(remove_);
80 layout->AddView(change_title_); 78 layout->AddView(change_title_);
81 } 79 }
82 80
83 void TreeViewExample::AddNewNode() { 81 void TreeViewExample::AddNewNode() {
84 NodeType* selected_node = 82 NodeType* selected_node =
85 static_cast<NodeType*>(tree_view_->GetSelectedNode()); 83 static_cast<NodeType*>(tree_view_->GetSelectedNode());
86 if (!selected_node) 84 if (!selected_node)
87 selected_node = model_.GetRoot(); 85 selected_node = model_.GetRoot();
88 NodeType* new_node = new NodeType(selected_node->GetTitle(), 1); 86 NodeType* new_node = model_.Add(
89 model_.Add(selected_node, new_node, selected_node->child_count()); 87 selected_node, base::MakeUnique<NodeType>(selected_node->GetTitle(), 1),
88 selected_node->child_count());
90 tree_view_->SetSelectedNode(new_node); 89 tree_view_->SetSelectedNode(new_node);
91 } 90 }
92 91
93 bool TreeViewExample::IsCommandIdEnabled(int command_id) { 92 bool TreeViewExample::IsCommandIdEnabled(int command_id) {
94 return command_id != ID_REMOVE || 93 return command_id != ID_REMOVE ||
95 tree_view_->GetSelectedNode() != model_.GetRoot(); 94 tree_view_->GetSelectedNode() != model_.GetRoot();
96 } 95 }
97 96
98 void TreeViewExample::ButtonPressed(Button* sender, const ui::Event& event) { 97 void TreeViewExample::ButtonPressed(Button* sender, const ui::Event& event) {
99 NodeType* selected_node = 98 NodeType* selected_node =
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 case ID_ADD: 161 case ID_ADD:
163 AddNewNode(); 162 AddNewNode();
164 break; 163 break;
165 default: 164 default:
166 NOTREACHED(); 165 NOTREACHED();
167 } 166 }
168 } 167 }
169 168
170 } // namespace examples 169 } // namespace examples
171 } // namespace views 170 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/examples/tree_view_example.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698