OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "app/menus/simple_menu_model.h" | 5 #include "app/menus/simple_menu_model.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 | 8 |
9 static const int kSeparatorId = -1; | 9 static const int kSeparatorId = -1; |
10 | 10 |
11 namespace menus { | 11 namespace menus { |
12 | 12 |
13 //////////////////////////////////////////////////////////////////////////////// | 13 //////////////////////////////////////////////////////////////////////////////// |
14 // SimpleMenuModel, public: | 14 // SimpleMenuModel, public: |
15 | 15 |
16 SimpleMenuModel::SimpleMenuModel(Delegate* delegate) : delegate_(delegate) { | 16 SimpleMenuModel::SimpleMenuModel(Delegate* delegate) : delegate_(delegate) { |
17 } | 17 } |
18 | 18 |
19 SimpleMenuModel::~SimpleMenuModel() { | 19 SimpleMenuModel::~SimpleMenuModel() { |
20 } | 20 } |
21 | 21 |
22 void SimpleMenuModel::AddItem(int command_id, const string16& label) { | 22 void SimpleMenuModel::AddItem(int command_id, const string16& label) { |
23 Item item = { command_id, label, SkBitmap(), TYPE_COMMAND, -1, NULL }; | 23 Item item = { command_id, label, SkBitmap(), TYPE_COMMAND, -1, NULL, NULL }; |
24 AppendItem(item); | 24 AppendItem(item); |
25 } | 25 } |
26 | 26 |
27 void SimpleMenuModel::AddItemWithStringId(int command_id, int string_id) { | 27 void SimpleMenuModel::AddItemWithStringId(int command_id, int string_id) { |
28 AddItem(command_id, l10n_util::GetStringUTF16(string_id)); | 28 AddItem(command_id, l10n_util::GetStringUTF16(string_id)); |
29 } | 29 } |
30 | 30 |
31 void SimpleMenuModel::AddSeparator() { | 31 void SimpleMenuModel::AddSeparator() { |
32 Item item = { kSeparatorId, string16(), SkBitmap(), TYPE_SEPARATOR, -1, | 32 Item item = { kSeparatorId, string16(), SkBitmap(), TYPE_SEPARATOR, -1, |
33 NULL }; | 33 NULL, NULL }; |
34 AppendItem(item); | 34 AppendItem(item); |
35 } | 35 } |
36 | 36 |
37 void SimpleMenuModel::AddCheckItem(int command_id, const string16& label) { | 37 void SimpleMenuModel::AddCheckItem(int command_id, const string16& label) { |
38 Item item = { command_id, label, SkBitmap(), TYPE_CHECK, -1, NULL }; | 38 Item item = { command_id, label, SkBitmap(), TYPE_CHECK, -1, NULL }; |
39 AppendItem(item); | 39 AppendItem(item); |
40 } | 40 } |
41 | 41 |
42 void SimpleMenuModel::AddCheckItemWithStringId(int command_id, int string_id) { | 42 void SimpleMenuModel::AddCheckItemWithStringId(int command_id, int string_id) { |
43 AddCheckItem(command_id, l10n_util::GetStringUTF16(string_id)); | 43 AddCheckItem(command_id, l10n_util::GetStringUTF16(string_id)); |
44 } | 44 } |
45 | 45 |
46 void SimpleMenuModel::AddRadioItem(int command_id, const string16& label, | 46 void SimpleMenuModel::AddRadioItem(int command_id, const string16& label, |
47 int group_id) { | 47 int group_id) { |
48 Item item = { command_id, label, SkBitmap(), TYPE_RADIO, group_id, NULL }; | 48 Item item = { command_id, label, SkBitmap(), TYPE_RADIO, group_id, NULL, |
| 49 NULL }; |
49 AppendItem(item); | 50 AppendItem(item); |
50 } | 51 } |
51 | 52 |
52 void SimpleMenuModel::AddRadioItemWithStringId(int command_id, int string_id, | 53 void SimpleMenuModel::AddRadioItemWithStringId(int command_id, int string_id, |
53 int group_id) { | 54 int group_id) { |
54 AddRadioItem(command_id, l10n_util::GetStringUTF16(string_id), group_id); | 55 AddRadioItem(command_id, l10n_util::GetStringUTF16(string_id), group_id); |
55 } | 56 } |
56 | 57 |
| 58 void SimpleMenuModel::AddButtonItem(int command_id, |
| 59 ButtonMenuItemModel* model) { |
| 60 Item item = { 0, string16(), SkBitmap(), TYPE_BUTTON_ITEM, -1, NULL, model }; |
| 61 AppendItem(item); |
| 62 } |
| 63 |
57 void SimpleMenuModel::AddSubMenu(int command_id, const string16& label, | 64 void SimpleMenuModel::AddSubMenu(int command_id, const string16& label, |
58 MenuModel* model) { | 65 MenuModel* model) { |
59 Item item = { command_id, label, SkBitmap(), TYPE_SUBMENU, -1, model }; | 66 Item item = { command_id, label, SkBitmap(), TYPE_SUBMENU, -1, model, NULL }; |
60 AppendItem(item); | 67 AppendItem(item); |
61 } | 68 } |
62 | 69 |
63 void SimpleMenuModel::AddSubMenuWithStringId(int command_id, | 70 void SimpleMenuModel::AddSubMenuWithStringId(int command_id, |
64 int string_id, MenuModel* model) { | 71 int string_id, MenuModel* model) { |
65 AddSubMenu(command_id, l10n_util::GetStringUTF16(string_id), model); | 72 AddSubMenu(command_id, l10n_util::GetStringUTF16(string_id), model); |
66 } | 73 } |
67 | 74 |
68 void SimpleMenuModel::InsertItemAt( | 75 void SimpleMenuModel::InsertItemAt( |
69 int index, int command_id, const string16& label) { | 76 int index, int command_id, const string16& label) { |
70 Item item = { command_id, label, SkBitmap(), TYPE_COMMAND, -1, NULL }; | 77 Item item = { command_id, label, SkBitmap(), TYPE_COMMAND, -1, NULL, NULL }; |
71 InsertItemAtIndex(item, index); | 78 InsertItemAtIndex(item, index); |
72 } | 79 } |
73 | 80 |
74 void SimpleMenuModel::InsertItemWithStringIdAt( | 81 void SimpleMenuModel::InsertItemWithStringIdAt( |
75 int index, int command_id, int string_id) { | 82 int index, int command_id, int string_id) { |
76 InsertItemAt(index, command_id, l10n_util::GetStringUTF16(string_id)); | 83 InsertItemAt(index, command_id, l10n_util::GetStringUTF16(string_id)); |
77 } | 84 } |
78 | 85 |
79 void SimpleMenuModel::InsertSeparatorAt(int index) { | 86 void SimpleMenuModel::InsertSeparatorAt(int index) { |
80 Item item = { kSeparatorId, string16(), SkBitmap(), TYPE_SEPARATOR, -1, | 87 Item item = { kSeparatorId, string16(), SkBitmap(), TYPE_SEPARATOR, -1, |
81 NULL }; | 88 NULL, NULL }; |
82 InsertItemAtIndex(item, index); | 89 InsertItemAtIndex(item, index); |
83 } | 90 } |
84 | 91 |
85 void SimpleMenuModel::InsertCheckItemAt( | 92 void SimpleMenuModel::InsertCheckItemAt( |
86 int index, int command_id, const string16& label) { | 93 int index, int command_id, const string16& label) { |
87 Item item = { command_id, label, SkBitmap(), TYPE_CHECK, -1, NULL }; | 94 Item item = { command_id, label, SkBitmap(), TYPE_CHECK, -1, NULL, NULL }; |
88 InsertItemAtIndex(item, index); | 95 InsertItemAtIndex(item, index); |
89 } | 96 } |
90 | 97 |
91 void SimpleMenuModel::InsertCheckItemWithStringIdAt( | 98 void SimpleMenuModel::InsertCheckItemWithStringIdAt( |
92 int index, int command_id, int string_id) { | 99 int index, int command_id, int string_id) { |
93 InsertCheckItemAt( | 100 InsertCheckItemAt( |
94 FlipIndex(index), command_id, l10n_util::GetStringUTF16(string_id)); | 101 FlipIndex(index), command_id, l10n_util::GetStringUTF16(string_id)); |
95 } | 102 } |
96 | 103 |
97 void SimpleMenuModel::InsertRadioItemAt( | 104 void SimpleMenuModel::InsertRadioItemAt( |
98 int index, int command_id, const string16& label, int group_id) { | 105 int index, int command_id, const string16& label, int group_id) { |
99 Item item = { command_id, label, SkBitmap(), TYPE_RADIO, group_id, NULL }; | 106 Item item = { command_id, label, SkBitmap(), TYPE_RADIO, group_id, NULL, |
| 107 NULL }; |
100 InsertItemAtIndex(item, index); | 108 InsertItemAtIndex(item, index); |
101 } | 109 } |
102 | 110 |
103 void SimpleMenuModel::InsertRadioItemWithStringIdAt( | 111 void SimpleMenuModel::InsertRadioItemWithStringIdAt( |
104 int index, int command_id, int string_id, int group_id) { | 112 int index, int command_id, int string_id, int group_id) { |
105 InsertRadioItemAt( | 113 InsertRadioItemAt( |
106 index, command_id, l10n_util::GetStringUTF16(string_id), group_id); | 114 index, command_id, l10n_util::GetStringUTF16(string_id), group_id); |
107 } | 115 } |
108 | 116 |
109 void SimpleMenuModel::InsertSubMenuAt( | 117 void SimpleMenuModel::InsertSubMenuAt( |
110 int index, int command_id, const string16& label, MenuModel* model) { | 118 int index, int command_id, const string16& label, MenuModel* model) { |
111 Item item = { command_id, label, SkBitmap(), TYPE_SUBMENU, -1, model }; | 119 Item item = { command_id, label, SkBitmap(), TYPE_SUBMENU, -1, model, NULL }; |
112 InsertItemAtIndex(item, index); | 120 InsertItemAtIndex(item, index); |
113 } | 121 } |
114 | 122 |
115 void SimpleMenuModel::InsertSubMenuWithStringIdAt( | 123 void SimpleMenuModel::InsertSubMenuWithStringIdAt( |
116 int index, int command_id, int string_id, MenuModel* model) { | 124 int index, int command_id, int string_id, MenuModel* model) { |
117 InsertSubMenuAt(index, command_id, l10n_util::GetStringUTF16(string_id), | 125 InsertSubMenuAt(index, command_id, l10n_util::GetStringUTF16(string_id), |
118 model); | 126 model); |
119 } | 127 } |
120 | 128 |
121 void SimpleMenuModel::SetIcon(int index, const SkBitmap& icon) { | 129 void SimpleMenuModel::SetIcon(int index, const SkBitmap& icon) { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 } | 200 } |
193 | 201 |
194 bool SimpleMenuModel::GetIconAt(int index, SkBitmap* icon) const { | 202 bool SimpleMenuModel::GetIconAt(int index, SkBitmap* icon) const { |
195 if (items_[index].icon.isNull()) | 203 if (items_[index].icon.isNull()) |
196 return false; | 204 return false; |
197 | 205 |
198 *icon = items_[index].icon; | 206 *icon = items_[index].icon; |
199 return true; | 207 return true; |
200 } | 208 } |
201 | 209 |
| 210 ButtonMenuItemModel* SimpleMenuModel::GetButtonMenuItemAt(int index) const { |
| 211 return items_.at(FlipIndex(index)).button_model; |
| 212 } |
| 213 |
202 bool SimpleMenuModel::IsEnabledAt(int index) const { | 214 bool SimpleMenuModel::IsEnabledAt(int index) const { |
203 int command_id = GetCommandIdAt(index); | 215 int command_id = GetCommandIdAt(index); |
204 if (!delegate_ || command_id == kSeparatorId) | 216 if (!delegate_ || command_id == kSeparatorId || |
| 217 items_.at(FlipIndex(index)).button_model) |
205 return true; | 218 return true; |
206 return delegate_->IsCommandIdEnabled(command_id); | 219 return delegate_->IsCommandIdEnabled(command_id); |
207 } | 220 } |
208 | 221 |
209 void SimpleMenuModel::HighlightChangedTo(int index) { | 222 void SimpleMenuModel::HighlightChangedTo(int index) { |
210 if (delegate_) | 223 if (delegate_) |
211 delegate_->CommandIdHighlighted(GetCommandIdAt(index)); | 224 delegate_->CommandIdHighlighted(GetCommandIdAt(index)); |
212 } | 225 } |
213 | 226 |
214 void SimpleMenuModel::ActivatedAt(int index) { | 227 void SimpleMenuModel::ActivatedAt(int index) { |
(...skipping 22 matching lines...) Expand all Loading... |
237 #ifndef NDEBUG | 250 #ifndef NDEBUG |
238 if (item.type == TYPE_SEPARATOR) { | 251 if (item.type == TYPE_SEPARATOR) { |
239 DCHECK_EQ(item.command_id, kSeparatorId); | 252 DCHECK_EQ(item.command_id, kSeparatorId); |
240 } else { | 253 } else { |
241 DCHECK_GE(item.command_id, 0); | 254 DCHECK_GE(item.command_id, 0); |
242 } | 255 } |
243 #endif // NDEBUG | 256 #endif // NDEBUG |
244 } | 257 } |
245 | 258 |
246 } // namespace menus | 259 } // namespace menus |
OLD | NEW |