1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef UI_APP_LIST_APP_LIST_MENU_H_
6#define UI_APP_LIST_APP_LIST_MENU_H_
7
8#include "ui/base/models/simple_menu_model.h"
9
10namespace app_list {
11
12class AppListViewDelegate;
13
14// Menu for the app list. This is shown in the top right hand corner of the
15// app list.
16// TODO(benwells): We should consider moving this into Chrome.
17class AppListMenu : public ui::SimpleMenuModel::Delegate {
18 public:
19  enum AppListMenuCommands {
20    CURRENT_USER,
21    SHOW_SETTINGS,
22    SHOW_HELP,
23    SHOW_FEEDBACK,
24  };
25
26  explicit AppListMenu(AppListViewDelegate* delegate);
27  virtual ~AppListMenu();
28
29  ui::SimpleMenuModel* menu_model() { return &menu_model_; }
30
31 private:
32  void InitMenu();
33
34  virtual bool IsCommandIdChecked(int command_id) const OVERRIDE;
35  virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE;
36  virtual bool GetAcceleratorForCommandId(
37      int command_id,
38      ui::Accelerator* accelerator) OVERRIDE;
39  virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE;
40
41  ui::SimpleMenuModel menu_model_;
42  AppListViewDelegate* delegate_;
43
44  DISALLOW_COPY_AND_ASSIGN(AppListMenu);
45};
46
47}  // namespace app_list
48
49#endif  // UI_APP_LIST_APP_LIST_MENU_H_
50