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

Side by Side Diff: chrome/browser/ui/cocoa/browser/avatar_button_controller.mm

Issue 15932008: Add managed user avatar menu for mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments. Created 7 years, 6 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #import "chrome/browser/ui/cocoa/browser/avatar_button_controller.h" 5 #import "chrome/browser/ui/cocoa/browser/avatar_button_controller.h"
6 6
7 #include "base/strings/sys_string_conversions.h" 7 #include "base/strings/sys_string_conversions.h"
8 #include "chrome/app/chrome_command_ids.h" 8 #include "chrome/app/chrome_command_ids.h"
9 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/command_updater.h" 10 #include "chrome/browser/command_updater.h"
11 #include "chrome/browser/managed_mode/managed_user_service.h"
11 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/profiles/profile_info_cache.h" 13 #include "chrome/browser/profiles/profile_info_cache.h"
13 #include "chrome/browser/profiles/profile_info_util.h" 14 #include "chrome/browser/profiles/profile_info_util.h"
14 #include "chrome/browser/profiles/profile_manager.h" 15 #include "chrome/browser/profiles/profile_manager.h"
15 #include "chrome/browser/profiles/profile_metrics.h" 16 #include "chrome/browser/profiles/profile_metrics.h"
17 #include "chrome/browser/themes/theme_properties.h"
18 #include "chrome/browser/themes/theme_service.h"
16 #include "chrome/browser/ui/browser.h" 19 #include "chrome/browser/ui/browser.h"
17 #include "chrome/browser/ui/browser_commands.h" 20 #include "chrome/browser/ui/browser_commands.h"
18 #include "chrome/browser/ui/browser_window.h" 21 #include "chrome/browser/ui/browser_window.h"
19 #import "chrome/browser/ui/cocoa/browser/avatar_menu_bubble_controller.h" 22 #import "chrome/browser/ui/cocoa/browser/avatar_menu_bubble_controller.h"
20 #import "chrome/browser/ui/cocoa/browser_window_controller.h" 23 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
21 #import "chrome/browser/ui/cocoa/menu_controller.h" 24 #import "chrome/browser/ui/cocoa/menu_controller.h"
22 #include "chrome/common/chrome_notification_types.h" 25 #include "chrome/common/chrome_notification_types.h"
23 #include "content/public/browser/notification_service.h" 26 #include "content/public/browser/notification_service.h"
24 #include "grit/generated_resources.h" 27 #include "grit/generated_resources.h"
25 #include "grit/theme_resources.h" 28 #include "grit/theme_resources.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 forAttribute:NSAccessibilityTitleAttribute]; 122 forAttribute:NSAccessibilityTitleAttribute];
120 [cell accessibilitySetOverrideValue: 123 [cell accessibilitySetOverrideValue:
121 l10n_util::GetNSString(IDS_PROFILES_BUBBLE_ACCESSIBLE_DESCRIPTION) 124 l10n_util::GetNSString(IDS_PROFILES_BUBBLE_ACCESSIBLE_DESCRIPTION)
122 forAttribute:NSAccessibilityHelpAttribute]; 125 forAttribute:NSAccessibilityHelpAttribute];
123 [cell accessibilitySetOverrideValue: 126 [cell accessibilitySetOverrideValue:
124 l10n_util::GetNSString(IDS_PROFILES_BUBBLE_ACCESSIBLE_DESCRIPTION) 127 l10n_util::GetNSString(IDS_PROFILES_BUBBLE_ACCESSIBLE_DESCRIPTION)
125 forAttribute:NSAccessibilityDescriptionAttribute]; 128 forAttribute:NSAccessibilityDescriptionAttribute];
126 129
127 [self setView:button]; 130 [self setView:button];
128 131
129 if (browser_->profile()->IsOffTheRecord()) { 132 Profile* profile = browser_->profile();
133 if (profile->IsOffTheRecord()) {
130 ResourceBundle& bundle = ResourceBundle::GetSharedInstance(); 134 ResourceBundle& bundle = ResourceBundle::GetSharedInstance();
131 NSImage* otrIcon = bundle.GetNativeImageNamed(IDR_OTR_ICON).ToNSImage(); 135 NSImage* otrIcon = bundle.GetNativeImageNamed(IDR_OTR_ICON).ToNSImage();
132 [self setImage:[self compositeImageWithShadow:otrIcon]]; 136 [self setImage:[self compositeImageWithShadow:otrIcon]];
133 [self setButtonEnabled:NO]; 137 [self setButtonEnabled:NO];
134 } else { 138 } else {
135 [self setButtonEnabled:YES]; 139 [self setButtonEnabled:YES];
136 observer_.reset(new AvatarButtonControllerInternal::Observer(self)); 140 observer_.reset(new AvatarButtonControllerInternal::Observer(self));
137 [self updateAvatar]; 141 [self updateAvatar];
142 if (ManagedUserService::ProfileIsManaged(profile)) {
143 label_.reset([[NSTextField alloc]
144 initWithFrame:NSMakeRect(0, 0, CGFLOAT_MAX, CGFLOAT_MAX)]);
Robert Sesek 2013/06/04 20:59:10 Since you're calling -sizeToFit, NSZeroRect is oka
Adrian Kuegel 2013/06/05 16:01:38 Done.
145 [label_ setEditable:NO];
146 [label_ setSelectable:NO];
147 [label_ setBezeled:NO];
148 [label_ setDrawsBackground:YES];
149 [label_ setFont:[NSFont labelFontOfSize:12.0]];
150 [label_ setStringValue:
151 l10n_util::GetNSString(IDS_MANAGED_USER_AVATAR_LABEL)];
152 [label_ sizeToFit];
153 }
138 } 154 }
139 } 155 }
140 return self; 156 return self;
141 } 157 }
142 158
143 - (void)dealloc { 159 - (void)dealloc {
144 [[NSNotificationCenter defaultCenter] 160 [[NSNotificationCenter defaultCenter]
145 removeObserver:self 161 removeObserver:self
146 name:NSWindowWillCloseNotification 162 name:NSWindowWillCloseNotification
147 object:[menuController_ window]]; 163 object:[menuController_ window]];
148 [super dealloc]; 164 [super dealloc];
149 } 165 }
150 166
151 - (NSButton*)buttonView { 167 - (NSButton*)buttonView {
152 return static_cast<NSButton*>(self.view); 168 return static_cast<NSButton*>(self.view);
153 } 169 }
154 170
171 - (NSTextField*)labelView {
172 return label_.get();
173 }
174
155 - (void)setImage:(NSImage*)image { 175 - (void)setImage:(NSImage*)image {
156 [self.buttonView setImage:image]; 176 [self.buttonView setImage:image];
157 } 177 }
158 178
179 - (void)updateColors:(ui::ThemeProvider*)themeProvider {
180 if (themeProvider && label_.get()) {
181 NSColor* backgroundColor =
182 themeProvider->GetNSColor(ThemeProperties::COLOR_TOOLBAR, true);
183 [label_ setBackgroundColor:backgroundColor];
184 NSColor* textColor =
185 themeProvider->GetNSColor(ThemeProperties::COLOR_BOOKMARK_TEXT, true);
186 [label_ setTextColor:textColor];
187 }
188 }
189
159 - (void)showAvatarBubble { 190 - (void)showAvatarBubble {
160 if (menuController_) 191 if (menuController_)
161 return; 192 return;
162 193
163 DCHECK(chrome::IsCommandEnabled(browser_, IDC_SHOW_AVATAR_MENU)); 194 DCHECK(chrome::IsCommandEnabled(browser_, IDC_SHOW_AVATAR_MENU));
164 195
165 NSWindowController* wc = 196 NSWindowController* wc =
166 [browser_->window()->GetNativeWindow() windowController]; 197 [browser_->window()->GetNativeWindow() windowController];
167 if ([wc isKindOfClass:[BrowserWindowController class]]) { 198 if ([wc isKindOfClass:[BrowserWindowController class]]) {
168 [static_cast<BrowserWindowController*>(wc) 199 [static_cast<BrowserWindowController*>(wc)
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 [themeFrame _tileTitlebarAndRedisplay:YES]; 321 [themeFrame _tileTitlebarAndRedisplay:YES];
291 } 322 }
292 323
293 // Testing ///////////////////////////////////////////////////////////////////// 324 // Testing /////////////////////////////////////////////////////////////////////
294 325
295 - (AvatarMenuBubbleController*)menuController { 326 - (AvatarMenuBubbleController*)menuController {
296 return menuController_; 327 return menuController_;
297 } 328 }
298 329
299 @end 330 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698