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

Side by Side Diff: ui/app_list/views/app_list_menu_views.cc

Issue 12789010: [win] Change app launcher profile indicator to be a menu. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup Created 7 years, 9 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 | Annotate | Revision Log
OLDNEW
(Empty)
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 "grit/ui_resources.h"
6 #include "ui/app_list/app_list_view_delegate.h"
7 #include "ui/app_list/views/app_list_menu_views.h"
tapted 2013/03/20 07:44:20 should be first include, for own header.
benwells 2013/03/20 08:43:34 Done.
8 #include "ui/base/resource/resource_bundle.h"
9 #include "ui/views/controls/button/menu_button.h"
10 #include "ui/views/controls/image_view.h"
11 #include "ui/views/controls/label.h"
12 #include "ui/views/controls/menu/menu_config.h"
13 #include "ui/views/controls/menu/menu_item_view.h"
14 #include "ui/views/layout/grid_layout.h"
15
16 using views::MenuItemView;
17
18 namespace app_list {
19
20 namespace {
21
22 class CurrentUserView : public views::View {
23 public:
24 explicit CurrentUserView(const string16& user_name,
tapted 2013/03/20 07:44:20 I think it's uncommon to use explicit when there a
benwells 2013/03/20 08:43:34 Yeap was a relic from an earlier time.
25 const string16& user_email,
26 const gfx::ImageSkia& icon) {
27 const views::MenuConfig& menu_config = views::MenuConfig::instance(NULL);
28 views::GridLayout* layout = new views::GridLayout(this);
29 int item_right_padding = menu_config.label_to_arrow_padding +
30 menu_config.arrow_width +
31 menu_config.arrow_to_edge_padding;
32
33 layout->SetInsets(0, 0, 0, item_right_padding);
34 SetLayoutManager(layout);
35
36 views::ColumnSet* columns = layout->AddColumnSet(0);
37 columns->AddColumn(views::GridLayout::FILL,
38 views::GridLayout::FILL,
39 0,
40 views::GridLayout::USE_PREF,
41 0,
42 menu_config.check_width + menu_config.item_left_margin);
43 columns->AddColumn(views::GridLayout::FILL,
44 views::GridLayout::FILL,
45 1,
46 views::GridLayout::USE_PREF,
47 0,
48 0);
49
50 layout->StartRow(0, 0);
51 views::ImageView* image_view = new views::ImageView();
52 image_view->SetImage(icon);
53 layout->AddView(image_view);
54
55 views::Label* user_name_view = new views::Label(user_name);
56 user_name_view->SetHorizontalAlignment(gfx::ALIGN_LEFT);
57 layout->AddView(user_name_view);
58
59 layout->StartRow(0, 0);
60 views::Label* user_email_view = new views::Label(user_email);
61 user_email_view->SetHorizontalAlignment(gfx::ALIGN_LEFT);
62 user_email_view->SetEnabled(false);
63 layout->SkipColumns(1);
64 layout->AddView(user_email_view);
65 }
66
67 private:
68 DISALLOW_COPY_AND_ASSIGN(CurrentUserView);
69 };
70
71 class CurrentUserMenuItem : public MenuItemView {
72 public:
73 explicit CurrentUserMenuItem(MenuItemView* parent,
74 int id,
75 const string16& user_name,
76 const string16& user_email,
77 const gfx::ImageSkia& icon)
78 : MenuItemView(parent, id, MenuItemView::NORMAL) {
79 AddChildView(new CurrentUserView(user_name, user_email, icon));
80 }
81
82 private:
83 DISALLOW_COPY_AND_ASSIGN(CurrentUserMenuItem);
84 };
85
86 class AppListMenuModelAdapter : public views::MenuModelAdapter {
87 public:
88 AppListMenuModelAdapter(ui::MenuModel* menu_model,
89 AppListViewDelegate* delegate)
90 : views::MenuModelAdapter(menu_model),
91 delegate_(delegate) {};
tapted 2013/03/20 08:24:34 stray semicolon
benwells 2013/03/20 08:43:34 Done.
92 virtual ~AppListMenuModelAdapter() {};
tapted 2013/03/20 08:24:34 stray semicolon
benwells 2013/03/20 08:43:34 Done.
93
94 // Overridden from views::MenuModelAdapter.
tapted 2013/03/20 08:24:34 nit: I think these comments usually end in a colon
benwells 2013/03/20 08:43:34 Done.
95 MenuItemView* CreateCustomItem(MenuItemView* parent, int id) OVERRIDE {
96 if (id == AppListMenu::CURRENT_USER) {
tapted 2013/03/20 08:24:34 maybe early return if id != CURRENT_USER ?
benwells 2013/03/20 08:43:34 Done.
97 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
98 return new CurrentUserMenuItem(
99 parent,
100 id,
101 delegate_->GetCurrentUserName(),
102 delegate_->GetCurrentUserEmail(),
103 *rb.GetImageSkiaNamed(IDR_APP_LIST_USER_INDICATOR));
104 }
105
106 return NULL;
107 }
108
109 private:
110 AppListViewDelegate* delegate_;
111
112 DISALLOW_COPY_AND_ASSIGN(AppListMenuModelAdapter);
113 };
114
115 }
tapted 2013/03/20 07:44:20 nit: // namespace
benwells 2013/03/20 08:43:34 Done.
116
117 AppListMenuViews::AppListMenuViews(AppListViewDelegate* delegate)
118 : AppListMenu(delegate) {
119 menu_delegate_.reset(new AppListMenuModelAdapter(&menu_model_, delegate));
120 menu_ = new MenuItemView(menu_delegate_.get());
121 menu_runner_.reset(new views::MenuRunner(menu_));
122 menu_delegate_->BuildMenu(menu_);
123 }
124
125 void AppListMenuViews::RunMenuAt(views::MenuButton* button,
126 const gfx::Point& point) {
127 menu_runner_->RunMenuAt(button->GetWidget(), button,
128 gfx::Rect(point, gfx::Size()),
129 MenuItemView::TOPRIGHT, 0);
130 }
131
132 void AppListMenuViews::Cancel() {
133 menu_runner_->Cancel();
134 }
135
136 } // namespace app_list
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698