• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "ash/shelf/shelf_alignment_menu.h"
6 
7 #include "ash/metrics/user_metrics_recorder.h"
8 #include "ash/shelf/shelf_layout_manager.h"
9 #include "ash/shelf/shelf_types.h"
10 #include "ash/shell.h"
11 #include "grit/ash_strings.h"
12 #include "ui/aura/window.h"
13 #include "ui/base/l10n/l10n_util.h"
14 
15 namespace ash {
16 
ShelfAlignmentMenu(aura::Window * root)17 ShelfAlignmentMenu::ShelfAlignmentMenu(aura::Window* root)
18     : ui::SimpleMenuModel(NULL),
19       root_window_(root) {
20   DCHECK(root_window_);
21   int align_group_id = 1;
22   set_delegate(this);
23   AddRadioItemWithStringId(MENU_ALIGN_LEFT,
24                            IDS_ASH_SHELF_CONTEXT_MENU_ALIGN_LEFT,
25                            align_group_id);
26   AddRadioItemWithStringId(MENU_ALIGN_BOTTOM,
27                            IDS_ASH_SHELF_CONTEXT_MENU_ALIGN_BOTTOM,
28                            align_group_id);
29   AddRadioItemWithStringId(MENU_ALIGN_RIGHT,
30                            IDS_ASH_SHELF_CONTEXT_MENU_ALIGN_RIGHT,
31                            align_group_id);
32 }
33 
~ShelfAlignmentMenu()34 ShelfAlignmentMenu::~ShelfAlignmentMenu() {}
35 
IsCommandIdChecked(int command_id) const36 bool ShelfAlignmentMenu::IsCommandIdChecked(int command_id) const {
37   return ShelfLayoutManager::ForShelf(root_window_)
38       ->SelectValueForShelfAlignment(MENU_ALIGN_BOTTOM == command_id,
39                                      MENU_ALIGN_LEFT == command_id,
40                                      MENU_ALIGN_RIGHT == command_id,
41                                      false);
42 }
43 
IsCommandIdEnabled(int command_id) const44 bool ShelfAlignmentMenu::IsCommandIdEnabled(int command_id) const {
45   return true;
46 }
47 
GetAcceleratorForCommandId(int command_id,ui::Accelerator * accelerator)48 bool ShelfAlignmentMenu::GetAcceleratorForCommandId(
49     int command_id,
50     ui::Accelerator* accelerator) {
51   return false;
52 }
53 
ExecuteCommand(int command_id,int event_flags)54 void ShelfAlignmentMenu::ExecuteCommand(int command_id, int event_flags) {
55   switch (static_cast<MenuItem>(command_id)) {
56     case MENU_ALIGN_LEFT:
57       Shell::GetInstance()->metrics()->
58           RecordUserMetricsAction(UMA_SHELF_ALIGNMENT_SET_LEFT);
59       Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_LEFT,
60                                               root_window_);
61       break;
62     case MENU_ALIGN_BOTTOM:
63       Shell::GetInstance()->metrics()->
64           RecordUserMetricsAction(UMA_SHELF_ALIGNMENT_SET_BOTTOM);
65       Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_BOTTOM,
66                                               root_window_);
67       break;
68     case MENU_ALIGN_RIGHT:
69       Shell::GetInstance()->metrics()->
70           RecordUserMetricsAction(UMA_SHELF_ALIGNMENT_SET_RIGHT);
71       Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_RIGHT,
72                                               root_window_);
73       break;
74   }
75 }
76 
77 }  // namespace ash
78