summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/app/generated_resources.grd3
-rw-r--r--chrome/browser/chromeos/login/network_selection_view.cc29
-rw-r--r--chrome/browser/chromeos/login/network_selection_view.h4
-rw-r--r--chrome/browser/language_combobox_model.cc11
-rw-r--r--chrome/browser/language_combobox_model.h8
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;