diff options
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/app/generated_resources.grd | 3 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/network_selection_view.cc | 29 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/network_selection_view.h | 4 | ||||
-rw-r--r-- | chrome/browser/language_combobox_model.cc | 11 | ||||
-rw-r--r-- | chrome/browser/language_combobox_model.h | 8 |
5 files changed, 48 insertions, 7 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index a413ce4..2fd7554 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -7001,6 +7001,9 @@ Keep your key file in a safe place. You will need it to create new versions of y <message name="IDS_NOTIFICATION_PANEL_TITLE" desc="Text for the title of the notification panel."> Notifications </message> + <message name="IDS_LANGUAGES_MORE" desc="Main language list 'more' link. Expands all possible languages, not only the main ones."> + More... + </message> </if> <message name="IDS_BOOKMARK_BAR_IMPORT_LINK" desc="text shown for importing "> Import bookmarks now... diff --git a/chrome/browser/chromeos/login/network_selection_view.cc b/chrome/browser/chromeos/login/network_selection_view.cc index 659228d..409ffde 100644 --- a/chrome/browser/chromeos/login/network_selection_view.cc +++ b/chrome/browser/chromeos/login/network_selection_view.cc @@ -40,6 +40,7 @@ const int kNetworkComboboxHeight = 30; const int kLanguagesMenuWidth = 200; const int kLanguagesMenuHeight = 30; const SkColor kWelcomeColor = 0x0054A4; +const int kLanguageMainMenuSize = 5; } // namespace @@ -54,6 +55,9 @@ NetworkSelectionView::NetworkSelectionView(ScreenObserver* observer) connecting_network_label_(NULL), observer_(observer), network_notification_(false) { + // TODO(glotov): need to specify the following list as a part of the + // image customization. + languages_model_.CopySpecifiedLanguagesUp("es,it,de,fr,en-US"); } NetworkSelectionView::~NetworkSelectionView() { @@ -87,11 +91,9 @@ void NetworkSelectionView::Init() { network_combobox_ = new views::Combobox(this); network_combobox_->set_listener(this); - languages_menubutton_ = new views::MenuButton(NULL, std::wstring(), - this, true); - for (int i = 0; i < languages_model_.get_languages_count(); i++) { - AddItem(i, WideToUTF16(languages_model_.GetLanguageNameAt(i))); - } + languages_menubutton_ = new views::MenuButton( + NULL, std::wstring(), this, true); + InitLanguageMenu(); offline_button_ = new views::NativeButton(this, std::wstring()); offline_button_->set_font(button_font); @@ -107,6 +109,23 @@ void NetworkSelectionView::Init() { AddChildView(offline_button_); } +void NetworkSelectionView::InitLanguageMenu() { + int line = 0; + while (line != kLanguageMainMenuSize) { + AddItem(line, WideToUTF16(languages_model_.GetLanguageNameAt(line))); + line++; + } + AddSeparator(); + languages_submenu_.reset(new menus::SimpleMenuModel(this)); + AddSubMenu(WideToUTF16(l10n_util::GetString(IDS_LANGUAGES_MORE)), + languages_submenu_.get()); + while (line != languages_model_.get_languages_count()) { + languages_submenu_->AddItem( + line, WideToUTF16(languages_model_.GetLanguageNameAt(line))); + line++; + } +} + void NetworkSelectionView::UpdateLocalizedStrings() { const std::string locale = g_browser_process->GetApplicationLocale(); const std::wstring locale_name = languages_model_.GetLanguageNameAt( diff --git a/chrome/browser/chromeos/login/network_selection_view.h b/chrome/browser/chromeos/login/network_selection_view.h index 3f922fb..9c86fe7 100644 --- a/chrome/browser/chromeos/login/network_selection_view.h +++ b/chrome/browser/chromeos/login/network_selection_view.h @@ -105,6 +105,9 @@ class NetworkSelectionView : public views::View, // Subscribe/unsubscribes from network change notification. void ChangeNetworkNotification(bool subscribe); + // Initializes language selection menues contents. + void InitLanguageMenu(); + // Dialog controls. views::Combobox* network_combobox_; views::MenuButton* languages_menubutton_; @@ -115,6 +118,7 @@ class NetworkSelectionView : public views::View, // Dialog controls that we own ourself. scoped_ptr<views::Menu2> languages_menu_; + scoped_ptr<menus::SimpleMenuModel> languages_submenu_; // Language locale name storage. LanguageList languages_model_; diff --git a/chrome/browser/language_combobox_model.cc b/chrome/browser/language_combobox_model.cc index 03d31a5..95d9598 100644 --- a/chrome/browser/language_combobox_model.cc +++ b/chrome/browser/language_combobox_model.cc @@ -54,6 +54,17 @@ void LanguageList::InitNativeNames( &locale_names_); } +void LanguageList::CopySpecifiedLanguagesUp(const std::string& locale_codes) { + DCHECK(!locale_names_.empty()); + std::vector<std::string> locale_codes_vector; + SplitString(locale_codes, ',', &locale_codes_vector); + for (size_t i = 0; i != locale_codes_vector.size(); i++) { + const int locale_index = GetIndexFromLocale(locale_codes_vector[i]); + CHECK_NE(locale_index, -1); + locale_names_.insert(locale_names_.begin(), locale_names_[locale_index]); + } +} + // Overridden from ComboboxModel: int LanguageList::get_languages_count() const { return static_cast<int>(locale_names_.size()); diff --git a/chrome/browser/language_combobox_model.h b/chrome/browser/language_combobox_model.h index 8a58d0e..38fab4e1 100644 --- a/chrome/browser/language_combobox_model.h +++ b/chrome/browser/language_combobox_model.h @@ -34,9 +34,13 @@ class LanguageList { virtual ~LanguageList() {} - virtual int get_languages_count() const; + // Duplicates specified languages at the beginning of the list for + // easier access. + void CopySpecifiedLanguagesUp(const std::string& locale_codes); - virtual std::wstring GetLanguageNameAt(int index) const; + int get_languages_count() const; + + std::wstring GetLanguageNameAt(int index) const; // Return the locale for the given index. E.g., may return pt-BR. std::string GetLocaleFromIndex(int index) const; |