| Index: views/controls/menu/simple_menu_model.cc
|
| ===================================================================
|
| --- views/controls/menu/simple_menu_model.cc (revision 0)
|
| +++ views/controls/menu/simple_menu_model.cc (revision 0)
|
| @@ -0,0 +1,129 @@
|
| +// Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this
|
| +// source code is governed by a BSD-style license that can be found in the
|
| +// LICENSE file.
|
| +
|
| +#include "views/controls/menu/simple_menu_model.h"
|
| +
|
| +#include "app/l10n_util.h"
|
| +
|
| +namespace views {
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// SimpleMenuModel, public:
|
| +
|
| +SimpleMenuModel::SimpleMenuModel(Delegate* delegate) : delegate_(delegate) {
|
| +}
|
| +
|
| +SimpleMenuModel::~SimpleMenuModel() {
|
| +}
|
| +
|
| +void SimpleMenuModel::AddItem(int command_id, const std::wstring& label) {
|
| + Item item = { command_id, label, TYPE_COMMAND, -1, NULL };
|
| + items_.push_back(item);
|
| +}
|
| +
|
| +void SimpleMenuModel::AddItemWithStringId(int command_id, int string_id) {
|
| + AddItem(command_id, l10n_util::GetString(string_id));
|
| +}
|
| +
|
| +void SimpleMenuModel::AddSeparator() {
|
| + Item item = { -1, std::wstring(), TYPE_SEPARATOR, -1, NULL };
|
| + items_.push_back(item);
|
| +}
|
| +
|
| +void SimpleMenuModel::AddCheckItem(int command_id, const std::wstring& label) {
|
| + Item item = { command_id, label, TYPE_CHECK, -1, NULL };
|
| + items_.push_back(item);
|
| +}
|
| +
|
| +void SimpleMenuModel::AddCheckItemWithStringId(int command_id, int string_id) {
|
| + AddCheckItem(command_id, l10n_util::GetString(string_id));
|
| +}
|
| +
|
| +void SimpleMenuModel::AddRadioItem(int command_id, const std::wstring& label,
|
| + int group_id) {
|
| + Item item = { command_id, label, TYPE_RADIO, group_id, NULL };
|
| + items_.push_back(item);
|
| +}
|
| +
|
| +void SimpleMenuModel::AddRadioItemWithStringId(int command_id, int string_id,
|
| + int group_id) {
|
| + AddRadioItem(command_id, l10n_util::GetString(string_id), group_id);
|
| +}
|
| +
|
| +void SimpleMenuModel::AddSubMenu(const std::wstring& label, Menu2Model* model) {
|
| + Item item = { -1, label, TYPE_SUBMENU, -1, model };
|
| + items_.push_back(item);
|
| +}
|
| +
|
| +void SimpleMenuModel::AddSubMenuWithStringId(int string_id, Menu2Model* model) {
|
| + AddSubMenu(l10n_util::GetString(string_id), model);
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// SimpleMenuModel, Menu2Model implementation:
|
| +
|
| +bool SimpleMenuModel::HasIcons() const {
|
| + return false;
|
| +}
|
| +
|
| +int SimpleMenuModel::GetItemCount() const {
|
| + return static_cast<int>(items_.size());
|
| +}
|
| +
|
| +Menu2Model::ItemType SimpleMenuModel::GetTypeAt(int index) const {
|
| + return items_.at(FlipIndex(index)).type;
|
| +}
|
| +
|
| +int SimpleMenuModel::GetCommandIdAt(int index) const {
|
| + return items_.at(FlipIndex(index)).command_id;
|
| +}
|
| +
|
| +std::wstring SimpleMenuModel::GetLabelAt(int index) const {
|
| + if (IsLabelDynamicAt(index))
|
| + return delegate_->GetLabelForCommandId(GetCommandIdAt(index));
|
| + return items_.at(FlipIndex(index)).label;
|
| +}
|
| +
|
| +bool SimpleMenuModel::IsLabelDynamicAt(int index) const {
|
| + if (delegate_)
|
| + return delegate_->IsLabelForCommandIdDynamic(GetCommandIdAt(index));
|
| + return false;
|
| +}
|
| +
|
| +bool SimpleMenuModel::GetAcceleratorAt(int index,
|
| + views::Accelerator* accelerator) const {
|
| + if (delegate_) {
|
| + return delegate_->GetAcceleratorForCommandId(GetCommandIdAt(index),
|
| + accelerator);
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +bool SimpleMenuModel::IsItemCheckedAt(int index) const {
|
| + if (!delegate_)
|
| + return false;
|
| + return delegate_->IsCommandIdChecked(GetCommandIdAt(index));
|
| +}
|
| +
|
| +int SimpleMenuModel::GetGroupIdAt(int index) const {
|
| + return items_.at(FlipIndex(index)).group_id;
|
| +}
|
| +
|
| +bool SimpleMenuModel::GetIconAt(int index, SkBitmap* icon) const {
|
| + return false;
|
| +}
|
| +
|
| +bool SimpleMenuModel::IsEnabledAt(int index) const {
|
| + int command_id = GetCommandIdAt(index);
|
| + // Submenus have a command id of -1, they should always be enabled.
|
| + if (!delegate_ || command_id == -1)
|
| + return true;
|
| + return delegate_->IsCommandIdEnabled(command_id);
|
| +}
|
| +
|
| +Menu2Model* SimpleMenuModel::GetSubmenuModelAt(int index) const {
|
| + return items_.at(FlipIndex(index)).submenu;
|
| +}
|
| +
|
| +} // namespace views
|
|
|