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

Side by Side Diff: chrome/browser/ui/views/profiles/new_avatar_button.cc

Issue 381953002: New avatar button: Consolidate text elision between Mac and Win/Linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 6 years, 5 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/profiles/new_avatar_button.h" 5 #include "chrome/browser/ui/views/profiles/new_avatar_button.h"
6 6
7 #include "base/strings/utf_string_conversions.h"
8 #include "base/win/windows_version.h"
9 #include "chrome/browser/browser_process.h" 7 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/profiles/profile_manager.h" 8 #include "chrome/browser/profiles/profile_manager.h"
11 #include "chrome/browser/profiles/profiles_state.h" 9 #include "chrome/browser/profiles/profiles_state.h"
12 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
13 #include "chrome/browser/ui/browser.h" 10 #include "chrome/browser/ui/browser.h"
14 #include "components/signin/core/browser/profile_oauth2_token_service.h"
15 #include "grit/generated_resources.h"
16 #include "grit/theme_resources.h" 11 #include "grit/theme_resources.h"
17 #include "ui/base/l10n/l10n_util.h"
18 #include "ui/base/resource/resource_bundle.h" 12 #include "ui/base/resource/resource_bundle.h"
19 #include "ui/gfx/canvas.h" 13 #include "ui/gfx/canvas.h"
20 #include "ui/gfx/color_utils.h"
21 #include "ui/gfx/font_list.h"
22 #include "ui/gfx/text_constants.h"
23 #include "ui/gfx/text_elider.h"
24 #include "ui/views/border.h" 14 #include "ui/views/border.h"
25 #include "ui/views/controls/button/label_button_border.h" 15 #include "ui/views/controls/button/label_button_border.h"
26 #include "ui/views/painter.h" 16 #include "ui/views/painter.h"
27 17
28 namespace { 18 namespace {
29 19
30 scoped_ptr<views::Border> CreateBorder(const int normal_image_set[], 20 scoped_ptr<views::Border> CreateBorder(const int normal_image_set[],
31 const int hot_image_set[], 21 const int hot_image_set[],
32 const int pushed_image_set[]) { 22 const int pushed_image_set[]) {
33 scoped_ptr<views::LabelButtonBorder> border( 23 scoped_ptr<views::LabelButtonBorder> border(
34 new views::LabelButtonBorder(views::Button::STYLE_TEXTBUTTON)); 24 new views::LabelButtonBorder(views::Button::STYLE_TEXTBUTTON));
35 border->SetPainter(false, views::Button::STATE_NORMAL, 25 border->SetPainter(false, views::Button::STATE_NORMAL,
36 views::Painter::CreateImageGridPainter(normal_image_set)); 26 views::Painter::CreateImageGridPainter(normal_image_set));
37 border->SetPainter(false, views::Button::STATE_HOVERED, 27 border->SetPainter(false, views::Button::STATE_HOVERED,
38 views::Painter::CreateImageGridPainter(hot_image_set)); 28 views::Painter::CreateImageGridPainter(hot_image_set));
39 border->SetPainter(false, views::Button::STATE_PRESSED, 29 border->SetPainter(false, views::Button::STATE_PRESSED,
40 views::Painter::CreateImageGridPainter(pushed_image_set)); 30 views::Painter::CreateImageGridPainter(pushed_image_set));
41 31
42 const int kLeftRightInset = 10; 32 const int kLeftRightInset = 10;
43 const int kTopInset = 0; 33 const int kTopInset = 0;
44 const int kBottomInset = 4; 34 const int kBottomInset = 4;
45 border->set_insets(gfx::Insets(kTopInset, kLeftRightInset, 35 border->set_insets(gfx::Insets(kTopInset, kLeftRightInset,
46 kBottomInset, kLeftRightInset)); 36 kBottomInset, kLeftRightInset));
47 37
48 return border.PassAs<views::Border>(); 38 return border.PassAs<views::Border>();
49 } 39 }
50 40
51 base::string16 GetElidedText(const base::string16& original_text) {
52 // Maximum characters the button can be before the text will get elided.
53 const int kMaxCharactersToDisplay = 15;
54 const gfx::FontList font_list;
55 return gfx::ElideText(original_text, font_list,
56 font_list.GetExpectedTextWidth(kMaxCharactersToDisplay),
57 gfx::ELIDE_TAIL);
58 }
59
60 base::string16 GetButtonText(Profile* profile) {
61 base::string16 name = GetElidedText(profiles::GetAvatarNameForProfile(
62 profile->GetPath()));
63 if (profile->IsSupervised())
64 name = l10n_util::GetStringFUTF16(IDS_SUPERVISED_USER_NEW_AVATAR_LABEL,
65 name);
66 return name;
67 }
68
69 } // namespace 41 } // namespace
70 42
71 NewAvatarButton::NewAvatarButton( 43 NewAvatarButton::NewAvatarButton(
72 views::ButtonListener* listener, 44 views::ButtonListener* listener,
73 const base::string16& profile_name, 45 const base::string16& profile_name,
74 AvatarButtonStyle button_style, 46 AvatarButtonStyle button_style,
75 Browser* browser) 47 Browser* browser)
76 : MenuButton(listener, GetButtonText(browser->profile()), NULL, true), 48 : MenuButton(listener,
49 profiles::GetAvatarButtonTextForProfile(browser->profile()),
50 NULL,
51 true),
77 browser_(browser) { 52 browser_(browser) {
78 set_animate_on_state_change(false); 53 set_animate_on_state_change(false);
79 SetTextColor(views::Button::STATE_NORMAL, SK_ColorWHITE); 54 SetTextColor(views::Button::STATE_NORMAL, SK_ColorWHITE);
80 SetTextColor(views::Button::STATE_HOVERED, SK_ColorWHITE); 55 SetTextColor(views::Button::STATE_HOVERED, SK_ColorWHITE);
81 SetTextColor(views::Button::STATE_PRESSED, SK_ColorWHITE); 56 SetTextColor(views::Button::STATE_PRESSED, SK_ColorWHITE);
82 SetTextShadows(gfx::ShadowValues(10, 57 SetTextShadows(gfx::ShadowValues(10,
83 gfx::ShadowValue(gfx::Point(), 1.0f, SK_ColorDKGRAY))); 58 gfx::ShadowValue(gfx::Point(), 1.0f, SK_ColorDKGRAY)));
84 SetTextSubpixelRenderingEnabled(false); 59 SetTextSubpixelRenderingEnabled(false);
85 60
86 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); 61 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance();
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 icon = *ui::ResourceBundle::GetSharedInstance().GetImageNamed( 141 icon = *ui::ResourceBundle::GetSharedInstance().GetImageNamed(
167 IDR_ICON_PROFILES_AVATAR_BUTTON_ERROR).ToImageSkia(); 142 IDR_ICON_PROFILES_AVATAR_BUTTON_ERROR).ToImageSkia();
168 } 143 }
169 144
170 SetImage(views::Button::STATE_NORMAL, icon); 145 SetImage(views::Button::STATE_NORMAL, icon);
171 UpdateAvatarButtonAndRelayoutParent(); 146 UpdateAvatarButtonAndRelayoutParent();
172 } 147 }
173 148
174 void NewAvatarButton::UpdateAvatarButtonAndRelayoutParent() { 149 void NewAvatarButton::UpdateAvatarButtonAndRelayoutParent() {
175 // We want the button to resize if the new text is shorter. 150 // We want the button to resize if the new text is shorter.
176 SetText(GetButtonText(browser_->profile())); 151 SetText(profiles::GetAvatarButtonTextForProfile(browser_->profile()));
177 set_min_size(gfx::Size()); 152 set_min_size(gfx::Size());
178 InvalidateLayout(); 153 InvalidateLayout();
179 154
180 // Because the width of the button might have changed, the parent browser 155 // Because the width of the button might have changed, the parent browser
181 // frame needs to recalculate the button bounds and redraw it. 156 // frame needs to recalculate the button bounds and redraw it.
182 if (parent()) 157 if (parent())
183 parent()->Layout(); 158 parent()->Layout();
184 } 159 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698