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

Side by Side Diff: chrome/browser/ui/views/profile_menu_button.cc

Issue 7045023: Simplify ProfileMenuButton. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 7 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
« no previous file with comments | « chrome/browser/ui/views/profile_menu_button.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/ui/views/profile_menu_button.h" 5 #include "chrome/browser/ui/views/profile_menu_button.h"
6 6
7 #include "chrome/browser/profiles/profile_manager.h" 7 #include "chrome/browser/profiles/profile_manager.h"
8 #include "chrome/browser/ui/profile_menu_model.h" 8 #include "chrome/browser/ui/profile_menu_model.h"
9 #include "ui/base/text/text_elider.h" 9 #include "ui/base/text/text_elider.h"
10 #include "ui/gfx/color_utils.h" 10 #include "ui/gfx/color_utils.h"
11 #include "views/controls/button/button.h" 11 #include "views/controls/button/button.h"
12 #include "views/controls/menu/menu_2.h" 12 #include "views/controls/menu/menu_2.h"
13 #include "views/controls/menu/view_menu_delegate.h"
14 13
15 // Menu should display below the profile button tag image on the frame. This 14 // Menu should display below the profile button tag image on the frame. This
16 // offset size depends on whether the frame is in glass or opaque mode. 15 // offset size depends on whether the frame is in glass or opaque mode.
17 const int kMenuDisplayOffset = 7; 16 const int kMenuDisplayOffset = 7;
18 17
19 // TextHover is slightly darker than enabled color, for a subtle hover shift. 18 // TextHover is slightly darker than enabled color, for a subtle hover shift.
20 const SkColor kTextHover = 0xFFDDDDDD; 19 const SkColor kTextHover = 0xFFDDDDDD;
21 const SkColor kTextEnabled = SK_ColorWHITE; 20 const SkColor kTextEnabled = SK_ColorWHITE;
22 const SkColor kTextHighlighted = SK_ColorWHITE; 21 const SkColor kTextHighlighted = SK_ColorWHITE;
23 22
24 // Horizontal padding beside profile menu button, to center it in the 23 // Horizontal padding beside profile menu button, to center it in the
25 // underlying tag image. 24 // underlying tag image.
26 const int kProfileButtonBorderSpacing = 10; 25 const int kProfileButtonBorderSpacing = 10;
27 26
28 // Maximum width for name string in pixels. 27 // Maximum width for name string in pixels.
29 const int kMaxTextWidth = 200; 28 const int kMaxTextWidth = 200;
30 29
31 ProfileMenuButton::ProfileMenuButton(views::ButtonListener* listener, 30 ProfileMenuButton::ProfileMenuButton(const std::wstring& text, Profile* profile)
32 const std::wstring& text, 31 : MenuButton(NULL, text, this, true) {
33 views::ViewMenuDelegate* menu_delegate,
34 Profile* profile)
35 : MenuButton(listener, text, menu_delegate, true) {
36 // Turn off hover highlighting and position button in the center of the 32 // Turn off hover highlighting and position button in the center of the
37 // underlying profile tag image. 33 // underlying profile tag image.
38 set_border(views::Border::CreateEmptyBorder( 34 set_border(views::Border::CreateEmptyBorder(
39 0, kProfileButtonBorderSpacing, 0, kProfileButtonBorderSpacing)); 35 0, kProfileButtonBorderSpacing, 0, kProfileButtonBorderSpacing));
40 SetHoverColor(kTextHover); 36 SetHoverColor(kTextHover);
41 SetEnabledColor(kTextEnabled); 37 SetEnabledColor(kTextEnabled);
42 SetHighlightColor(kTextHighlighted); 38 SetHighlightColor(kTextHighlighted);
43 39
44 profile_menu_model_.reset(new ProfileMenuModel(this)); 40 profile_menu_model_.reset(new ProfileMenuModel(this));
45 menu_.reset(new views::Menu2(profile_menu_model_.get())); 41 menu_.reset(new views::Menu2(profile_menu_model_.get()));
46 } 42 }
47 43
48 ProfileMenuButton::~ProfileMenuButton() {} 44 ProfileMenuButton::~ProfileMenuButton() {}
49 45
50 void ProfileMenuButton::SetText(const std::wstring& text) { 46 void ProfileMenuButton::SetText(const std::wstring& text) {
51 MenuButton::SetText(UTF16ToWideHack(ui::ElideText(WideToUTF16Hack(text), 47 MenuButton::SetText(UTF16ToWideHack(ui::ElideText(WideToUTF16Hack(text),
52 font(), kMaxTextWidth, false))); 48 font(), kMaxTextWidth, false)));
53 } 49 }
54 50
55 void ProfileMenuButton::RunMenuAt(const gfx::Point& pt) {
56 gfx::Point menu_point(pt.x(),
57 pt.y() + kMenuDisplayOffset);
58 menu_->RunMenuAt(menu_point, views::Menu2::ALIGN_TOPRIGHT);
59 }
60
61 // ui::SimpleMenuModel::Delegate implementation 51 // ui::SimpleMenuModel::Delegate implementation
62 bool ProfileMenuButton::IsCommandIdChecked(int command_id) const { 52 bool ProfileMenuButton::IsCommandIdChecked(int command_id) const {
63 return false; 53 return false;
64 } 54 }
65 55
66 bool ProfileMenuButton::IsCommandIdEnabled(int command_id) const { 56 bool ProfileMenuButton::IsCommandIdEnabled(int command_id) const {
67 return true; 57 return true;
68 } 58 }
69 59
70 bool ProfileMenuButton::GetAcceleratorForCommandId(int command_id, 60 bool ProfileMenuButton::GetAcceleratorForCommandId(int command_id,
71 ui::Accelerator* accelerator) { 61 ui::Accelerator* accelerator) {
72 return false; 62 return false;
73 } 63 }
74 64
75 void ProfileMenuButton::ExecuteCommand(int command_id) { 65 void ProfileMenuButton::ExecuteCommand(int command_id) {
76 switch (command_id) { 66 switch (command_id) {
77 case ProfileMenuModel::COMMAND_CREATE_NEW_PROFILE: 67 case ProfileMenuModel::COMMAND_CREATE_NEW_PROFILE:
78 ProfileManager::CreateMultiProfileAsync(); 68 ProfileManager::CreateMultiProfileAsync();
79 break; 69 break;
80 default: 70 default:
81 NOTREACHED(); 71 NOTREACHED();
82 break; 72 break;
83 } 73 }
84 } 74 }
75
76 // views::ViewMenuDelegate implementation
77 void ProfileMenuButton::RunMenu(views::View* source, const gfx::Point &pt) {
78 gfx::Point menu_point(pt.x(), pt.y() + kMenuDisplayOffset);
79 menu_->RunMenuAt(menu_point, views::Menu2::ALIGN_TOPRIGHT);
80 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/profile_menu_button.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698