Chromium Code Reviews| Index: views/controls/menu/menu_item_view.cc |
| diff --git a/views/controls/menu/menu_item_view.cc b/views/controls/menu/menu_item_view.cc |
| index cdc0421131c5406fa3e120829bc7719f2ffc2ff3..5c4ec04056576837305a209cf17b164774079b85 100644 |
| --- a/views/controls/menu/menu_item_view.cc |
| +++ b/views/controls/menu/menu_item_view.cc |
| @@ -5,6 +5,7 @@ |
| #include "views/controls/menu/menu_item_view.h" |
| #include "app/l10n_util.h" |
| +#include "app/menus/menu_model.h" |
| #include "base/utf_string_conversions.h" |
| #include "gfx/canvas.h" |
| #include "grit/app_strings.h" |
| @@ -237,6 +238,42 @@ void MenuItemView::Cancel() { |
| } |
| } |
| +MenuItemView* MenuItemView::AppendMenuItemFromModel(menus::MenuModel* model, |
| + int index, int id) { |
|
sky
2010/11/22 19:23:01
id should be on its own line.
sadrul
2010/11/22 19:42:38
Done.
|
| + SkBitmap icon; |
| + std::wstring label; |
| + MenuItemView::Type type; |
| + menus::MenuModel::ItemType menu_type = model->GetTypeAt(index); |
| + switch (menu_type) { |
| + case menus::MenuModel::TYPE_COMMAND: |
| + model->GetIconAt(index, &icon); |
| + type = MenuItemView::NORMAL; |
| + label = UTF16ToWide(model->GetLabelAt(index)); |
| + break; |
| + case menus::MenuModel::TYPE_CHECK: |
| + type = MenuItemView::CHECKBOX; |
| + label = UTF16ToWide(model->GetLabelAt(index)); |
| + break; |
| + case menus::MenuModel::TYPE_RADIO: |
| + type = MenuItemView::RADIO; |
| + label = UTF16ToWide(model->GetLabelAt(index)); |
| + break; |
| + case menus::MenuModel::TYPE_SEPARATOR: |
| + type = MenuItemView::SEPARATOR; |
| + break; |
| + case menus::MenuModel::TYPE_SUBMENU: |
| + type = MenuItemView::SUBMENU; |
| + label = UTF16ToWide(model->GetLabelAt(index)); |
| + break; |
| + default: |
| + NOTREACHED(); |
| + type = MenuItemView::NORMAL; |
| + break; |
| + } |
| + |
| + return AppendMenuItemImpl(id, label, icon, type); |
| +} |
| + |
| MenuItemView* MenuItemView::AppendMenuItemImpl(int item_id, |
| const std::wstring& label, |
| const SkBitmap& icon, |