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_CHROMEOS_LOGIN_LANGUAGE_SWITCH_MENU_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_LANGUAGE_SWITCH_MENU_H_ 7#pragma once 8 9#include <string> 10 11#include "base/memory/scoped_ptr.h" 12#include "chrome/browser/language_combobox_model.h" 13#include "testing/gtest/include/gtest/gtest_prod.h" 14#include "ui/base/models/simple_menu_model.h" 15#include "views/controls/menu/menu_2.h" 16#include "views/controls/menu/view_menu_delegate.h" 17#include "views/view.h" 18 19class WizardControllerTest_SwitchLanguage_Test; 20 21namespace chromeos { 22 23class ScreenObserver; 24 25class LanguageSwitchMenu : public views::ViewMenuDelegate, 26 public ui::SimpleMenuModel::Delegate { 27 public: 28 LanguageSwitchMenu(); 29 30 // Initializes language selection menu contents. 31 void InitLanguageMenu(); 32 33 // Sets menu's alignment. 34 void set_menu_alignment(views::Menu2::Alignment alignment) { 35 menu_alignment_ = alignment; 36 } 37 38 // Returns current locale name to be placed on the language menu-button. 39 string16 GetCurrentLocaleName() const; 40 41 // Sets the minimum width of the first level menu to be shown. 42 void SetFirstLevelMenuWidth(int width); 43 44 // Switches the current locale, saves the new locale in preferences. 45 // Returns true if it has switched the current locale. 46 static bool SwitchLanguage(const std::string& locale); 47 48 // Switches the current locale, saves the new locale in preferences. 49 // Enables the keyboard layouts associated with the new locale. 50 static void SwitchLanguageAndEnableKeyboardLayouts( 51 const std::string& locale); 52 53 private: 54 static void LoadFontsForCurrentLocale(); 55 56 // views::ViewMenuDelegate implementation. 57 virtual void RunMenu(views::View* source, const gfx::Point& pt); 58 59 // ui::SimpleMenuModel::Delegate implementation. 60 virtual bool IsCommandIdChecked(int command_id) const; 61 virtual bool IsCommandIdEnabled(int command_id) const; 62 virtual bool GetAcceleratorForCommandId(int command_id, 63 ui::Accelerator* accelerator); 64 virtual void ExecuteCommand(int command_id); 65 66 // Dialog controls that we own ourselves. 67 ui::SimpleMenuModel menu_model_; 68 ui::SimpleMenuModel menu_model_submenu_; 69 scoped_ptr<views::Menu2> menu_; 70 71 // Language locale name storage. 72 scoped_ptr<LanguageList> language_list_; 73 74 // Menu alignment. 75 views::Menu2::Alignment menu_alignment_; 76 77 FRIEND_TEST(::WizardControllerTest, SwitchLanguage); 78 DISALLOW_COPY_AND_ASSIGN(LanguageSwitchMenu); 79}; 80 81} // namespace chromeos 82 83#endif // CHROME_BROWSER_CHROMEOS_LOGIN_LANGUAGE_SWITCH_MENU_H_ 84