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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_UI_COCOA_PROFILE_MENU_CONTROLLER_H_ 6 #define CHROME_BROWSER_UI_COCOA_PROFILE_MENU_CONTROLLER_H_ 7 8 #import <Cocoa/Cocoa.h> 9 10 #include "base/memory/scoped_ptr.h" 11 12 class AvatarMenu; 13 class Browser; 14 15 namespace ProfileMenuControllerInternal { 16 class Observer; 17 } 18 19 // This controller manages the title and submenu of the Profiles item in the 20 // system menu bar. It updates the contents of the menu and the menu's title 21 // whenever the active browser changes. 22 @interface ProfileMenuController : NSObject { 23 @private 24 // The controller for the profile submenu. 25 scoped_ptr<AvatarMenu> menu_; 26 27 // An observer to be notified when the active browser changes and when the 28 // menu model changes. 29 scoped_ptr<ProfileMenuControllerInternal::Observer> observer_; 30 31 // The main menu item to which the profile menu is attached. 32 __weak NSMenuItem* mainMenuItem_; 33 } 34 35 // Designated initializer. 36 - (id)initWithMainMenuItem:(NSMenuItem*)item; 37 38 // Actions for the menu items. 39 - (IBAction)switchToProfileFromMenu:(id)sender; 40 - (IBAction)switchToProfileFromDock:(id)sender; 41 - (IBAction)editProfile:(id)sender; 42 - (IBAction)newProfile:(id)sender; 43 44 // If profiles are enabled and there is more than one profile, this inserts 45 // profile menu items into the specified menu at the specified offset and 46 // returns YES. Otherwise, this returns NO and does not modify the menu. 47 - (BOOL)insertItemsIntoMenu:(NSMenu*)menu 48 atOffset:(NSInteger)offset 49 fromDock:(BOOL)dock; 50 51 @end 52 53 @interface ProfileMenuController (PrivateExposedForTesting) 54 - (NSMenu*)menu; 55 - (void)rebuildMenu; 56 - (NSMenuItem*)createItemWithTitle:(NSString*)title action:(SEL)sel; 57 - (void)activeBrowserChangedTo:(Browser*)browser; 58 @end 59 60 #endif // CHROME_BROWSER_UI_COCOA_PROFILE_MENU_CONTROLLER_H_ 61