diff options
author | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-23 23:18:50 +0000 |
---|---|---|
committer | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-23 23:18:50 +0000 |
commit | 4232100ca0d42e558e75a728b69abca4b28499bf (patch) | |
tree | e736db46d06de1f65d6aa92ccc119ab067927770 /chrome/browser/cocoa/toolbar_controller.mm | |
parent | 7303999ef7654bbb633e901717fedcc31afca4fe (diff) | |
download | chromium_src-4232100ca0d42e558e75a728b69abca4b28499bf.zip chromium_src-4232100ca0d42e558e75a728b69abca4b28499bf.tar.gz chromium_src-4232100ca0d42e558e75a728b69abca4b28499bf.tar.bz2 |
Clean up the WrenchMenuModel so that it uses SimpleMenu::Delegate.
This removes copy-pasted code in each platform implementation.
BUG=47320
TEST=compiles
Review URL: http://codereview.chromium.org/3163023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57119 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/toolbar_controller.mm')
-rw-r--r-- | chrome/browser/cocoa/toolbar_controller.mm | 49 |
1 files changed, 7 insertions, 42 deletions
diff --git a/chrome/browser/cocoa/toolbar_controller.mm b/chrome/browser/cocoa/toolbar_controller.mm index 57b0e38..b100b56 100644 --- a/chrome/browser/cocoa/toolbar_controller.mm +++ b/chrome/browser/cocoa/toolbar_controller.mm @@ -95,24 +95,9 @@ const CGFloat kWrenchMenuLeftPadding = 3.0; namespace ToolbarControllerInternal { -// A C++ delegate that handles enabling/disabling menu items and handling when -// a menu command is chosen. -class MenuDelegate : public menus::SimpleMenuModel::Delegate { +// A C++ delegate that handles the accelerators in the wrench menu. +class WrenchAcceleratorDelegate : public menus::AcceleratorProvider { public: - explicit MenuDelegate(Browser* browser) - : browser_(browser) { } - - // Overridden from menus::SimpleMenuModel::Delegate - virtual bool IsCommandIdChecked(int command_id) const { - if (command_id == IDC_SHOW_BOOKMARK_BAR) { - return browser_->profile()->GetPrefs()->GetBoolean( - prefs::kShowBookmarkBar); - } - return false; - } - virtual bool IsCommandIdEnabled(int command_id) const { - return browser_->command_updater()->IsCommandEnabled(command_id); - } virtual bool GetAcceleratorForCommandId(int command_id, menus::Accelerator* accelerator_generic) { // Downcast so that when the copy constructor is invoked below, the key @@ -128,26 +113,6 @@ class MenuDelegate : public menus::SimpleMenuModel::Delegate { } return false; } - virtual void ExecuteCommand(int command_id) { - browser_->ExecuteCommand(command_id); - } - virtual bool IsLabelForCommandIdDynamic(int command_id) const { - // On Mac, switch between "Enter Full Screen" and "Exit Full Screen". - return (command_id == IDC_FULLSCREEN); - } - virtual string16 GetLabelForCommandId(int command_id) const { - if (command_id == IDC_FULLSCREEN) { - int string_id = IDS_ENTER_FULLSCREEN_MAC; // Default to Enter. - // Note: On startup, |window()| may be NULL. - if (browser_->window() && browser_->window()->IsFullscreen()) - string_id = IDS_EXIT_FULLSCREEN_MAC; - return l10n_util::GetStringUTF16(string_id); - } - return menus::SimpleMenuModel::Delegate::GetLabelForCommandId(command_id); - } - - private: - Browser* browser_; }; // A class registered for C++ notifications. This is used to detect changes in @@ -547,10 +512,12 @@ class NotificationBridge : public NotificationObserver { - (void)installWrenchMenu { if (wrenchMenuModel_.get()) return; - menuDelegate_.reset(new ToolbarControllerInternal::MenuDelegate(browser_)); + acceleratorDelegate_.reset( + new ToolbarControllerInternal::WrenchAcceleratorDelegate()); - wrenchMenuModel_.reset(new WrenchMenuModel(menuDelegate_.get(), browser_)); - [wrenchMenuController_ setModel:wrenchMenuModel_.get()]; + wrenchMenuModel_.reset(new WrenchMenuModel( + acceleratorDelegate_.get(), browser_)); + [wrenchMenuController_ setWrenchMenuModel:wrenchMenuModel_.get()]; [wrenchMenuController_ setUseWithPopUpButtonCell:YES]; [wrenchButton_ setAttachedMenu:[wrenchMenuController_ menu]]; } @@ -578,8 +545,6 @@ class NotificationBridge : public NotificationObserver { [overlayImage unlockFocus]; [[wrenchButton_ cell] setOverlayImage:overlayImage]; - - [wrenchMenuController_ insertUpdateAvailableItem]; } - (void)prefChanged:(std::string*)prefName { |