| Index: chrome/browser/chromeos/options/system_page_view.cc
|
| diff --git a/chrome/browser/chromeos/options/system_page_view.cc b/chrome/browser/chromeos/options/system_page_view.cc
|
| index f074889ac56c4c760768e362bec33695a857006e..e4a97d52e8de18d9b1fc2ccdcd4236d539fd27ec 100644
|
| --- a/chrome/browser/chromeos/options/system_page_view.cc
|
| +++ b/chrome/browser/chromeos/options/system_page_view.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/browser/chromeos/cros/cros_library.h"
|
| #include "chrome/browser/chromeos/cros/system_library.h"
|
| +#include "chrome/browser/chromeos/options/language_config_util.h"
|
| #include "chrome/browser/chromeos/options/language_config_view.h"
|
| #include "chrome/browser/chromeos/options/options_window_view.h"
|
| #include "chrome/browser/pref_member.h"
|
| @@ -349,7 +350,8 @@ void TouchpadSection::NotifyPrefChanged(const std::wstring* pref_name) {
|
|
|
| // TextInput section for text input settings.
|
| class LanguageSection : public SettingsPageSection,
|
| - public views::ButtonListener {
|
| + public views::ButtonListener,
|
| + public views::Combobox::Listener {
|
| public:
|
| explicit LanguageSection(Profile* profile);
|
| virtual ~LanguageSection() {}
|
| @@ -360,28 +362,49 @@ class LanguageSection : public SettingsPageSection,
|
| };
|
| // Overridden from SettingsPageSection:
|
| virtual void InitContents(GridLayout* layout);
|
| + void NotifyPrefChanged(const std::wstring* pref_name);
|
|
|
| // Overridden from views::ButtonListener:
|
| virtual void ButtonPressed(views::Button* sender,
|
| const views::Event& event);
|
|
|
| + // Overridden from views::Combobox::Listener:
|
| + virtual void ItemChanged(views::Combobox* sender,
|
| + int prev_index,
|
| + int new_index);
|
| +
|
| + IntegerPrefMember xkb_pref_;
|
| + views::Combobox* xkb_modifier_combobox_;
|
| + chromeos::LanguageComboboxModel<int> xkb_modifier_combobox_model_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(LanguageSection);
|
| };
|
|
|
| LanguageSection::LanguageSection(Profile* profile)
|
| : SettingsPageSection(profile,
|
| - IDS_OPTIONS_SETTINGS_SECTION_TITLE_LANGUAGE) {
|
| + IDS_OPTIONS_SETTINGS_SECTION_TITLE_LANGUAGE),
|
| + xkb_modifier_combobox_(NULL),
|
| + xkb_modifier_combobox_model_(&kXkbModifierMultipleChoicePrefs) {
|
| + xkb_pref_.Init(prefs::kLanguageXkbModifierRemap, profile->GetPrefs(), this);
|
| }
|
|
|
| void LanguageSection::InitContents(GridLayout* layout) {
|
| - // Add the customize button.
|
| - layout->StartRow(0, single_column_view_set_id());
|
| + // Add the customize button and XKB combobox.
|
| + layout->StartRow(0, double_column_view_set_id());
|
| views::NativeButton* customize_languages_button = new views::NativeButton(
|
| this,
|
| l10n_util::GetString(IDS_OPTIONS_SETTINGS_LANGUAGES_CUSTOMIZE));
|
| customize_languages_button->set_tag(kCustomizeLanguagesButton);
|
| layout->AddView(customize_languages_button, 1, 1,
|
| GridLayout::LEADING, GridLayout::CENTER);
|
| +
|
| + xkb_modifier_combobox_ = new views::Combobox(&xkb_modifier_combobox_model_);
|
| + xkb_modifier_combobox_->set_listener(this);
|
| + // Initialize the combobox to what's saved in user preferences. Otherwise,
|
| + // ItemChanged() will be called with |new_index| == 0.
|
| + NotifyPrefChanged(NULL);
|
| +
|
| + layout->AddView(xkb_modifier_combobox_);
|
| layout->AddPaddingRow(0, kUnrelatedControlVerticalSpacing);
|
| }
|
|
|
| @@ -392,6 +415,22 @@ void LanguageSection::ButtonPressed(
|
| }
|
| }
|
|
|
| +void LanguageSection::ItemChanged(views::Combobox* sender,
|
| + int prev_index,
|
| + int new_index) {
|
| + LOG(INFO) << "Changing XKB modofier pref to " << new_index;
|
| + xkb_pref_.SetValue(new_index);
|
| +}
|
| +
|
| +void LanguageSection::NotifyPrefChanged(const std::wstring* pref_name) {
|
| + if (!pref_name || *pref_name == prefs::kLanguageXkbModifierRemap) {
|
| + const int id = xkb_pref_.GetValue();
|
| + if (id >= 0) {
|
| + xkb_modifier_combobox_->SetSelectedItem(id);
|
| + }
|
| + }
|
| +}
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // AccessibilitySection
|
|
|
|
|