diff options
author | mazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-22 02:06:23 +0000 |
---|---|---|
committer | mazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-22 02:06:23 +0000 |
commit | 5403746b7088c85d7bc38a6e64637b0d8906b0de (patch) | |
tree | 752e41a171088b601d8a1d37287bc10c1cc8da02 | |
parent | 365632b6511797f47983a1bbae1dc4fd84e0ba1b (diff) | |
download | chromium_src-5403746b7088c85d7bc38a6e64637b0d8906b0de.zip chromium_src-5403746b7088c85d7bc38a6e64637b0d8906b0de.tar.gz chromium_src-5403746b7088c85d7bc38a6e64637b0d8906b0de.tar.bz2 |
Add a slider to the mozc configration dialog for setting the integer type of configurations.
BUG=chromium-os:2625
TEST=manual
Review URL: http://codereview.chromium.org/2856011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50421 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/app/generated_resources.grd | 4 | ||||
-rw-r--r-- | chrome/browser/chromeos/language_preferences.h | 27 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/language_mozc_config_view.cc | 48 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/language_mozc_config_view.h | 10 | ||||
-rw-r--r-- | chrome/browser/chromeos/preferences.cc | 15 | ||||
-rw-r--r-- | chrome/browser/chromeos/preferences.h | 1 | ||||
-rw-r--r-- | chrome/browser/sync/glue/synchronized_preferences.h | 1 | ||||
-rw-r--r-- | chrome/common/pref_names.cc | 2 | ||||
-rw-r--r-- | chrome/common/pref_names.h | 1 |
9 files changed, 97 insertions, 12 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 2e4a812..5aa08eb 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -8154,6 +8154,10 @@ Keep your key file in a safe place. You will need it to create new versions of y desc="The checkbox label for a Mozc input method preference"> Use system dictionary </message> + <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_SUGGESTIONS_SIZE" + desc="The slider label for a Mozc input method preference"> + Maximum number of suggestions + </message> <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_CONFIGURE" desc="The label for the configure button for input methods"> Configure... diff --git a/chrome/browser/chromeos/language_preferences.h b/chrome/browser/chromeos/language_preferences.h index 8dc89eb..278e703 100644 --- a/chrome/browser/chromeos/language_preferences.h +++ b/chrome/browser/chromeos/language_preferences.h @@ -33,6 +33,15 @@ struct LanguageBooleanPrefs { int message_id; }; +struct LanguageIntegerRangePreference { + const wchar_t* pref_name; // Chrome preference name. + int default_pref_value; + int min_pref_value; + int max_pref_value; + const char* ibus_config_name; + int message_id; +}; + // For ibus-daemon const char kGeneralSectionName[] = "general"; const char kHotKeySectionName[] = "general/hotkey"; @@ -81,14 +90,7 @@ const LanguageBooleanPrefs kChewingBooleanPrefs[] = { }; const size_t kNumChewingBooleanPrefs = ARRAYSIZE_UNSAFE(kChewingBooleanPrefs); -const struct { - const wchar_t* pref_name; // Chrome preference name. - int default_pref_value; - int min_pref_value; - int max_pref_value; - const char* ibus_config_name; - int message_id; -} kChewingIntegerPrefs[] = { +const LanguageIntegerRangePreference kChewingIntegerPrefs[] = { { prefs::kLanguageChewingMaxChiSymbolLen, 20, 8, 40, "maxChiSymbolLen", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_MAX_CHI_SYMBOL_LEN}, { prefs::kLanguageChewingCandPerPage, 10, 8, 10, "candPerPage", @@ -383,10 +385,15 @@ const LanguageMultipleChoicePreference<const char*> IDS_MOZC(NUMPAD_CHARACTER_FORM), }, }; +const size_t kNumMozcMultipleChoicePrefs = arraysize(kMozcMultipleChoicePrefs); -#undef IDS_MOZC +const LanguageIntegerRangePreference kMozcIntegerPrefs[] = { + { prefs::kLanguageMozcSuggestionsSize, 3, 1, 9, "suggestions_size", + IDS_MOZC(SUGGESTIONS_SIZE)}, +}; +const size_t kNumMozcIntegerPrefs = ARRAYSIZE_UNSAFE(kMozcIntegerPrefs); -const size_t kNumMozcMultipleChoicePrefs = arraysize(kMozcMultipleChoicePrefs); +#undef IDS_MOZC // For Traditional Chinese input methods (ibus-pinyin-bopomofo and ibus-chewing) // TODO(yusukes): Add constants for Traditional Chinese input methods. diff --git a/chrome/browser/chromeos/options/language_mozc_config_view.cc b/chrome/browser/chromeos/options/language_mozc_config_view.cc index 8b27ea0..8a52506 100644 --- a/chrome/browser/chromeos/options/language_mozc_config_view.cc +++ b/chrome/browser/chromeos/options/language_mozc_config_view.cc @@ -38,6 +38,12 @@ LanguageMozcConfigView::LanguageMozcConfigView(Profile* profile) new LanguageComboboxModel<const char*>(&kMozcMultipleChoicePrefs[i]); current.combobox = NULL; } + for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) { + MozcPrefAndAssociatedSlider& current = prefs_and_sliders_[i]; + current.integer_pref.Init( + kMozcIntegerPrefs[i].pref_name, profile->GetPrefs(), this); + current.slider = NULL; + } } LanguageMozcConfigView::~LanguageMozcConfigView() { @@ -56,6 +62,10 @@ void LanguageMozcConfigView::ButtonPressed( void LanguageMozcConfigView::ItemChanged( views::Combobox* sender, int prev_index, int new_index) { + if (new_index < 0 || sender->model()->GetItemCount() <= new_index) { + LOG(ERROR) << "Invalid new_index: " << new_index; + return; + } for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { MozcPrefAndAssociatedCombobox& current = prefs_and_comboboxes_[i]; if (current.combobox == sender) { @@ -69,6 +79,16 @@ void LanguageMozcConfigView::ItemChanged( } } +void LanguageMozcConfigView::SliderValueChanged(views::Slider* sender) { + size_t pref_id; + for (pref_id = 0; pref_id < kNumMozcIntegerPrefs; ++pref_id) { + if (prefs_and_sliders_[pref_id].slider == sender) + break; + } + DCHECK(pref_id < kNumMozcIntegerPrefs); + prefs_and_sliders_[pref_id].integer_pref.SetValue(sender->value()); +} + void LanguageMozcConfigView::Layout() { // Not sure why but this is needed to show contents in the dialog. contents_->SetBounds(0, 0, width(), height()); @@ -86,7 +106,7 @@ gfx::Size LanguageMozcConfigView::GetPreferredSize() { IDS_LANGUAGES_INPUT_DIALOG_HEIGHT_LINES); // TODO(mazda): Remove the manual adjustment. // The padding is needed for accommodating all the controls in the dialog. - const int kHeightPadding = 20; + const int kHeightPadding = 60; preferred_size.Enlarge(0, kHeightPadding); return preferred_size; } @@ -108,7 +128,7 @@ void LanguageMozcConfigView::InitControlLayout() { column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 0, GridLayout::USE_PREF, 0, 0); column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing); - column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 0, + column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, GridLayout::USE_PREF, 0, 0); for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { @@ -123,6 +143,17 @@ void LanguageMozcConfigView::InitControlLayout() { current.combobox = new LanguageCombobox(current.combobox_model); current.combobox->set_listener(this); } + for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) { + MozcPrefAndAssociatedSlider& current = prefs_and_sliders_[i]; + current.slider = new views::Slider( + kMozcIntegerPrefs[i].min_pref_value, + kMozcIntegerPrefs[i].max_pref_value, + 1, + static_cast<views::Slider::StyleFlags>( + views::Slider::STYLE_DRAW_VALUE | + views::Slider::STYLE_UPDATE_ON_RELEASE), + this); + } NotifyPrefChanged(); // Sync the comboboxes with current Chrome prefs. // Show the checkboxes. @@ -138,6 +169,14 @@ void LanguageMozcConfigView::InitControlLayout() { layout->AddView(new views::Label(current.combobox_model->GetLabel())); layout->AddView(current.combobox); } + for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) { + const MozcPrefAndAssociatedSlider& current = prefs_and_sliders_[i]; + layout->StartRow(0, kColumnSetId); + layout->AddView(new views::Label( + l10n_util::GetString(kMozcIntegerPrefs[i].message_id))); + layout->AddView(current.slider); + } + NotifyPrefChanged(); // Sync the slider with current Chrome prefs. } void LanguageMozcConfigView::Observe(NotificationType type, @@ -166,6 +205,11 @@ void LanguageMozcConfigView::NotifyPrefChanged() { } } } + for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) { + MozcPrefAndAssociatedSlider& current = prefs_and_sliders_[i]; + const int value = current.integer_pref.GetValue(); + current.slider->SetValue(value); + } } } // namespace chromeos diff --git a/chrome/browser/chromeos/options/language_mozc_config_view.h b/chrome/browser/chromeos/options/language_mozc_config_view.h index 2cb181b..b0e53b1 100644 --- a/chrome/browser/chromeos/options/language_mozc_config_view.h +++ b/chrome/browser/chromeos/options/language_mozc_config_view.h @@ -14,6 +14,7 @@ #include "chrome/browser/views/options/options_page_view.h" #include "views/controls/combobox/combobox.h" #include "views/controls/label.h" +#include "views/controls/slider/slider.h" #include "views/window/dialog_delegate.h" namespace views { @@ -30,6 +31,7 @@ class LanguageComboboxModel; class LanguageMozcConfigView : public views::ButtonListener, public views::Combobox::Listener, public views::DialogDelegate, + public views::SliderListener, public OptionsPageView { public: explicit LanguageMozcConfigView(Profile* profile); @@ -43,6 +45,9 @@ class LanguageMozcConfigView : public views::ButtonListener, int prev_index, int new_index); + // views::SliderListener overrides. + virtual void SliderValueChanged(views::Slider* sender); + // views::DialogDelegate overrides. virtual bool IsModal() const { return true; } virtual views::View* GetContentsView() { return this; } @@ -77,6 +82,11 @@ class LanguageMozcConfigView : public views::ButtonListener, LanguageCombobox* combobox; } prefs_and_comboboxes_[kNumMozcMultipleChoicePrefs]; + struct MozcPrefAndAssociatedSlider { + IntegerPrefMember integer_pref; + views::Slider* slider; + } prefs_and_sliders_[kNumMozcIntegerPrefs]; + DISALLOW_COPY_AND_ASSIGN(LanguageMozcConfigView); }; diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc index b56add7..5a20b49 100644 --- a/chrome/browser/chromeos/preferences.cc +++ b/chrome/browser/chromeos/preferences.cc @@ -72,6 +72,10 @@ void Preferences::RegisterUserPrefs(PrefService* prefs) { kMozcMultipleChoicePrefs[i].pref_name, kMozcMultipleChoicePrefs[i].default_pref_value); } + for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) { + prefs->RegisterIntegerPref(kMozcIntegerPrefs[i].pref_name, + kMozcIntegerPrefs[i].default_pref_value); + } } void Preferences::Init(PrefService* prefs) { @@ -119,6 +123,10 @@ void Preferences::Init(PrefService* prefs) { language_mozc_multiple_choice_prefs_[i].Init( kMozcMultipleChoicePrefs[i].pref_name, prefs, this); } + for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) { + language_mozc_integer_prefs_[i].Init( + kMozcIntegerPrefs[i].pref_name, prefs, this); + } // Initialize touchpad settings to what's saved in user preferences. NotifyPrefChanged(NULL); @@ -240,6 +248,13 @@ void Preferences::NotifyPrefChanged(const std::wstring* pref_name) { language_mozc_multiple_choice_prefs_[i].GetValue()); } } + for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) { + if (!pref_name || *pref_name == kMozcIntegerPrefs[i].pref_name) { + SetLanguageConfigInteger(kMozcSectionName, + kMozcIntegerPrefs[i].ibus_config_name, + language_mozc_integer_prefs_[i].GetValue()); + } + } } void Preferences::SetTimeZone(const std::wstring& id) { diff --git a/chrome/browser/chromeos/preferences.h b/chrome/browser/chromeos/preferences.h index ed5e7f6..1d02b34 100644 --- a/chrome/browser/chromeos/preferences.h +++ b/chrome/browser/chromeos/preferences.h @@ -99,6 +99,7 @@ class Preferences : public NotificationObserver { BooleanPrefMember language_mozc_boolean_prefs_[kNumMozcBooleanPrefs]; StringPrefMember language_mozc_multiple_choice_prefs_[ kNumMozcMultipleChoicePrefs]; + IntegerPrefMember language_mozc_integer_prefs_[kNumMozcIntegerPrefs]; DISALLOW_COPY_AND_ASSIGN(Preferences); }; diff --git a/chrome/browser/sync/glue/synchronized_preferences.h b/chrome/browser/sync/glue/synchronized_preferences.h index 38168cf..1da42a7 100644 --- a/chrome/browser/sync/glue/synchronized_preferences.h +++ b/chrome/browser/sync/glue/synchronized_preferences.h @@ -132,6 +132,7 @@ static const wchar_t* kSynchronizedPreferences[] = { // prefs::kLanguageMozcUseNumberConversion, // prefs::kLanguageMozcUseHistorySuggest, // prefs::kLanguageMozcUseDictionarySuggest, + // prefs::kLanguageMozcSuggestionsSize // // We don't sync the following IME prefs since they are not user-configurable // (yet): diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index f3a8e2b..c4d78d9 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -321,6 +321,8 @@ const wchar_t kLanguageMozcUseHistorySuggest[] = L"settings.language.mozc_use_history_suggest"; const wchar_t kLanguageMozcUseDictionarySuggest[] = L"settings.language.mozc_use_dictionary_suggest"; +const wchar_t kLanguageMozcSuggestionsSize[] = + L"settings.language.mozc_suggestions_size"; // A boolean pref which determines whether accessibility is enabled. const wchar_t kAccessibilityEnabled[] = L"settings.accessibility"; diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index 6441e9d..ca9ff0a 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -123,6 +123,7 @@ extern const wchar_t kLanguageMozcUseSymbolConversion[]; extern const wchar_t kLanguageMozcUseNumberConversion[]; extern const wchar_t kLanguageMozcUseHistorySuggest[]; extern const wchar_t kLanguageMozcUseDictionarySuggest[]; +extern const wchar_t kLanguageMozcSuggestionsSize[]; extern const wchar_t kAccessibilityEnabled[]; #endif extern const wchar_t kIpcDisabledMessages[]; |