summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrhashimoto@chromium.org <rhashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-14 18:33:19 +0000
committerrhashimoto@chromium.org <rhashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-14 18:33:19 +0000
commit740379aebc5c3368b63af4ef8f8d3214aa0eb1cb (patch)
tree07793b7787d8b00f47772d0a5b5c52e25cd1d0db
parent85dcdc462962f43ae83fca238e20c36f582923e9 (diff)
downloadchromium_src-740379aebc5c3368b63af4ef8f8d3214aa0eb1cb.zip
chromium_src-740379aebc5c3368b63af4ef8f8d3214aa0eb1cb.tar.gz
chromium_src-740379aebc5c3368b63af4ef8f8d3214aa0eb1cb.tar.bz2
Convert LanguageSwitchMenu from Menu2 to MenuItemView.
This conversion is part of GTK removal required. BUG=chromium-os:13887 TEST=none Review URL: http://codereview.chromium.org/6982054 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89033 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/login/language_switch_menu.cc76
-rw-r--r--chrome/browser/chromeos/login/language_switch_menu.h31
-rw-r--r--chrome/browser/chromeos/login/views_network_screen_actor.cc1
3 files changed, 47 insertions, 61 deletions
diff --git a/chrome/browser/chromeos/login/language_switch_menu.cc b/chrome/browser/chromeos/login/language_switch_menu.cc
index 2625703..f8499a6 100644
--- a/chrome/browser/chromeos/login/language_switch_menu.cc
+++ b/chrome/browser/chromeos/login/language_switch_menu.cc
@@ -21,7 +21,10 @@
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/platform_font_gtk.h"
#include "views/controls/button/menu_button.h"
+#include "views/controls/menu/menu_item_view.h"
+#include "views/controls/menu/submenu_view.h"
#include "views/widget/widget.h"
+#include "views/window/window.h"
namespace {
@@ -35,9 +38,7 @@ const int kMoreLanguagesSubMenu = 200;
namespace chromeos {
LanguageSwitchMenu::LanguageSwitchMenu()
- : ALLOW_THIS_IN_INITIALIZER_LIST(menu_model_(this)),
- ALLOW_THIS_IN_INITIALIZER_LIST(menu_model_submenu_(this)),
- menu_alignment_(views::Menu2::ALIGN_TOPRIGHT) {
+ : ALLOW_THIS_IN_INITIALIZER_LIST(menu_(new views::MenuItemView(this))) {
}
LanguageSwitchMenu::~LanguageSwitchMenu() {}
@@ -48,25 +49,32 @@ void LanguageSwitchMenu::InitLanguageMenu() {
language_list_->CopySpecifiedLanguagesUp(kLanguagesTopped);
// Clear older menu items.
- menu_model_.Clear();
- menu_model_submenu_.Clear();
+ if (menu_->HasSubmenu()) {
+ const int old_count = menu_->GetSubmenu()->child_count();
+ for (int i = 0; i < old_count; ++i)
+ menu_->RemoveMenuItemAt(0);
+ }
// Fill menu items with updated items.
for (int line = 0; line != kLanguageMainMenuSize; line++) {
- menu_model_.AddItem(line, language_list_->GetLanguageNameAt(line));
+ menu_->AppendMenuItemWithLabel(
+ line,
+ UTF16ToWide(language_list_->GetLanguageNameAt(line)));
}
- menu_model_.AddSeparator();
- menu_model_.AddSubMenuWithStringId(kMoreLanguagesSubMenu,
- IDS_LANGUAGES_MORE,
- &menu_model_submenu_);
+
+ menu_->AppendSeparator();
+ views::MenuItemView* submenu = menu_->AppendSubMenu(
+ kMoreLanguagesSubMenu,
+ UTF16ToWide(l10n_util::GetStringUTF16(IDS_LANGUAGES_MORE)));
+
for (int line = kLanguageMainMenuSize;
line != language_list_->get_languages_count(); line++) {
- menu_model_submenu_.AddItem(
- line, language_list_->GetLanguageNameAt(line));
+ submenu->AppendMenuItemWithLabel(
+ line,
+ UTF16ToWide(language_list_->GetLanguageNameAt(line)));
}
- // Initialize menu here so it appears fast when called.
- menu_.reset(new views::Menu2(&menu_model_));
+ menu_->ChildrenChanged();
}
string16 LanguageSwitchMenu::GetCurrentLocaleName() const {
@@ -79,7 +87,8 @@ string16 LanguageSwitchMenu::GetCurrentLocaleName() const {
void LanguageSwitchMenu::SetFirstLevelMenuWidth(int width) {
DCHECK(menu_ != NULL);
- menu_->SetMinimumWidth(width);
+
+ menu_->GetSubmenu()->set_minimum_preferred_width(width);
}
// static
@@ -151,34 +160,23 @@ void LanguageSwitchMenu::SwitchLanguageAndEnableKeyboardLayouts(
void LanguageSwitchMenu::RunMenu(views::View* source, const gfx::Point& pt) {
DCHECK(menu_ != NULL);
views::MenuButton* button = static_cast<views::MenuButton*>(source);
- // We align the on left edge of the button for non RTL case.
- gfx::Point new_pt(pt);
- if (menu_alignment_ == views::Menu2::ALIGN_TOPLEFT) {
- int reverse_offset = button->width() + button->menu_offset().x() * 2;
- if (base::i18n::IsRTL()) {
- new_pt.set_x(pt.x() + reverse_offset);
- } else {
- new_pt.set_x(pt.x() - reverse_offset);
- }
- }
- menu_->RunMenuAt(new_pt, menu_alignment_);
-}
-////////////////////////////////////////////////////////////////////////////////
-// ui::SimpleMenuModel::Delegate implementation.
-
-bool LanguageSwitchMenu::IsCommandIdChecked(int command_id) const {
- return false;
-}
+ // We align on the left edge of the button for non RTL case.
+ // MenuButton passes in pt the lower left corner for RTL and the
+ // lower right corner for non-RTL (with menu_offset applied).
+ const int reverse_offset = button->width() + button->menu_offset().x() * 2;
+ gfx::Point new_pt(pt);
+ if (base::i18n::IsRTL())
+ new_pt.set_x(pt.x() + reverse_offset);
+ else
+ new_pt.set_x(pt.x() - reverse_offset);
-bool LanguageSwitchMenu::IsCommandIdEnabled(int command_id) const {
- return true;
+ menu_->RunMenuAt(button->GetWidget()->GetNativeWindow(), button,
+ gfx::Rect(new_pt, gfx::Size()), views::MenuItemView::TOPLEFT, true);
}
-bool LanguageSwitchMenu::GetAcceleratorForCommandId(
- int command_id, ui::Accelerator* accelerator) {
- return false;
-}
+////////////////////////////////////////////////////////////////////////////////
+// views::MenuDelegate implementation.
void LanguageSwitchMenu::ExecuteCommand(int command_id) {
const std::string locale = language_list_->GetLocaleFromIndex(command_id);
diff --git a/chrome/browser/chromeos/login/language_switch_menu.h b/chrome/browser/chromeos/login/language_switch_menu.h
index 39c6c38..8920a7e 100644
--- a/chrome/browser/chromeos/login/language_switch_menu.h
+++ b/chrome/browser/chromeos/login/language_switch_menu.h
@@ -11,19 +11,22 @@
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/language_combobox_model.h"
#include "testing/gtest/include/gtest/gtest_prod.h"
-#include "ui/base/models/simple_menu_model.h"
-#include "views/controls/menu/menu_2.h"
+#include "views/controls/menu/menu_delegate.h"
#include "views/controls/menu/view_menu_delegate.h"
#include "views/view.h"
class WizardControllerTest_SwitchLanguage_Test;
+namespace views {
+class MenuItemView;
+} // namespace views
+
namespace chromeos {
class ScreenObserver;
class LanguageSwitchMenu : public views::ViewMenuDelegate,
- public ui::SimpleMenuModel::Delegate {
+ public views::MenuDelegate {
public:
LanguageSwitchMenu();
virtual ~LanguageSwitchMenu();
@@ -31,11 +34,6 @@ class LanguageSwitchMenu : public views::ViewMenuDelegate,
// Initializes language selection menu contents.
void InitLanguageMenu();
- // Sets menu's alignment.
- void set_menu_alignment(views::Menu2::Alignment alignment) {
- menu_alignment_ = alignment;
- }
-
// Returns current locale name to be placed on the language menu-button.
string16 GetCurrentLocaleName() const;
@@ -55,26 +53,17 @@ class LanguageSwitchMenu : public views::ViewMenuDelegate,
static void LoadFontsForCurrentLocale();
// views::ViewMenuDelegate implementation.
- virtual void RunMenu(views::View* source, const gfx::Point& pt);
+ virtual void RunMenu(views::View* source, const gfx::Point& pt) OVERRIDE;
- // ui::SimpleMenuModel::Delegate implementation.
- virtual bool IsCommandIdChecked(int command_id) const;
- virtual bool IsCommandIdEnabled(int command_id) const;
- virtual bool GetAcceleratorForCommandId(int command_id,
- ui::Accelerator* accelerator);
- virtual void ExecuteCommand(int command_id);
+ // views::MenuDelegate implementation.
+ virtual void ExecuteCommand(int command_id) OVERRIDE;
// Dialog controls that we own ourselves.
- ui::SimpleMenuModel menu_model_;
- ui::SimpleMenuModel menu_model_submenu_;
- scoped_ptr<views::Menu2> menu_;
+ scoped_ptr<views::MenuItemView> menu_;
// Language locale name storage.
scoped_ptr<LanguageList> language_list_;
- // Menu alignment.
- views::Menu2::Alignment menu_alignment_;
-
FRIEND_TEST(::WizardControllerTest, SwitchLanguage);
DISALLOW_COPY_AND_ASSIGN(LanguageSwitchMenu);
};
diff --git a/chrome/browser/chromeos/login/views_network_screen_actor.cc b/chrome/browser/chromeos/login/views_network_screen_actor.cc
index 3194652..2f6172a 100644
--- a/chrome/browser/chromeos/login/views_network_screen_actor.cc
+++ b/chrome/browser/chromeos/login/views_network_screen_actor.cc
@@ -44,7 +44,6 @@ ViewsNetworkScreenActor::ViewsNetworkScreenActor(
kWelcomeScreenHeight),
bubble_(NULL),
screen_(NULL) {
- language_switch_menu_.set_menu_alignment(views::Menu2::ALIGN_TOPLEFT);
}
ViewsNetworkScreenActor::~ViewsNetworkScreenActor() {