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

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

Issue 8230011: [Mac/multiprofile] "Customize User..." should edit the currently active profile (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 2 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/profile_menu_controller.h" 5 #import "chrome/browser/ui/cocoa/profile_menu_controller.h"
6 6
7 #include "base/sys_string_conversions.h" 7 #include "base/sys_string_conversions.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/profiles/avatar_menu_model.h" 9 #include "chrome/browser/profiles/avatar_menu_model.h"
10 #include "chrome/browser/profiles/avatar_menu_model_observer.h" 10 #include "chrome/browser/profiles/avatar_menu_model_observer.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 withObject:nil 76 withObject:nil
77 afterDelay:0]; 77 afterDelay:0];
78 } 78 }
79 return self; 79 return self;
80 } 80 }
81 81
82 - (IBAction)switchToProfile:(id)sender { 82 - (IBAction)switchToProfile:(id)sender {
83 model_->SwitchToProfile([sender tag]); 83 model_->SwitchToProfile([sender tag]);
84 } 84 }
85 85
86 - (IBAction)editCurrentProfile:(id)sender {
Robert Sesek 2011/10/11 14:23:13 I don't think you need a new selector. You can onl
jeremy 2011/10/19 13:15:24 Done.
87 model_->EditProfile(model_->GetActiveProfileIndex());
88 }
89
86 - (IBAction)editProfile:(id)sender { 90 - (IBAction)editProfile:(id)sender {
87 model_->EditProfile([sender tag]); 91 model_->EditProfile([sender tag]);
88 } 92 }
89 93
90 - (IBAction)newProfile:(id)sender { 94 - (IBAction)newProfile:(id)sender {
91 model_->AddNewProfile(); 95 model_->AddNewProfile();
92 } 96 }
93 97
94 // Private ///////////////////////////////////////////////////////////////////// 98 // Private /////////////////////////////////////////////////////////////////////
95 99
96 - (NSMenu*)menu { 100 - (NSMenu*)menu {
97 return [mainMenuItem_ submenu]; 101 return [mainMenuItem_ submenu];
98 } 102 }
99 103
100 - (void)initializeMenu { 104 - (void)initializeMenu {
101 observer_.reset(new ProfileMenuControllerInternal::Observer(self)); 105 observer_.reset(new ProfileMenuControllerInternal::Observer(self));
102 model_.reset(new AvatarMenuModel( 106 model_.reset(new AvatarMenuModel(
103 &g_browser_process->profile_manager()->GetProfileInfoCache(), 107 &g_browser_process->profile_manager()->GetProfileInfoCache(),
104 observer_.get(), 108 observer_.get(),
105 NULL)); 109 NULL));
106 110
107 [[self menu] addItem:[NSMenuItem separatorItem]]; 111 [[self menu] addItem:[NSMenuItem separatorItem]];
108 112
109 NSMenuItem* item = 113 NSMenuItem* item =
110 [self createItemWithTitle:l10n_util::GetNSStringWithFixup( 114 [self createItemWithTitle:l10n_util::GetNSStringWithFixup(
111 IDS_PROFILES_CUSTOMIZE_PROFILE) 115 IDS_PROFILES_CUSTOMIZE_PROFILE)
112 action:@selector(editProfile:)]; 116 action:@selector(editCurrentProfile:)];
113 [[self menu] addItem:item]; 117 [[self menu] addItem:item];
114 118
115 [[self menu] addItem:[NSMenuItem separatorItem]]; 119 [[self menu] addItem:[NSMenuItem separatorItem]];
116 item = [self createItemWithTitle:l10n_util::GetNSStringWithFixup( 120 item = [self createItemWithTitle:l10n_util::GetNSStringWithFixup(
117 IDS_PROFILES_CREATE_NEW_PROFILE_OPTION) 121 IDS_PROFILES_CREATE_NEW_PROFILE_OPTION)
118 action:@selector(newProfile:)]; 122 action:@selector(newProfile:)];
119 [[self menu] addItem:item]; 123 [[self menu] addItem:item];
120 124
121 [self rebuildMenu]; 125 [self rebuildMenu];
122 } 126 }
123 127
124 // Notifies the controller that the active browser has changed and that the 128 // Notifies the controller that the active browser has changed and that the
125 // menu item and menu need to be updated to reflect that. 129 // menu item and menu need to be updated to reflect that.
126 - (void)activeBrowserChangedTo:(Browser*)browser { 130 - (void)activeBrowserChangedTo:(Browser*)browser {
127 // Tell the model that the browser has changed. 131 // Tell the model that the browser has changed.
128 model_->set_browser(browser); 132 model_->set_browser(browser);
129 133
130 // Then find the profile to mark as active. 134 size_t active_profile_index = model_->GetActiveProfileIndex();
131 Profile* profile = NULL;
132 if (!browser)
133 profile = ProfileManager::GetLastUsedProfile();
134 else
135 profile = browser->profile();
136
137 ProfileInfoInterface& info =
138 g_browser_process->profile_manager()->GetProfileInfoCache();
139 size_t index = info.GetIndexOfProfileWithPath(profile->GetPath());
140 135
141 // Update the state for the menu items. 136 // Update the state for the menu items.
142 for (size_t i = 0; i < model_->GetNumberOfItems(); ++i) { 137 for (size_t i = 0; i < model_->GetNumberOfItems(); ++i) {
143 size_t tag = model_->GetItemAt(i).model_index; 138 size_t tag = model_->GetItemAt(i).model_index;
144 [[[self menu] itemWithTag:tag] setState:index == tag ? NSOnState 139 bool is_active = active_profile_index == tag;
Robert Sesek 2011/10/11 14:23:13 Use ObjC BOOL
jeremy 2011/10/19 13:15:24 Done.
145 : NSOffState]; 140 [[[self menu] itemWithTag:tag] setState:is_active ? NSOnState : NSOffState];
146 } 141 }
147 } 142 }
148 143
149 - (void)rebuildMenu { 144 - (void)rebuildMenu {
150 NSMenu* menu = [self menu]; 145 NSMenu* menu = [self menu];
151 146
152 for (NSMenuItem* item = [menu itemAtIndex:0]; 147 for (NSMenuItem* item = [menu itemAtIndex:0];
153 ![item isSeparatorItem]; 148 ![item isSeparatorItem];
154 item = [menu itemAtIndex:0]) { 149 item = [menu itemAtIndex:0]) {
155 [menu removeItemAtIndex:0]; 150 [menu removeItemAtIndex:0];
(...skipping 13 matching lines...) Expand all
169 } 164 }
170 165
171 - (NSMenuItem*)createItemWithTitle:(NSString*)title action:(SEL)sel { 166 - (NSMenuItem*)createItemWithTitle:(NSString*)title action:(SEL)sel {
172 scoped_nsobject<NSMenuItem> item( 167 scoped_nsobject<NSMenuItem> item(
173 [[NSMenuItem alloc] initWithTitle:title action:sel keyEquivalent:@""]); 168 [[NSMenuItem alloc] initWithTitle:title action:sel keyEquivalent:@""]);
174 [item setTarget:self]; 169 [item setTarget:self];
175 return [item.release() autorelease]; 170 return [item.release() autorelease];
176 } 171 }
177 172
178 @end 173 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698