| OLD | NEW |
| 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_menu_bubble_controller.h" | 5 #import "chrome/browser/ui/cocoa/browser/avatar_menu_bubble_controller.h" |
| 6 | 6 |
| 7 #include "base/mac/bundle_locations.h" | 7 #include "base/mac/bundle_locations.h" |
| 8 #include "base/mac/mac_util.h" | 8 #include "base/mac/mac_util.h" |
| 9 #include "base/strings/sys_string_conversions.h" | 9 #include "base/strings/sys_string_conversions.h" |
| 10 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 } | 103 } |
| 104 | 104 |
| 105 // Private ///////////////////////////////////////////////////////////////////// | 105 // Private ///////////////////////////////////////////////////////////////////// |
| 106 | 106 |
| 107 - (id)initWithModel:(AvatarMenuModel*)model | 107 - (id)initWithModel:(AvatarMenuModel*)model |
| 108 parentWindow:(NSWindow*)parent | 108 parentWindow:(NSWindow*)parent |
| 109 anchoredAt:(NSPoint)point { | 109 anchoredAt:(NSPoint)point { |
| 110 // Use an arbitrary height because it will reflect the size of the content. | 110 // Use an arbitrary height because it will reflect the size of the content. |
| 111 NSRect contentRect = NSMakeRect(0, 0, kBubbleMinWidth, 150); | 111 NSRect contentRect = NSMakeRect(0, 0, kBubbleMinWidth, 150); |
| 112 // Create an empty window into which content is placed. | 112 // Create an empty window into which content is placed. |
| 113 scoped_nsobject<InfoBubbleWindow> window( | 113 base::scoped_nsobject<InfoBubbleWindow> window( |
| 114 [[InfoBubbleWindow alloc] initWithContentRect:contentRect | 114 [[InfoBubbleWindow alloc] initWithContentRect:contentRect |
| 115 styleMask:NSBorderlessWindowMask | 115 styleMask:NSBorderlessWindowMask |
| 116 backing:NSBackingStoreBuffered | 116 backing:NSBackingStoreBuffered |
| 117 defer:NO]); | 117 defer:NO]); |
| 118 if ((self = [super initWithWindow:window | 118 if ((self = [super initWithWindow:window |
| 119 parentWindow:parent | 119 parentWindow:parent |
| 120 anchoredAt:point])) { | 120 anchoredAt:point])) { |
| 121 model_.reset(model); | 121 model_.reset(model); |
| 122 | 122 |
| 123 [window accessibilitySetOverrideValue: | 123 [window accessibilitySetOverrideValue: |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 items_.reset([[NSMutableArray alloc] init]); | 295 items_.reset([[NSMutableArray alloc] init]); |
| 296 [contentView setSubviews:[NSArray array]]; | 296 [contentView setSubviews:[NSArray array]]; |
| 297 | 297 |
| 298 if (model_->GetManagedUserInformation().empty() || expanded_) | 298 if (model_->GetManagedUserInformation().empty() || expanded_) |
| 299 [self initMenuContents]; | 299 [self initMenuContents]; |
| 300 else | 300 else |
| 301 [self initManagedUserContents]; | 301 [self initManagedUserContents]; |
| 302 } | 302 } |
| 303 | 303 |
| 304 - (NSView*)configureManagedUserInformation:(CGFloat)width { | 304 - (NSView*)configureManagedUserInformation:(CGFloat)width { |
| 305 scoped_nsobject<NSView> container([[NSView alloc] initWithFrame:NSZeroRect]); | 305 base::scoped_nsobject<NSView> container( |
| 306 [[NSView alloc] initWithFrame:NSZeroRect]); |
| 306 | 307 |
| 307 // Add the limited user icon on the left side of the information TextView. | 308 // Add the limited user icon on the left side of the information TextView. |
| 308 scoped_nsobject<NSImageView> iconView( | 309 base::scoped_nsobject<NSImageView> iconView( |
| 309 [[NSImageView alloc] initWithFrame:NSMakeRect(5, 0, 16, 16)]); | 310 [[NSImageView alloc] initWithFrame:NSMakeRect(5, 0, 16, 16)]); |
| 310 [iconView setImage:model_->GetManagedUserIcon().ToNSImage()]; | 311 [iconView setImage:model_->GetManagedUserIcon().ToNSImage()]; |
| 311 [container addSubview:iconView]; | 312 [container addSubview:iconView]; |
| 312 | 313 |
| 313 NSString* info = | 314 NSString* info = |
| 314 base::SysUTF16ToNSString(model_->GetManagedUserInformation()); | 315 base::SysUTF16ToNSString(model_->GetManagedUserInformation()); |
| 315 NSDictionary* attributes = | 316 NSDictionary* attributes = |
| 316 @{ NSFontAttributeName : [NSFont labelFontOfSize:12] }; | 317 @{ NSFontAttributeName : [NSFont labelFontOfSize:12] }; |
| 317 scoped_nsobject<NSAttributedString> attrString( | 318 base::scoped_nsobject<NSAttributedString> attrString( |
| 318 [[NSAttributedString alloc] initWithString:info attributes:attributes]); | 319 [[NSAttributedString alloc] initWithString:info attributes:attributes]); |
| 319 scoped_nsobject<NSTextView> label( | 320 base::scoped_nsobject<NSTextView> label( |
| 320 [[NSTextView alloc] initWithFrame:NSMakeRect( | 321 [[NSTextView alloc] initWithFrame:NSMakeRect( |
| 321 kManagedUserSpacing, 0, width - kManagedUserSpacing - 5, 0)]); | 322 kManagedUserSpacing, 0, width - kManagedUserSpacing - 5, 0)]); |
| 322 [[label textStorage] setAttributedString:attrString]; | 323 [[label textStorage] setAttributedString:attrString]; |
| 323 [label setHorizontallyResizable:NO]; | 324 [label setHorizontallyResizable:NO]; |
| 324 [label setEditable:NO]; | 325 [label setEditable:NO]; |
| 325 [label sizeToFit]; | 326 [label sizeToFit]; |
| 326 [container addSubview:label]; | 327 [container addSubview:label]; |
| 327 [container setFrameSize:NSMakeSize(width, NSHeight([label frame]))]; | 328 [container setFrameSize:NSMakeSize(width, NSHeight([label frame]))]; |
| 328 | 329 |
| 329 // Reposition the limited user icon so that it is on top. | 330 // Reposition the limited user icon so that it is on top. |
| 330 [iconView setFrameOrigin:NSMakePoint(5, NSHeight([label frame]) - 16)]; | 331 [iconView setFrameOrigin:NSMakePoint(5, NSHeight([label frame]) - 16)]; |
| 331 return container.autorelease(); | 332 return container.autorelease(); |
| 332 } | 333 } |
| 333 | 334 |
| 334 - (NSButton*)configureNewUserButton:(CGFloat)yOffset | 335 - (NSButton*)configureNewUserButton:(CGFloat)yOffset |
| 335 updateWidthAdjust:(CGFloat*)widthAdjust { | 336 updateWidthAdjust:(CGFloat*)widthAdjust { |
| 336 scoped_nsobject<NSButton> newButton( | 337 base::scoped_nsobject<NSButton> newButton([[NSButton alloc] initWithFrame: |
| 337 [[NSButton alloc] initWithFrame:NSMakeRect( | 338 NSMakeRect(kLabelInset, yOffset, kBubbleMinWidth - kLabelInset, 16)]); |
| 338 kLabelInset, yOffset, kBubbleMinWidth - kLabelInset, 16)]); | 339 base::scoped_nsobject<HyperlinkButtonCell> buttonCell( |
| 339 scoped_nsobject<HyperlinkButtonCell> buttonCell( | |
| 340 [[HyperlinkButtonCell alloc] initTextCell: | 340 [[HyperlinkButtonCell alloc] initTextCell: |
| 341 l10n_util::GetNSString(IDS_PROFILES_CREATE_NEW_PROFILE_LINK)]); | 341 l10n_util::GetNSString(IDS_PROFILES_CREATE_NEW_PROFILE_LINK)]); |
| 342 [newButton setCell:buttonCell.get()]; | 342 [newButton setCell:buttonCell.get()]; |
| 343 [newButton setFont:[NSFont labelFontOfSize:12.0]]; | 343 [newButton setFont:[NSFont labelFontOfSize:12.0]]; |
| 344 [newButton setBezelStyle:NSRegularSquareBezelStyle]; | 344 [newButton setBezelStyle:NSRegularSquareBezelStyle]; |
| 345 [newButton setTarget:self]; | 345 [newButton setTarget:self]; |
| 346 [newButton setAction:@selector(newProfile:)]; | 346 [newButton setAction:@selector(newProfile:)]; |
| 347 NSSize delta = [GTMUILocalizerAndLayoutTweaker sizeToFitView:newButton]; | 347 NSSize delta = [GTMUILocalizerAndLayoutTweaker sizeToFitView:newButton]; |
| 348 if (delta.width > 0) | 348 if (delta.width > 0) |
| 349 *widthAdjust = std::max(*widthAdjust, delta.width); | 349 *widthAdjust = std::max(*widthAdjust, delta.width); |
| 350 return newButton.autorelease(); | 350 return newButton.autorelease(); |
| 351 } | 351 } |
| 352 | 352 |
| 353 - (NSButton*)configureSwitchUserButton:(CGFloat)yOffset | 353 - (NSButton*)configureSwitchUserButton:(CGFloat)yOffset |
| 354 updateWidthAdjust:(CGFloat*)widthAdjust { | 354 updateWidthAdjust:(CGFloat*)widthAdjust { |
| 355 scoped_nsobject<NSButton> newButton( | 355 base::scoped_nsobject<NSButton> newButton( |
| 356 [[NSButton alloc] initWithFrame:NSMakeRect( | 356 [[NSButton alloc] initWithFrame:NSMakeRect( |
| 357 kManagedUserSpacing, yOffset, kBubbleMinWidth - kLabelInset, 16)]); | 357 kManagedUserSpacing, yOffset, kBubbleMinWidth - kLabelInset, 16)]); |
| 358 scoped_nsobject<HyperlinkButtonCell> buttonCell( | 358 base::scoped_nsobject<HyperlinkButtonCell> buttonCell( |
| 359 [[HyperlinkButtonCell alloc] initTextCell: | 359 [[HyperlinkButtonCell alloc] initTextCell: |
| 360 l10n_util::GetNSString(IDS_PROFILES_SWITCH_PROFILE_LINK)]); | 360 l10n_util::GetNSString(IDS_PROFILES_SWITCH_PROFILE_LINK)]); |
| 361 [newButton setCell:buttonCell.get()]; | 361 [newButton setCell:buttonCell.get()]; |
| 362 [newButton setFont:[NSFont labelFontOfSize:12.0]]; | 362 [newButton setFont:[NSFont labelFontOfSize:12.0]]; |
| 363 [newButton setBezelStyle:NSRegularSquareBezelStyle]; | 363 [newButton setBezelStyle:NSRegularSquareBezelStyle]; |
| 364 [newButton setTarget:self]; | 364 [newButton setTarget:self]; |
| 365 [newButton setAction:@selector(switchProfile:)]; | 365 [newButton setAction:@selector(switchProfile:)]; |
| 366 NSSize delta = [GTMUILocalizerAndLayoutTweaker sizeToFitView:newButton]; | 366 NSSize delta = [GTMUILocalizerAndLayoutTweaker sizeToFitView:newButton]; |
| 367 if (delta.width > 0) | 367 if (delta.width > 0) |
| 368 *widthAdjust = std::max(*widthAdjust, delta.width); | 368 *widthAdjust = std::max(*widthAdjust, delta.width); |
| 369 return newButton.autorelease(); | 369 return newButton.autorelease(); |
| 370 } | 370 } |
| (...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 690 - (BOOL)accessibilityIsIgnored { | 690 - (BOOL)accessibilityIsIgnored { |
| 691 return YES; | 691 return YES; |
| 692 } | 692 } |
| 693 @end | 693 @end |
| 694 | 694 |
| 695 @implementation AccessibilityIgnoredTextFieldCell | 695 @implementation AccessibilityIgnoredTextFieldCell |
| 696 - (BOOL)accessibilityIsIgnored { | 696 - (BOOL)accessibilityIsIgnored { |
| 697 return YES; | 697 return YES; |
| 698 } | 698 } |
| 699 @end | 699 @end |
| OLD | NEW |