menu_model.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org// Use of this source code is governed by a BSD-style license that can be
3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org// found in the LICENSE file.
4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "ui/base/models/menu_model.h"
6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgnamespace ui {
8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgbool MenuModel::IsVisibleAt(int index) const {
10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  return true;
11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
12474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org// static
146fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgbool MenuModel::GetModelAndIndexForCommandId(int command_id,
15474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                                             MenuModel** model,
16474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                                             int* index) {
17474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  const int item_count = (*model)->GetItemCount();
18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  for (int i = 0; i < item_count; ++i) {
19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    const int candidate_index = i;
20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if ((*model)->GetTypeAt(candidate_index) == TYPE_SUBMENU) {
21ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org      MenuModel* submenu_model = (*model)->GetSubmenuModelAt(candidate_index);
22ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org      if (GetModelAndIndexForCommandId(command_id, &submenu_model, index)) {
23ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        *model = submenu_model;
24ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        return true;
25ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org      }
26ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    }
27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if ((*model)->GetCommandIdAt(candidate_index) == command_id) {
28474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org      *index = candidate_index;
29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org      return true;
30474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  }
32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  return false;
33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
34474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgbase::string16 MenuModel::GetSublabelAt(int index) const {
36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  return base::string16();
37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgconst gfx::Font* MenuModel::GetLabelFontAt(int index) const {
40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  return NULL;
41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgconst gfx::Font* MenuModel::GetSublabelFontAt(int index) const {
44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  return NULL;
45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org// Default implementation ignores the event flags.
48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid MenuModel::ActivatedAt(int index, int event_flags) {
49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ActivatedAt(index);
50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}  // namespace ui
53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org