Home | History | Annotate | Download | only in cocoa
      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 AvatarMenuModel;
     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 model for the profile submenu.
     25   scoped_ptr<AvatarMenuModel> model_;
     26 
     27   // An observer to be notified when the active browser changes and when the
     28   // 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