15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/models/menu_model.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui {
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool MenuModel::IsVisibleAt(int index) const {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool MenuModel::GetModelAndIndexForCommandId(int command_id,
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             MenuModel** model,
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             int* index) {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const int item_count = (*model)->GetItemCount();
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (int i = 0; i < item_count; ++i) {
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int candidate_index = i;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if ((*model)->GetTypeAt(candidate_index) == TYPE_SUBMENU) {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      MenuModel* submenu_model = (*model)->GetSubmenuModelAt(candidate_index);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (GetModelAndIndexForCommandId(command_id, &submenu_model, index)) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        *model = submenu_model;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return true;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if ((*model)->GetCommandIdAt(candidate_index) == command_id) {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *index = candidate_index;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return true;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 MenuModel::GetSublabelAt(int index) const {
36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return base::string16();
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const gfx::Font* MenuModel::GetLabelFontAt(int index) const {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const gfx::Font* MenuModel::GetSublabelFontAt(int index) const {
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return NULL;
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Default implementation ignores the event flags.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MenuModel::ActivatedAt(int index, int event_flags) {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ActivatedAt(index);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ui
53