OLD | NEW |
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 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 | 811 |
812 - (IBAction)switchToProfile:(id)sender { | 812 - (IBAction)switchToProfile:(id)sender { |
813 // Check the event flags to see if a new window should be created. | 813 // Check the event flags to see if a new window should be created. |
814 bool alwaysCreate = ui::WindowOpenDispositionFromNSEvent( | 814 bool alwaysCreate = ui::WindowOpenDispositionFromNSEvent( |
815 [NSApp currentEvent]) == NEW_WINDOW; | 815 [NSApp currentEvent]) == NEW_WINDOW; |
816 avatarMenu_->SwitchToProfile([sender tag], alwaysCreate, | 816 avatarMenu_->SwitchToProfile([sender tag], alwaysCreate, |
817 ProfileMetrics::SWITCH_PROFILE_ICON); | 817 ProfileMetrics::SWITCH_PROFILE_ICON); |
818 } | 818 } |
819 | 819 |
820 - (IBAction)showUserManager:(id)sender { | 820 - (IBAction)showUserManager:(id)sender { |
821 chrome::ShowUserManager(browser_->profile()->GetPath()); | 821 profiles::ShowUserManagerMaybeWithTutorial(browser_->profile()); |
822 } | 822 } |
823 | 823 |
824 - (IBAction)exitGuest:(id)sender { | 824 - (IBAction)exitGuest:(id)sender { |
825 DCHECK(browser_->profile()->IsGuestSession()); | 825 DCHECK(browser_->profile()->IsGuestSession()); |
826 chrome::ShowUserManager(base::FilePath()); | 826 [self showUserManager:sender]; |
827 profiles::CloseGuestProfileWindows(); | 827 profiles::CloseGuestProfileWindows(); |
828 } | 828 } |
829 | 829 |
830 - (IBAction)goIncognito:(id)sender { | 830 - (IBAction)goIncognito:(id)sender { |
831 DCHECK([self shouldShowGoIncognito]); | 831 DCHECK([self shouldShowGoIncognito]); |
832 chrome::NewIncognitoWindow(browser_); | 832 chrome::NewIncognitoWindow(browser_); |
833 } | 833 } |
834 | 834 |
835 - (IBAction)showAccountManagement:(id)sender { | 835 - (IBAction)showAccountManagement:(id)sender { |
836 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT]; | 836 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT]; |
837 } | 837 } |
838 | 838 |
839 - (IBAction)hideAccountManagement:(id)sender { | 839 - (IBAction)hideAccountManagement:(id)sender { |
840 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER]; | 840 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER]; |
841 } | 841 } |
842 | 842 |
843 - (IBAction)lockProfile:(id)sender { | 843 - (IBAction)lockProfile:(id)sender { |
844 profiles::LockProfile(browser_->profile()); | 844 profiles::LockProfile(browser_->profile()); |
845 [self postActionPerformed:ProfileMetrics::PROFILE_DESKTOP_MENU_LOCK]; | 845 [self postActionPerformed:ProfileMetrics::PROFILE_DESKTOP_MENU_LOCK]; |
846 } | 846 } |
847 | 847 |
848 - (IBAction)showInlineSigninPage:(id)sender { | 848 - (IBAction)showInlineSigninPage:(id)sender { |
849 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN]; | 849 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN]; |
850 } | 850 } |
851 | 851 |
| 852 |
852 - (IBAction)addAccount:(id)sender { | 853 - (IBAction)addAccount:(id)sender { |
853 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT]; | 854 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT]; |
854 [self postActionPerformed:ProfileMetrics::PROFILE_DESKTOP_MENU_ADD_ACCT]; | 855 [self postActionPerformed:ProfileMetrics::PROFILE_DESKTOP_MENU_ADD_ACCT]; |
855 } | 856 } |
856 | 857 |
857 - (IBAction)navigateBackFromSigninPage:(id)sender { | 858 - (IBAction)navigateBackFromSigninPage:(id)sender { |
858 std::string primaryAccount = SigninManagerFactory::GetForProfile( | 859 std::string primaryAccount = SigninManagerFactory::GetForProfile( |
859 browser_->profile())->GetAuthenticatedUsername(); | 860 browser_->profile())->GetAuthenticatedUsername(); |
860 bool hasAccountManagement = !primaryAccount.empty() && | 861 bool hasAccountManagement = !primaryAccount.empty() && |
861 switches::IsEnableAccountConsistency(); | 862 switches::IsEnableAccountConsistency(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
911 SyncConfirmationUIClosed(true); | 912 SyncConfirmationUIClosed(true); |
912 } | 913 } |
913 | 914 |
914 - (IBAction)syncSettingsConfirmed:(id)sender { | 915 - (IBAction)syncSettingsConfirmed:(id)sender { |
915 tutorialMode_ = profiles::TUTORIAL_MODE_NONE; | 916 tutorialMode_ = profiles::TUTORIAL_MODE_NONE; |
916 LoginUIServiceFactory::GetForProfile(browser_->profile())-> | 917 LoginUIServiceFactory::GetForProfile(browser_->profile())-> |
917 SyncConfirmationUIClosed(false); | 918 SyncConfirmationUIClosed(false); |
918 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER]; | 919 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER]; |
919 } | 920 } |
920 | 921 |
| 922 - (IBAction)addPerson:(id)sender { |
| 923 profiles::ShowUserManagerMaybeWithTutorial(browser_->profile()); |
| 924 } |
| 925 |
921 - (IBAction)disconnectProfile:(id)sender { | 926 - (IBAction)disconnectProfile:(id)sender { |
922 chrome::ShowSettings(browser_); | 927 chrome::ShowSettings(browser_); |
923 } | 928 } |
924 | 929 |
925 - (IBAction)navigateBackFromSwitchUserView:(id)sender { | 930 - (IBAction)navigateBackFromSwitchUserView:(id)sender { |
926 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER]; | 931 [self initMenuContentsWithView:profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER]; |
927 } | 932 } |
928 | 933 |
929 - (void)windowWillClose:(NSNotification*)notification { | 934 - (void)windowWillClose:(NSNotification*)notification { |
930 if (tutorialMode_ == profiles::TUTORIAL_MODE_CONFIRM_SIGNIN) { | 935 if (tutorialMode_ == profiles::TUTORIAL_MODE_CONFIRM_SIGNIN) { |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1159 buttonAction:@selector(syncSettingsConfirmed:)]; | 1164 buttonAction:@selector(syncSettingsConfirmed:)]; |
1160 } | 1165 } |
1161 | 1166 |
1162 - (NSView*)buildWelcomeUpgradeTutorialViewIfNeeded { | 1167 - (NSView*)buildWelcomeUpgradeTutorialViewIfNeeded { |
1163 if (first_run::IsChromeFirstRun()) | 1168 if (first_run::IsChromeFirstRun()) |
1164 return nil; | 1169 return nil; |
1165 | 1170 |
1166 Profile* profile = browser_->profile(); | 1171 Profile* profile = browser_->profile(); |
1167 const AvatarMenu::Item& avatarItem = | 1172 const AvatarMenu::Item& avatarItem = |
1168 avatarMenu_->GetItemAt(avatarMenu_->GetActiveProfileIndex()); | 1173 avatarMenu_->GetItemAt(avatarMenu_->GetActiveProfileIndex()); |
| 1174 if (!avatarItem.signed_in) { |
| 1175 profile->GetPrefs()->SetInteger( |
| 1176 prefs::kProfileAvatarTutorialShown, kUpgradeWelcomeTutorialShowMax + 1); |
| 1177 return nil; |
| 1178 } |
1169 | 1179 |
1170 const int showCount = profile->GetPrefs()->GetInteger( | 1180 const int showCount = profile->GetPrefs()->GetInteger( |
1171 prefs::kProfileAvatarTutorialShown); | 1181 prefs::kProfileAvatarTutorialShown); |
1172 // Do not show the tutorial if user has dismissed it. | 1182 // Do not show the tutorial if user has dismissed it. |
1173 if (showCount > kUpgradeWelcomeTutorialShowMax) | 1183 if (showCount > kUpgradeWelcomeTutorialShowMax) |
1174 return nil; | 1184 return nil; |
1175 | 1185 |
1176 if (tutorialMode_ != profiles::TUTORIAL_MODE_WELCOME_UPGRADE) { | 1186 if (tutorialMode_ != profiles::TUTORIAL_MODE_WELCOME_UPGRADE) { |
1177 if (showCount == kUpgradeWelcomeTutorialShowMax) | 1187 if (showCount == kUpgradeWelcomeTutorialShowMax) |
1178 return nil; | 1188 return nil; |
1179 profile->GetPrefs()->SetInteger( | 1189 profile->GetPrefs()->SetInteger( |
1180 prefs::kProfileAvatarTutorialShown, showCount + 1); | 1190 prefs::kProfileAvatarTutorialShown, showCount + 1); |
1181 } | 1191 } |
1182 | 1192 |
1183 NSString* titleMessage = l10n_util::GetNSStringF( | 1193 NSString* titleMessage = l10n_util::GetNSStringF( |
1184 IDS_PROFILES_WELCOME_UPGRADE_TUTORIAL_TITLE, avatarItem.name); | 1194 IDS_PROFILES_WELCOME_UPGRADE_TUTORIAL_TITLE, avatarItem.name); |
1185 NSString* contentMessage = l10n_util::GetNSString( | 1195 NSString* contentMessage = l10n_util::GetNSString( |
1186 IDS_PROFILES_WELCOME_UPGRADE_TUTORIAL_CONTENT_TEXT); | 1196 IDS_PROFILES_WELCOME_UPGRADE_TUTORIAL_CONTENT_TEXT); |
1187 // For local profiles, the "Not you" link doesn't make sense. | 1197 NSString* linkMessage = l10n_util::GetNSStringF( |
1188 NSString* linkMessage = avatarItem.signed_in ? | 1198 IDS_PROFILES_NOT_YOU, avatarItem.name); |
1189 l10n_util::GetNSStringF(IDS_PROFILES_NOT_YOU, avatarItem.name) : nil; | |
1190 NSString* buttonMessage = l10n_util::GetNSString( | 1199 NSString* buttonMessage = l10n_util::GetNSString( |
1191 IDS_PROFILES_TUTORIAL_WHATS_NEW_BUTTON); | 1200 IDS_PROFILES_TUTORIAL_WHATS_NEW_BUTTON); |
1192 return [self tutorialViewWithMode:profiles::TUTORIAL_MODE_WELCOME_UPGRADE | 1201 return [self tutorialViewWithMode:profiles::TUTORIAL_MODE_WELCOME_UPGRADE |
1193 titleMessage:titleMessage | 1202 titleMessage:titleMessage |
1194 contentMessage:contentMessage | 1203 contentMessage:contentMessage |
1195 linkMessage:linkMessage | 1204 linkMessage:linkMessage |
1196 buttonMessage:buttonMessage | 1205 buttonMessage:buttonMessage |
1197 linkAction:@selector(showSwitchUserView:) | 1206 linkAction:@selector(showSwitchUserView:) |
1198 buttonAction:@selector(seeWhatsNew:)]; | 1207 buttonAction:@selector(seeWhatsNew:)]; |
1199 } | 1208 } |
(...skipping 23 matching lines...) Expand all Loading... |
1223 [tutorialOkButton setTarget:self]; | 1232 [tutorialOkButton setTarget:self]; |
1224 [tutorialOkButton setAction:buttonAction]; | 1233 [tutorialOkButton setAction:buttonAction]; |
1225 [tutorialOkButton sizeToFit]; | 1234 [tutorialOkButton sizeToFit]; |
1226 NSSize buttonSize = [tutorialOkButton frame].size; | 1235 NSSize buttonSize = [tutorialOkButton frame].size; |
1227 const CGFloat kTopBottomTextPadding = 6; | 1236 const CGFloat kTopBottomTextPadding = 6; |
1228 const CGFloat kLeftRightTextPadding = 15; | 1237 const CGFloat kLeftRightTextPadding = 15; |
1229 buttonSize.width += 2 * kLeftRightTextPadding; | 1238 buttonSize.width += 2 * kLeftRightTextPadding; |
1230 buttonSize.height += 2 * kTopBottomTextPadding; | 1239 buttonSize.height += 2 * kTopBottomTextPadding; |
1231 [tutorialOkButton setFrameSize:buttonSize]; | 1240 [tutorialOkButton setFrameSize:buttonSize]; |
1232 [tutorialOkButton setAlignment:NSCenterTextAlignment]; | 1241 [tutorialOkButton setAlignment:NSCenterTextAlignment]; |
1233 | |
1234 [tutorialOkButton setFrameOrigin:NSMakePoint( | 1242 [tutorialOkButton setFrameOrigin:NSMakePoint( |
1235 kFixedMenuWidth - NSWidth([tutorialOkButton frame]) - kHorizontalSpacing, | 1243 kFixedMenuWidth - NSWidth([tutorialOkButton frame]) - kHorizontalSpacing, |
1236 yOffset)]; | 1244 yOffset)]; |
1237 [container addSubview:tutorialOkButton]; | 1245 [container addSubview:tutorialOkButton]; |
1238 | 1246 |
1239 if (linkMessage) { | 1247 NSButton* learnMoreLink = |
1240 NSButton* learnMoreLink = | 1248 [self linkButtonWithTitle:linkMessage |
1241 [self linkButtonWithTitle:linkMessage | 1249 frameOrigin:NSZeroPoint |
1242 frameOrigin:NSZeroPoint | 1250 action:linkAction]; |
1243 action:linkAction]; | 1251 [[learnMoreLink cell] setTextColor:[NSColor whiteColor]]; |
1244 [[learnMoreLink cell] setTextColor:[NSColor whiteColor]]; | 1252 CGFloat linkYOffset = yOffset + (NSHeight([tutorialOkButton frame]) - |
1245 CGFloat linkYOffset = yOffset + (NSHeight([tutorialOkButton frame]) - | 1253 NSHeight([learnMoreLink frame])) / 2; |
1246 NSHeight([learnMoreLink frame])) / 2; | 1254 [learnMoreLink setFrameOrigin:NSMakePoint(kHorizontalSpacing, linkYOffset)]; |
1247 [learnMoreLink setFrameOrigin:NSMakePoint(kHorizontalSpacing, linkYOffset)]; | 1255 [container addSubview:learnMoreLink]; |
1248 [container addSubview:learnMoreLink]; | 1256 |
1249 yOffset = std::max(NSMaxY([learnMoreLink frame]), | 1257 yOffset = std::max(NSMaxY([learnMoreLink frame]), |
1250 NSMaxY([tutorialOkButton frame])) + kVerticalSpacing; | 1258 NSMaxY([tutorialOkButton frame])) + kVerticalSpacing; |
1251 } else { | 1259 |
1252 yOffset = NSMaxY([tutorialOkButton frame]) + kVerticalSpacing; | |
1253 } | |
1254 // Adds body content. | 1260 // Adds body content. |
1255 NSTextField* contentLabel = BuildLabel( | 1261 NSTextField* contentLabel = BuildLabel( |
1256 contentMessage, | 1262 contentMessage, |
1257 NSMakePoint(kHorizontalSpacing, yOffset), | 1263 NSMakePoint(kHorizontalSpacing, yOffset), |
1258 gfx::SkColorToSRGBNSColor(profiles::kAvatarTutorialContentTextColor)); | 1264 gfx::SkColorToSRGBNSColor(profiles::kAvatarTutorialContentTextColor)); |
1259 [contentLabel setFrameSize:NSMakeSize(availableWidth, 0)]; | 1265 [contentLabel setFrameSize:NSMakeSize(availableWidth, 0)]; |
1260 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:contentLabel]; | 1266 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:contentLabel]; |
1261 [container addSubview:contentLabel]; | 1267 [container addSubview:contentLabel]; |
1262 yOffset = NSMaxY([contentLabel frame]) + kSmallVerticalSpacing; | 1268 yOffset = NSMaxY([contentLabel frame]) + kSmallVerticalSpacing; |
1263 | 1269 |
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1757 l10n_util::GetNSString(IDS_PROFILES_ACCOUNT_REMOVAL_TITLE), | 1763 l10n_util::GetNSString(IDS_PROFILES_ACCOUNT_REMOVAL_TITLE), |
1758 self /* backButtonTarget*/, | 1764 self /* backButtonTarget*/, |
1759 @selector(showAccountManagement:) /* backButtonAction */); | 1765 @selector(showAccountManagement:) /* backButtonAction */); |
1760 [container addSubview:titleView]; | 1766 [container addSubview:titleView]; |
1761 yOffset = NSMaxY([titleView frame]); | 1767 yOffset = NSMaxY([titleView frame]); |
1762 | 1768 |
1763 [container setFrameSize:NSMakeSize(kFixedAccountRemovalViewWidth, yOffset)]; | 1769 [container setFrameSize:NSMakeSize(kFixedAccountRemovalViewWidth, yOffset)]; |
1764 return container.autorelease(); | 1770 return container.autorelease(); |
1765 } | 1771 } |
1766 | 1772 |
| 1773 |
1767 - (NSView*)buildSwitchUserView { | 1774 - (NSView*)buildSwitchUserView { |
1768 base::scoped_nsobject<NSView> container( | 1775 base::scoped_nsobject<NSView> container( |
1769 [[NSView alloc] initWithFrame:NSZeroRect]); | 1776 [[NSView alloc] initWithFrame:NSZeroRect]); |
1770 CGFloat availableWidth = | 1777 CGFloat availableWidth = |
1771 kFixedSwitchUserViewWidth - 2 * kHorizontalSpacing; | 1778 kFixedSwitchUserViewWidth - 2 * kHorizontalSpacing; |
1772 CGFloat yOffset = 0; | 1779 CGFloat yOffset = 0; |
1773 NSRect viewRect = NSMakeRect(0, yOffset, | 1780 NSRect viewRect = NSMakeRect(0, yOffset, |
1774 kFixedSwitchUserViewWidth, | 1781 kFixedSwitchUserViewWidth, |
1775 kBlueButtonHeight + kSmallVerticalSpacing); | 1782 kBlueButtonHeight + kSmallVerticalSpacing); |
1776 | 1783 |
(...skipping 15 matching lines...) Expand all Loading... |
1792 [container addSubview:separator]; | 1799 [container addSubview:separator]; |
1793 yOffset = NSMaxY([separator frame]); | 1800 yOffset = NSMaxY([separator frame]); |
1794 | 1801 |
1795 // Adds "Add person" button. | 1802 // Adds "Add person" button. |
1796 viewRect.origin.y = yOffset; | 1803 viewRect.origin.y = yOffset; |
1797 NSButton* addPersonButton = | 1804 NSButton* addPersonButton = |
1798 [self hoverButtonWithRect:viewRect | 1805 [self hoverButtonWithRect:viewRect |
1799 text:l10n_util::GetNSString( | 1806 text:l10n_util::GetNSString( |
1800 IDS_PROFILES_ADD_PERSON_BUTTON) | 1807 IDS_PROFILES_ADD_PERSON_BUTTON) |
1801 imageResourceId:IDR_ICON_PROFILES_MENU_AVATAR | 1808 imageResourceId:IDR_ICON_PROFILES_MENU_AVATAR |
1802 action:@selector(showUserManager:)]; | 1809 action:@selector(addPerson:)]; |
1803 [container addSubview:addPersonButton]; | 1810 [container addSubview:addPersonButton]; |
1804 yOffset = NSMaxY([addPersonButton frame]); | 1811 yOffset = NSMaxY([addPersonButton frame]); |
1805 | 1812 |
1806 separator = [self horizontalSeparatorWithFrame: | 1813 separator = [self horizontalSeparatorWithFrame: |
1807 NSMakeRect(0, yOffset, kFixedMenuWidth, 0)]; | 1814 NSMakeRect(0, yOffset, kFixedMenuWidth, 0)]; |
1808 [container addSubview:separator]; | 1815 [container addSubview:separator]; |
1809 yOffset = NSMaxY([separator frame]); | 1816 yOffset = NSMaxY([separator frame]); |
1810 | 1817 |
1811 // Adds the content text. | 1818 // Adds the content text. |
1812 NSTextField* contentLabel = BuildLabel( | 1819 NSTextField* contentLabel = BuildLabel( |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1954 } | 1961 } |
1955 | 1962 |
1956 - (bool)shouldShowGoIncognito { | 1963 - (bool)shouldShowGoIncognito { |
1957 bool incognitoAvailable = | 1964 bool incognitoAvailable = |
1958 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) != | 1965 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) != |
1959 IncognitoModePrefs::DISABLED; | 1966 IncognitoModePrefs::DISABLED; |
1960 return incognitoAvailable && !browser_->profile()->IsGuestSession(); | 1967 return incognitoAvailable && !browser_->profile()->IsGuestSession(); |
1961 } | 1968 } |
1962 | 1969 |
1963 @end | 1970 @end |
OLD | NEW |