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

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

Issue 869793004: Bring up the Fast User Switcher on Shift+Click on the new Avatar Button (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase before submit Created 5 years, 10 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
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 #import <Carbon/Carbon.h> // kVK_Return. 6 #import <Carbon/Carbon.h> // kVK_Return.
7 7
8 #import "chrome/browser/ui/cocoa/profiles/profile_chooser_controller.h" 8 #import "chrome/browser/ui/cocoa/profiles/profile_chooser_controller.h"
9 9
10 #include "base/mac/bundle_locations.h" 10 #include "base/mac/bundle_locations.h"
(...skipping 1193 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 case profiles::BUBBLE_VIEW_MODE_GAIA_REAUTH: 1204 case profiles::BUBBLE_VIEW_MODE_GAIA_REAUTH:
1205 subView = [self buildGaiaEmbeddedView]; 1205 subView = [self buildGaiaEmbeddedView];
1206 break; 1206 break;
1207 case profiles::BUBBLE_VIEW_MODE_ACCOUNT_REMOVAL: 1207 case profiles::BUBBLE_VIEW_MODE_ACCOUNT_REMOVAL:
1208 subView = [self buildAccountRemovalView]; 1208 subView = [self buildAccountRemovalView];
1209 break; 1209 break;
1210 case profiles::BUBBLE_VIEW_MODE_SWITCH_USER: 1210 case profiles::BUBBLE_VIEW_MODE_SWITCH_USER:
1211 subView = [self buildSwitchUserView]; 1211 subView = [self buildSwitchUserView];
1212 break; 1212 break;
1213 case profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER: 1213 case profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER:
1214 case profiles::BUBBLE_VIEW_MODE_FAST_PROFILE_CHOOSER:
1214 case profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT: 1215 case profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT:
1215 subView = [self buildProfileChooserView]; 1216 subView = [self buildProfileChooserView];
1216 break; 1217 break;
1217 } 1218 }
1218 1219
1219 // Clears tutorial mode for all non-profile-chooser views. 1220 // Clears tutorial mode for all non-profile-chooser views.
1220 if (viewMode_ != profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER) 1221 if (viewMode_ != profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER)
1221 tutorialMode_ = profiles::TUTORIAL_MODE_NONE; 1222 tutorialMode_ = profiles::TUTORIAL_MODE_NONE;
1222 1223
1223 // Add a dummy, empty element so that we don't initially display any 1224 // Add a dummy, empty element so that we don't initially display any
(...skipping 12 matching lines...) Expand all
1236 - (NSView*)buildProfileChooserView { 1237 - (NSView*)buildProfileChooserView {
1237 base::scoped_nsobject<NSView> container( 1238 base::scoped_nsobject<NSView> container(
1238 [[NSView alloc] initWithFrame:NSZeroRect]); 1239 [[NSView alloc] initWithFrame:NSZeroRect]);
1239 1240
1240 NSView* tutorialView = nil; 1241 NSView* tutorialView = nil;
1241 NSView* currentProfileView = nil; 1242 NSView* currentProfileView = nil;
1242 base::scoped_nsobject<NSMutableArray> otherProfiles( 1243 base::scoped_nsobject<NSMutableArray> otherProfiles(
1243 [[NSMutableArray alloc] init]); 1244 [[NSMutableArray alloc] init]);
1244 // Local and guest profiles cannot lock their profile. 1245 // Local and guest profiles cannot lock their profile.
1245 bool displayLock = false; 1246 bool displayLock = false;
1247 bool isFastProfileChooser =
1248 viewMode_ == profiles::BUBBLE_VIEW_MODE_FAST_PROFILE_CHOOSER;
1246 1249
1247 // Loop over the profiles in reverse, so that they are sorted by their 1250 // Loop over the profiles in reverse, so that they are sorted by their
1248 // y-coordinate, and separate them into active and "other" profiles. 1251 // y-coordinate, and separate them into active and "other" profiles.
1249 for (int i = avatarMenu_->GetNumberOfItems() - 1; i >= 0; --i) { 1252 for (int i = avatarMenu_->GetNumberOfItems() - 1; i >= 0; --i) {
1250 const AvatarMenu::Item& item = avatarMenu_->GetItemAt(i); 1253 const AvatarMenu::Item& item = avatarMenu_->GetItemAt(i);
1251 if (item.active) { 1254 if (item.active) {
1252 if (viewMode_ == profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER) { 1255 if (viewMode_ == profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER) {
1253 switch (tutorialMode_) { 1256 switch (tutorialMode_) {
1254 case profiles::TUTORIAL_MODE_NONE: 1257 case profiles::TUTORIAL_MODE_NONE:
1255 case profiles::TUTORIAL_MODE_WELCOME_UPGRADE: 1258 case profiles::TUTORIAL_MODE_WELCOME_UPGRADE:
(...skipping 15 matching lines...) Expand all
1271 } 1274 }
1272 } 1275 }
1273 if (!currentProfileView) // Guest windows don't have an active profile. 1276 if (!currentProfileView) // Guest windows don't have an active profile.
1274 currentProfileView = [self createGuestProfileView]; 1277 currentProfileView = [self createGuestProfileView];
1275 1278
1276 // |yOffset| is the next position at which to draw in |container| 1279 // |yOffset| is the next position at which to draw in |container|
1277 // coordinates. Add a pixel offset so that the bottom option buttons don't 1280 // coordinates. Add a pixel offset so that the bottom option buttons don't
1278 // overlap the bubble's rounded corners. 1281 // overlap the bubble's rounded corners.
1279 CGFloat yOffset = 1; 1282 CGFloat yOffset = 1;
1280 1283
1281 // Option buttons. 1284 if (!isFastProfileChooser) {
1282 NSRect rect = NSMakeRect(0, yOffset, kFixedMenuWidth, 0); 1285 // Option buttons.
1283 NSView* optionsView = [self createOptionsViewWithRect:rect 1286 NSRect rect = NSMakeRect(0, yOffset, kFixedMenuWidth, 0);
1284 displayLock:displayLock]; 1287 NSView* optionsView = [self createOptionsViewWithRect:rect
1285 [container addSubview:optionsView]; 1288 displayLock:displayLock];
1286 rect.origin.y = NSMaxY([optionsView frame]); 1289 [container addSubview:optionsView];
1290 rect.origin.y = NSMaxY([optionsView frame]);
1287 1291
1288 NSBox* separator = [self horizontalSeparatorWithFrame:rect]; 1292 NSBox* separator = [self horizontalSeparatorWithFrame:rect];
1289 [container addSubview:separator]; 1293 [container addSubview:separator];
1290 yOffset = NSMaxY([separator frame]); 1294 yOffset = NSMaxY([separator frame]);
1295 }
1291 1296
1292 if (viewMode_ == profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER && 1297 if ((viewMode_ == profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER &&
1293 switches::IsFastUserSwitching()) { 1298 switches::IsFastUserSwitching()) || isFastProfileChooser) {
1294 // Other profiles switcher. The profiles have already been sorted 1299 // Other profiles switcher. The profiles have already been sorted
1295 // by their y-coordinate, so they can be added in the existing order. 1300 // by their y-coordinate, so they can be added in the existing order.
1296 for (NSView *otherProfileView in otherProfiles.get()) { 1301 for (NSView *otherProfileView in otherProfiles.get()) {
1297 [otherProfileView setFrameOrigin:NSMakePoint(0, yOffset)]; 1302 [otherProfileView setFrameOrigin:NSMakePoint(0, yOffset)];
1298 [container addSubview:otherProfileView]; 1303 [container addSubview:otherProfileView];
1299 yOffset = NSMaxY([otherProfileView frame]); 1304 yOffset = NSMaxY([otherProfileView frame]);
1300 1305
1301 NSBox* separator = [self horizontalSeparatorWithFrame:NSMakeRect( 1306 NSBox* separator = [self horizontalSeparatorWithFrame:NSMakeRect(
1302 0, yOffset, kFixedMenuWidth, 0)]; 1307 0, yOffset, kFixedMenuWidth, 0)];
1303 [container addSubview:separator]; 1308 [container addSubview:separator];
(...skipping 22 matching lines...) Expand all
1326 [container addSubview:currentProfileAccountsView]; 1331 [container addSubview:currentProfileAccountsView];
1327 yOffset = NSMaxY([currentProfileAccountsView frame]); 1332 yOffset = NSMaxY([currentProfileAccountsView frame]);
1328 1333
1329 NSBox* accountsSeparator = [self horizontalSeparatorWithFrame: 1334 NSBox* accountsSeparator = [self horizontalSeparatorWithFrame:
1330 NSMakeRect(0, yOffset, kFixedMenuWidth, 0)]; 1335 NSMakeRect(0, yOffset, kFixedMenuWidth, 0)];
1331 [container addSubview:accountsSeparator]; 1336 [container addSubview:accountsSeparator];
1332 yOffset = NSMaxY([accountsSeparator frame]); 1337 yOffset = NSMaxY([accountsSeparator frame]);
1333 } 1338 }
1334 1339
1335 // Active profile card. 1340 // Active profile card.
1336 if (currentProfileView) { 1341 if (!isFastProfileChooser && currentProfileView) {
1337 yOffset += kVerticalSpacing; 1342 yOffset += kVerticalSpacing;
1338 [currentProfileView setFrameOrigin:NSMakePoint(0, yOffset)]; 1343 [currentProfileView setFrameOrigin:NSMakePoint(0, yOffset)];
1339 [container addSubview:currentProfileView]; 1344 [container addSubview:currentProfileView];
1340 yOffset = NSMaxY([currentProfileView frame]) + kVerticalSpacing; 1345 yOffset = NSMaxY([currentProfileView frame]) + kVerticalSpacing;
1341 } 1346 }
1342 1347
1343 if (tutorialView) { 1348 if (!isFastProfileChooser && tutorialView) {
1344 [tutorialView setFrameOrigin:NSMakePoint(0, yOffset)]; 1349 [tutorialView setFrameOrigin:NSMakePoint(0, yOffset)];
1345 [container addSubview:tutorialView]; 1350 [container addSubview:tutorialView];
1346 yOffset = NSMaxY([tutorialView frame]); 1351 yOffset = NSMaxY([tutorialView frame]);
1347 //TODO(mlerman): update UMA stats for the new tutorials. 1352 //TODO(mlerman): update UMA stats for the new tutorials.
1348 } else { 1353 } else {
1349 tutorialMode_ = profiles::TUTORIAL_MODE_NONE; 1354 tutorialMode_ = profiles::TUTORIAL_MODE_NONE;
1350 } 1355 }
1351 1356
1352 [container setFrameSize:NSMakeSize(kFixedMenuWidth, yOffset)]; 1357 [container setFrameSize:NSMakeSize(kFixedMenuWidth, yOffset)];
1353 return container.autorelease(); 1358 return container.autorelease();
(...skipping 925 matching lines...) Expand 10 before | Expand all | Expand 10 after
2279 } 2284 }
2280 2285
2281 - (bool)shouldShowGoIncognito { 2286 - (bool)shouldShowGoIncognito {
2282 bool incognitoAvailable = 2287 bool incognitoAvailable =
2283 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) != 2288 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) !=
2284 IncognitoModePrefs::DISABLED; 2289 IncognitoModePrefs::DISABLED;
2285 return incognitoAvailable && !browser_->profile()->IsGuestSession(); 2290 return incognitoAvailable && !browser_->profile()->IsGuestSession();
2286 } 2291 }
2287 2292
2288 @end 2293 @end
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/profiles/avatar_base_controller.mm ('k') | chrome/browser/ui/profile_chooser_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698