Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: ui/app_list/app_list_menu.cc

Issue 20656002: Add profile selector menu to app list. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: compress pngs Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/app_list/app_list_menu.h" 5 #include "ui/app_list/app_list_menu.h"
6 6
7 #include "grit/ui_resources.h"
7 #include "grit/ui_strings.h" 8 #include "grit/ui_strings.h"
8 #include "ui/app_list/app_list_view_delegate.h" 9 #include "ui/app_list/app_list_view_delegate.h"
9 #include "ui/base/l10n/l10n_util.h" 10 #include "ui/base/l10n/l10n_util.h"
10 #include "ui/base/models/menu_separator_types.h" 11 #include "ui/base/models/menu_separator_types.h"
11 #include "ui/base/resource/resource_bundle.h" 12 #include "ui/base/resource/resource_bundle.h"
12 13
13 namespace app_list { 14 namespace app_list {
14 15
15 AppListMenu::AppListMenu(AppListViewDelegate* delegate) 16 AppListMenu::AppListMenu(AppListViewDelegate* delegate,
17 const AppListModel::Users& users)
16 : menu_model_(this), 18 : menu_model_(this),
17 delegate_(delegate) { 19 delegate_(delegate),
20 users_(users) {
18 InitMenu(); 21 InitMenu();
19 } 22 }
20 23
21 AppListMenu::~AppListMenu() {} 24 AppListMenu::~AppListMenu() {}
22 25
23 void AppListMenu::InitMenu() { 26 void AppListMenu::InitMenu() {
24 menu_model_.AddItem(CURRENT_USER, base::string16()); 27 // User selector menu section. We don't show the user selector if there is
25 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); 28 // only 1 user.
29 if (users_.size() > 1) {
30 for (size_t i = 0; i < users_.size(); ++i) {
31 #if defined(OS_MACOSX)
32 menu_model_.AddRadioItem(SELECT_PROFILE + i,
33 users_[i].email.empty() ? users_[i].name
34 : users_[i].email,
35 0);
tapted 2013/09/16 20:46:44 nit: 0 /* group_id */);
calamity 2013/09/17 00:09:26 Done.
36 #else
37 menu_model_.AddItem(SELECT_PROFILE + i, users_[i].name);
38 int menu_index = menu_model_.GetIndexOfCommandId(SELECT_PROFILE + i);
39 menu_model_.SetSublabel(menu_index, users_[i].email);
40 // Use custom check mark.
41 if (users_[i].active) {
42 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
43 menu_model_.SetIcon(menu_index, gfx::Image(*rb.GetImageSkiaNamed(
44 IDR_APP_LIST_CURRENT_USER_INDICATOR)));
45 }
46 #endif
47 }
48 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
49 }
26 50
27 menu_model_.AddItem(SHOW_SETTINGS, l10n_util::GetStringUTF16( 51 menu_model_.AddItem(SHOW_SETTINGS, l10n_util::GetStringUTF16(
28 IDS_APP_LIST_OPEN_SETTINGS)); 52 IDS_APP_LIST_OPEN_SETTINGS));
29 53
30 menu_model_.AddItem(SHOW_HELP, l10n_util::GetStringUTF16( 54 menu_model_.AddItem(SHOW_HELP, l10n_util::GetStringUTF16(
31 IDS_APP_LIST_HELP)); 55 IDS_APP_LIST_HELP));
32 56
33 menu_model_.AddItem(SHOW_FEEDBACK, l10n_util::GetStringUTF16( 57 menu_model_.AddItem(SHOW_FEEDBACK, l10n_util::GetStringUTF16(
34 IDS_APP_LIST_OPEN_FEEDBACK)); 58 IDS_APP_LIST_OPEN_FEEDBACK));
35 } 59 }
36 60
37 bool AppListMenu::IsCommandIdChecked(int command_id) const { 61 bool AppListMenu::IsCommandIdChecked(int command_id) const {
62 #if defined(OS_MACOSX)
63 DCHECK_LT(static_cast<unsigned>(command_id) - SELECT_PROFILE, users_.size());
64 return users_[command_id - SELECT_PROFILE].active;
65 #else
38 return false; 66 return false;
67 #endif
39 } 68 }
40 69
41 bool AppListMenu::IsCommandIdEnabled(int command_id) const { 70 bool AppListMenu::IsCommandIdEnabled(int command_id) const {
42 return true; 71 return true;
43 } 72 }
44 73
45 bool AppListMenu::GetAcceleratorForCommandId(int command_id, 74 bool AppListMenu::GetAcceleratorForCommandId(int command_id,
46 ui::Accelerator* accelerator) { 75 ui::Accelerator* accelerator) {
47 return false; 76 return false;
48 } 77 }
49 78
50 void AppListMenu::ExecuteCommand(int command_id, int event_flags) { 79 void AppListMenu::ExecuteCommand(int command_id, int event_flags) {
80 if (command_id >= SELECT_PROFILE) {
81 delegate_->ShowForProfileByPath(
82 users_[command_id - SELECT_PROFILE].profile_path);
83 return;
84 }
51 switch (command_id) { 85 switch (command_id) {
52 case CURRENT_USER: 86 case CURRENT_USER:
53 break; // Do nothing. 87 break; // Do nothing.
54 case SHOW_SETTINGS: 88 case SHOW_SETTINGS:
55 delegate_->OpenSettings(); 89 delegate_->OpenSettings();
56 break; 90 break;
57 case SHOW_HELP: 91 case SHOW_HELP:
58 delegate_->OpenHelp(); 92 delegate_->OpenHelp();
59 break; 93 break;
60 case SHOW_FEEDBACK: 94 case SHOW_FEEDBACK:
61 delegate_->OpenFeedback(); 95 delegate_->OpenFeedback();
62 break; 96 break;
63 default: 97 default:
64 NOTREACHED(); 98 NOTREACHED();
65 } 99 }
66 } 100 }
67 101
68 } // namespace app_list 102 } // namespace app_list
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698