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

Side by Side Diff: chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm

Issue 265073003: [Win, Mac] UI fixes for the delete account button in the new avatar bubble. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix image width on win Created 6 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 | « no previous file | chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #import <Cocoa/Cocoa.h> 5 #import <Cocoa/Cocoa.h>
6 6
7 #import "chrome/browser/ui/cocoa/profiles/profile_chooser_controller.h" 7 #import "chrome/browser/ui/cocoa/profiles/profile_chooser_controller.h"
8 8
9 #include "base/mac/bundle_locations.h" 9 #include "base/mac/bundle_locations.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 imageResourceId:(int)imageResourceId 708 imageResourceId:(int)imageResourceId
709 alternateImageResourceId:(int)alternateImageResourceId 709 alternateImageResourceId:(int)alternateImageResourceId
710 action:(SEL)action; 710 action:(SEL)action;
711 711
712 // Creates a generic link button with |title| and an |action| positioned at 712 // Creates a generic link button with |title| and an |action| positioned at
713 // |frameOrigin|. 713 // |frameOrigin|.
714 - (NSButton*)linkButtonWithTitle:(NSString*)title 714 - (NSButton*)linkButtonWithTitle:(NSString*)title
715 frameOrigin:(NSPoint)frameOrigin 715 frameOrigin:(NSPoint)frameOrigin
716 action:(SEL)action; 716 action:(SEL)action;
717 717
718 // Creates an email account button with |title| and a remove icon. 718 // Creates an email account button with |title| and a remove icon. |tag|
719 // indicates which account the button refers to.
719 - (NSButton*)accountButtonWithRect:(NSRect)rect 720 - (NSButton*)accountButtonWithRect:(NSRect)rect
720 title:(const std::string&)title; 721 title:(const std::string&)title
722 tag:(int)tag;
721 723
722 @end 724 @end
723 725
724 @implementation ProfileChooserController 726 @implementation ProfileChooserController
725 - (BubbleViewMode) viewMode { 727 - (BubbleViewMode) viewMode {
726 return viewMode_; 728 return viewMode_;
727 } 729 }
728 730
729 - (IBAction)switchToProfile:(id)sender { 731 - (IBAction)switchToProfile:(id)sender {
730 // Check the event flags to see if a new window should be created. 732 // Check the event flags to see if a new window should be created.
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 SigninManagerFactory::GetForProfile(profile)->GetAuthenticatedUsername(); 1332 SigninManagerFactory::GetForProfile(profile)->GetAuthenticatedUsername();
1331 DCHECK(!primaryAccount.empty()); 1333 DCHECK(!primaryAccount.empty());
1332 std::vector<std::string>accounts = 1334 std::vector<std::string>accounts =
1333 profiles::GetSecondaryAccountsForProfile(profile, primaryAccount); 1335 profiles::GetSecondaryAccountsForProfile(profile, primaryAccount);
1334 1336
1335 rect.origin.y = 0; 1337 rect.origin.y = 0;
1336 for (size_t i = 0; i < accounts.size(); ++i) { 1338 for (size_t i = 0; i < accounts.size(); ++i) {
1337 // Save the original email address, as the button text could be elided. 1339 // Save the original email address, as the button text could be elided.
1338 currentProfileAccounts_[i] = accounts[i]; 1340 currentProfileAccounts_[i] = accounts[i];
1339 NSButton* accountButton = [self accountButtonWithRect:rect 1341 NSButton* accountButton = [self accountButtonWithRect:rect
1340 title:accounts[i]]; 1342 title:accounts[i]
1341 [accountButton setTag:i]; 1343 tag:i];
1342 [container addSubview:accountButton]; 1344 [container addSubview:accountButton];
1343 rect.origin.y = NSMaxY([accountButton frame]); 1345 rect.origin.y = NSMaxY([accountButton frame]);
1344 } 1346 }
1345 1347
1346 // The primary account should always be listed first. 1348 // The primary account should always be listed first.
1347 NSButton* accountButton = [self accountButtonWithRect:rect 1349 NSButton* accountButton = [self accountButtonWithRect:rect
1348 title:primaryAccount]; 1350 title:primaryAccount
1351 tag:kPrimaryProfileTag];
1349 [container addSubview:accountButton]; 1352 [container addSubview:accountButton];
1350 [container setFrameSize:NSMakeSize(NSWidth([container frame]), 1353 [container setFrameSize:NSMakeSize(NSWidth([container frame]),
1351 NSMaxY([accountButton frame]))]; 1354 NSMaxY([accountButton frame]))];
1352 [accountButton setTag:kPrimaryProfileTag];
1353 return container.autorelease(); 1355 return container.autorelease();
1354 } 1356 }
1355 1357
1356 - (NSView*)buildGaiaEmbeddedView { 1358 - (NSView*)buildGaiaEmbeddedView {
1357 base::scoped_nsobject<NSView> container( 1359 base::scoped_nsobject<NSView> container(
1358 [[NSView alloc] initWithFrame:NSZeroRect]); 1360 [[NSView alloc] initWithFrame:NSZeroRect]);
1359 CGFloat yOffset = 0; 1361 CGFloat yOffset = 0;
1360 1362
1361 bool addSecondaryAccount = viewMode_ == BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT; 1363 bool addSecondaryAccount = viewMode_ == BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT;
1362 signin::Source source = addSecondaryAccount ? 1364 signin::Source source = addSecondaryAccount ?
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1515 [link setFont:[NSFont labelFontOfSize:kTextFontSize]]; 1517 [link setFont:[NSFont labelFontOfSize:kTextFontSize]];
1516 [link setTarget:self]; 1518 [link setTarget:self];
1517 [link setAction:action]; 1519 [link setAction:action];
1518 [link setFrameOrigin:frameOrigin]; 1520 [link setFrameOrigin:frameOrigin];
1519 [link sizeToFit]; 1521 [link sizeToFit];
1520 1522
1521 return link.autorelease(); 1523 return link.autorelease();
1522 } 1524 }
1523 1525
1524 - (NSButton*)accountButtonWithRect:(NSRect)rect 1526 - (NSButton*)accountButtonWithRect:(NSRect)rect
1525 title:(const std::string&)title { 1527 title:(const std::string&)title
1528 tag:(int)tag {
1526 NSColor* backgroundColor = gfx::SkColorToCalibratedNSColor( 1529 NSColor* backgroundColor = gfx::SkColorToCalibratedNSColor(
1527 profiles::kAvatarBubbleAccountsBackgroundColor); 1530 profiles::kAvatarBubbleAccountsBackgroundColor);
1528 base::scoped_nsobject<BackgroundColorHoverButton> button( 1531 base::scoped_nsobject<BackgroundColorHoverButton> button(
1529 [[BackgroundColorHoverButton alloc] initWithFrame:rect 1532 [[BackgroundColorHoverButton alloc] initWithFrame:rect
1530 imageTitleSpacing:0 1533 imageTitleSpacing:0
1531 backgroundColor:backgroundColor]); 1534 backgroundColor:backgroundColor]);
1532 1535 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance();
1533 [button setTitle:ElideEmail(title, rect.size.width)]; 1536 NSImage* defaultImage = rb->GetNativeImageNamed(IDR_CLOSE_1).AsNSImage();
1537 CGFloat kDeleteButtonWidth = [defaultImage size].width;
1538 CGFloat availableWidth = rect.size.width -
1539 kDeleteButtonWidth - kHorizontalSpacing;
1540 [button setTitle:ElideEmail(title, availableWidth)];
1534 [button setAlignment:NSLeftTextAlignment]; 1541 [button setAlignment:NSLeftTextAlignment];
1535 [button setBordered:NO]; 1542 [button setBordered:NO];
1536 [button setTarget:self];
1537 [button setAction:@selector(showAccountRemovalView:)];
1538 1543
1544 // Delete button.
1545 rect.origin = NSMakePoint(availableWidth, 0);
1546 rect.size.width = kDeleteButtonWidth;
1547 base::scoped_nsobject<HoverImageButton> deleteButton(
1548 [[HoverImageButton alloc] initWithFrame:rect]);
1549 [deleteButton setBordered:NO];
1550 [deleteButton setDefaultImage:defaultImage];
1551 [deleteButton setHoverImage:rb->GetNativeImageNamed(
1552 IDR_CLOSE_1_H).ToNSImage()];
1553 [deleteButton setPressedImage:rb->GetNativeImageNamed(
1554 IDR_CLOSE_1_P).ToNSImage()];
1555 [deleteButton setTarget:self];
1556 [deleteButton setAction:@selector(showAccountRemovalView:)];
1557 [deleteButton setTag:tag];
1558
1559 [button addSubview:deleteButton];
1539 return button.autorelease(); 1560 return button.autorelease();
1540 } 1561 }
1541 1562
1542 @end 1563 @end
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/profiles/profile_chooser_controller_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698