diff options
author | beng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-26 23:55:50 +0000 |
---|---|---|
committer | beng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-26 23:55:50 +0000 |
commit | efc7057308ae81e69861d37aaca33b67d5187284 (patch) | |
tree | bd0a402b24e261f6c79b1ec867cc44920eef4829 /chrome | |
parent | a4258dbc75748725c3e6f12ccdd6f642c297d1db (diff) | |
download | chromium_src-efc7057308ae81e69861d37aaca33b67d5187284.zip chromium_src-efc7057308ae81e69861d37aaca33b67d5187284.tar.gz chromium_src-efc7057308ae81e69861d37aaca33b67d5187284.tar.bz2 |
Make the system menu for frames have submenus for encoding and text zoom
B=1031854
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1413 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/views/frame/browser_view2.cc | 47 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view2.h | 4 | ||||
-rw-r--r-- | chrome/views/menu.h | 2 |
3 files changed, 42 insertions, 11 deletions
diff --git a/chrome/browser/views/frame/browser_view2.cc b/chrome/browser/views/frame/browser_view2.cc index 85e1ae4..644bc8b 100644 --- a/chrome/browser/views/frame/browser_view2.cc +++ b/chrome/browser/views/frame/browser_view2.cc @@ -9,6 +9,7 @@ #include "chrome/browser/app_modal_dialog_queue.h" #include "chrome/browser/browser.h" #include "chrome/browser/browser_list.h" +#include "chrome/browser/encoding_menu_controller_delegate.h" #include "chrome/browser/tab_contents_container_view.h" #include "chrome/browser/tabs/tab_strip.h" #include "chrome/browser/view_ids.h" @@ -44,8 +45,8 @@ static const struct { bool separator; int command; int label; } kMenuLayout[] = { true, 0, 0 }, { false, IDC_TASKMANAGER, IDS_TASKMANAGER }, { true, 0, 0 }, - { false, 0, IDS_ENCODING }, - { false, 0, IDS_ZOOM }, + { false, IDC_ENCODING, IDS_ENCODING }, + { false, IDC_ZOOM, IDS_ZOOM }, { false, IDC_PRINT, IDS_PRINT }, { false, IDC_SAVEPAGE, IDS_SAVEPAGEAS }, { false, IDC_FIND, IDS_FIND_IN_PAGE }, @@ -227,6 +228,7 @@ void BrowserView2::PrepareToRunSystemMenu(HMENU menu) { void BrowserView2::SystemMenuEnded() { system_menu_.reset(); + encoding_menu_delegate_.reset(); } bool BrowserView2::SupportsWindowFeature(WindowFeature feature) const { @@ -1020,21 +1022,44 @@ void BrowserView2::LoadAccelerators() { void BrowserView2::BuildMenuForTabStriplessWindow(Menu* menu, int insertion_index) { + encoding_menu_delegate_.reset(new EncodingMenuControllerDelegate( + browser_.get(), + browser_->controller())); + for (int i = 0; i < arraysize(kMenuLayout); ++i) { if (kMenuLayout[i].separator) { menu->AddSeparator(insertion_index); } else { int command = kMenuLayout[i].command; - - menu->AddMenuItemWithLabel(insertion_index, command, - l10n_util::GetString(kMenuLayout[i].label)); - - // |command| can be zero on submenu items (IDS_ENCODING, - // IDS_ZOOM) and on separators. - if (command != 0) { - menu->EnableMenuItemAt( + if (command == IDC_ENCODING) { + Menu* encoding_menu = menu->AddSubMenu( insertion_index, - browser_->IsCommandEnabled(command)); + IDC_ENCODING, + l10n_util::GetString(IDS_ENCODING)); + encoding_menu->set_delegate(encoding_menu_delegate_.get()); + EncodingMenuControllerDelegate::BuildEncodingMenu(browser_->profile(), + encoding_menu); + } else if (command == IDC_ZOOM) { + Menu* zoom_menu = menu->AddSubMenu(insertion_index, IDC_ZOOM, + l10n_util::GetString(IDS_ZOOM)); + zoom_menu->AppendMenuItemWithLabel( + IDC_ZOOM_PLUS, + l10n_util::GetString(IDS_ZOOM_PLUS)); + zoom_menu->AppendMenuItemWithLabel( + IDC_ZOOM_NORMAL, + l10n_util::GetString(IDS_ZOOM_NORMAL)); + zoom_menu->AppendMenuItemWithLabel( + IDC_ZOOM_MINUS, + l10n_util::GetString(IDS_ZOOM_MINUS)); + } else { + menu->AddMenuItemWithLabel(insertion_index, command, + l10n_util::GetString(kMenuLayout[i].label)); + // |command| can be zero on submenu items (IDS_ENCODING, + // IDS_ZOOM) and on separators. + if (command != 0) { + menu->EnableMenuItemAt(insertion_index, + browser_->IsCommandEnabled(command)); + } } } } diff --git a/chrome/browser/views/frame/browser_view2.h b/chrome/browser/views/frame/browser_view2.h index 07ee529..40b4a4c 100644 --- a/chrome/browser/views/frame/browser_view2.h +++ b/chrome/browser/views/frame/browser_view2.h @@ -19,6 +19,7 @@ class BookmarkBarView; class Browser; class BrowserToolbarView; +class EncodingMenuControllerDelegate; class Menu; class StatusBubble; class TabContentsContainerView; @@ -342,6 +343,9 @@ class BrowserView2 : public BrowserWindow, // The OTR avatar image. static SkBitmap otr_avatar_; + // The delegate for the encoding menu. + scoped_ptr<EncodingMenuControllerDelegate> encoding_menu_delegate_; + DISALLOW_EVIL_CONSTRUCTORS(BrowserView2); }; diff --git a/chrome/views/menu.h b/chrome/views/menu.h index ab70766..a1a4d02 100644 --- a/chrome/views/menu.h +++ b/chrome/views/menu.h @@ -203,6 +203,8 @@ class Menu { explicit Menu(HMENU hmenu); virtual ~Menu(); + void set_delegate(Delegate* delegate) { delegate_ = delegate; } + // Adds an item to this menu. // item_id The id of the item, used to identify it in delegate callbacks // or (if delegate is NULL) to identify the command associated |