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/app_list/app_list_view_delegate.h"
9#include "ui/base/models/simple_menu_model.h"
10
11namespace app_list {
12
13// Menu for the app list. This is shown in the top right hand corner of the
14// app list.
15// TODO(benwells): We should consider moving this into Chrome.
16class AppListMenu : public ui::SimpleMenuModel::Delegate {
17 public:
18  enum AppListMenuCommands {
19    SHOW_SETTINGS,
20    SHOW_HELP,
21    SHOW_FEEDBACK,
22    // |SELECT_PROFILE| must remain the last enum because values greater than
23    // |SELECT_PROFILE| are used to indicate a profile index.
24    SELECT_PROFILE,
25  };
26
27  explicit AppListMenu(AppListViewDelegate* delegate);
28  virtual ~AppListMenu();
29
30  ui::SimpleMenuModel* menu_model() { return &menu_model_; }
31
32 private:
33  void InitMenu();
34
35  virtual bool IsCommandIdChecked(int command_id) const OVERRIDE;
36  virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE;
37  virtual bool GetAcceleratorForCommandId(
38      int command_id,
39      ui::Accelerator* accelerator) OVERRIDE;
40  virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE;
41
42  ui::SimpleMenuModel menu_model_;
43  AppListViewDelegate* delegate_;
44  AppListViewDelegate::Users users_;
45
46  DISALLOW_COPY_AND_ASSIGN(AppListMenu);
47};
48
49}  // namespace app_list
50
51#endif  // UI_APP_LIST_APP_LIST_MENU_H_
52