diff options
author | yusukes@google.com <yusukes@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-10 05:38:25 +0000 |
---|---|---|
committer | yusukes@google.com <yusukes@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-10 05:38:25 +0000 |
commit | 8a1ace211bd056287ccd0675d60a5f321a3e427d (patch) | |
tree | 70d4244105ff5940f337939b1d8d3ccd63c3de86 /chrome | |
parent | 3bde472efc5b871a5ad222cb8fad1908f6485af1 (diff) | |
download | chromium_src-8a1ace211bd056287ccd0675d60a5f321a3e427d.zip chromium_src-8a1ace211bd056287ccd0675d60a5f321a3e427d.tar.gz chromium_src-8a1ace211bd056287ccd0675d60a5f321a3e427d.tar.bz2 |
Add checkboxes for configuring the boolean type of Mozc configurations.
The original patch was written by mazda@chromium.org.
http://codereview.chromium.org/2778002/show
BUG=chromium-os:2625
TEST=manual
Review URL: http://codereview.chromium.org/2778002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49369 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/app/generated_resources.grd | 32 | ||||
-rw-r--r-- | chrome/browser/chromeos/language_preferences.h | 65 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/language_config_view.cc | 6 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/language_mozc_config_view.cc | 42 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/language_mozc_config_view.h | 15 | ||||
-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 | 8 | ||||
-rw-r--r-- | chrome/common/pref_names.cc | 16 | ||||
-rw-r--r-- | chrome/common/pref_names.h | 8 |
10 files changed, 190 insertions, 18 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 7ce3454..f90ff1d 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -8050,6 +8050,38 @@ Keep your key file in a safe place. You will need it to create new versions of y desc="The combobox value for the Mozc input method preference"> Direct input </message> + <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_INCOGNITO_MODE" + desc="The checkbox label for a Mozc input method preference"> + Temporarily disable conversion personalization, history-based suggestions and user dictionary + </message> + <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_USE_AUTO_IME_TURN_OFF" + desc="The checkbox label for a Mozc input method preference"> + Automatically switch to halfwidth + </message> + <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_USE_DATE_CONVERSION" + desc="The checkbox label for a Mozc input method preference"> + Date/time conversion + </message> + <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_USE_SINGLE_KANJI_CONVERSION" + desc="The checkbox label for a Mozc input method preference"> + Single kanji dictionary + </message> + <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_USE_SYMBOL_CONVERSION" + desc="The checkbox label for a Mozc input method preference"> + Symbol dictionary + </message> + <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_USE_NUMBER_CONVERSION" + desc="The checkbox label for a Mozc input method preference"> + Special number conversion + </message> + <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_USE_HISTORY_SUGGEST" + desc="The checkbox label for a Mozc input method preference"> + Use input history + </message> + <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_USE_DICTIONARY_SUGGEST" + desc="The checkbox label for a Mozc input method preference"> + Use system dictionary + </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 dfb6e38..02a7744 100644 --- a/chrome/browser/chromeos/language_preferences.h +++ b/chrome/browser/chromeos/language_preferences.h @@ -26,6 +26,13 @@ struct LanguageMultipleChoicePreference { int label_message_id; // Resource grd ID for the label. }; +struct LanguageBooleanPrefs { + const wchar_t* pref_name; // Chrome preference name. + bool default_pref_value; + const char* ibus_config_name; + int message_id; +}; + // For ibus-daemon const char kGeneralSectionName[] = "general"; const char kHotKeySectionName[] = "general/hotkey"; @@ -53,12 +60,7 @@ const char kChewingSectionName[] = "engine/Chewing"; // We have to sync the |ibus_config_name|s with those in // ibus-chewing/files/src/Config.cc. -const struct { - const wchar_t* pref_name; // Chrome preference name. - bool default_pref_value; - const char* ibus_config_name; - int message_id; -} kChewingBooleanPrefs[] = { +const LanguageBooleanPrefs kChewingBooleanPrefs[] = { { prefs::kLanguageChewingAutoShiftCur, false, "autoShiftCur", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_AUTO_SHIFT_CUR}, { prefs::kLanguageChewingAddPhraseDirection, false, "addPhraseDirection", @@ -173,12 +175,7 @@ const char kPinyinSectionName[] = "engine/Pinyin"; // We have to sync the |ibus_config_name|s with those in // ibus-pinyin/files/src/Config.cc. -const struct { - const wchar_t* pref_name; // Chrome preference name. - bool default_pref_value; - const char* ibus_config_name; - int message_id; -} kPinyinBooleanPrefs[] = { +const LanguageBooleanPrefs kPinyinBooleanPrefs[] = { { prefs::kLanguagePinyinCorrectPinyin, true, "CorrectPinyin", IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_CORRECT_PINYIN }, { prefs::kLanguagePinyinFuzzyPinyin, false, "FuzzyPinyin", @@ -238,6 +235,50 @@ const char kMozcSectionName[] = "engine/Mozc"; #define IDS_MOZC(suffix) \ IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_##suffix +const LanguageBooleanPrefs kMozcBooleanPrefs[] = { + { prefs::kLanguageMozcIncognitoMode, + false, + "incognito_mode", + IDS_MOZC(INCOGNITO_MODE) + }, + { prefs::kLanguageMozcUseAutoImeTurnOff, + true, + "use_auto_ime_turn_off", + IDS_MOZC(USE_AUTO_IME_TURN_OFF) + }, + { prefs::kLanguageMozcUseDateConversion, + true, + "use_date_conversion", + IDS_MOZC(USE_DATE_CONVERSION) + }, + { prefs::kLanguageMozcUseSingleKanjiConversion, + true, + "use_single_kanji_conversion", + IDS_MOZC(USE_SINGLE_KANJI_CONVERSION) + }, + { prefs::kLanguageMozcUseSymbolConversion, + true, + "use_symbol_conversion", + IDS_MOZC(USE_SYMBOL_CONVERSION) + }, + { prefs::kLanguageMozcUseNumberConversion, + true, + "use_number_conversion", + IDS_MOZC(USE_NUMBER_CONVERSION) + }, + { prefs::kLanguageMozcUseHistorySuggest, + true, + "use_history_suggest", + IDS_MOZC(USE_HISTORY_SUGGEST) + }, + { prefs::kLanguageMozcUseDictionarySuggest, + true, + "use_dictionary_suggest", + IDS_MOZC(USE_DICTIONARY_SUGGEST) + }, +}; +const size_t kNumMozcBooleanPrefs = ARRAYSIZE_UNSAFE(kMozcBooleanPrefs); + const LanguageMultipleChoicePreference<const char*> kMozcMultipleChoicePrefs[] = { { prefs::kLanguageMozcPreeditMethod, diff --git a/chrome/browser/chromeos/options/language_config_view.cc b/chrome/browser/chromeos/options/language_config_view.cc index 271792b..c6a22a9 100644 --- a/chrome/browser/chromeos/options/language_config_view.cc +++ b/chrome/browser/chromeos/options/language_config_view.cc @@ -384,7 +384,7 @@ void LanguageConfigView::AddInputMethodSection( input_method_id); layout->StartRow(0, kPerLanguageDoubleColumnSetId); InputMethodCheckbox* checkbox - = new InputMethodCheckbox(UTF8ToWide(display_name), + = new InputMethodCheckbox(UTF8ToWide(display_name).substr(0, 4), input_method_id); checkbox->set_listener(this); checkbox->set_tag(kSelectInputMethodButton); @@ -545,8 +545,8 @@ void LanguageConfigView::InitInputMethodConfigViewMap() { // TODO(yusukes): Enable the following two mappings when ibus-mozc starts // supporting IBus style configs. - // input_method_config_view_map_["mozc"] = CreateLanguageMozcConfigView; - // input_method_config_view_map_["mozc-jp"] = CreateLanguageMozcConfigView; + input_method_config_view_map_["mozc"] = CreateLanguageMozcConfigView; + input_method_config_view_map_["mozc-jp"] = CreateLanguageMozcConfigView; } void LanguageConfigView::InitInputMethodIdMapsAndVectors() { diff --git a/chrome/browser/chromeos/options/language_mozc_config_view.cc b/chrome/browser/chromeos/options/language_mozc_config_view.cc index ac9b4d4..8b27ea0 100644 --- a/chrome/browser/chromeos/options/language_mozc_config_view.cc +++ b/chrome/browser/chromeos/options/language_mozc_config_view.cc @@ -15,6 +15,7 @@ #include "chrome/common/pref_names.h" #include "grit/generated_resources.h" #include "grit/locale_settings.h" +#include "views/controls/button/checkbox.h" #include "views/grid_layout.h" #include "views/standard_layout.h" #include "views/window/window.h" @@ -23,6 +24,12 @@ namespace chromeos { LanguageMozcConfigView::LanguageMozcConfigView(Profile* profile) : OptionsPageView(profile), contents_(NULL) { + for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { + MozcPrefAndAssociatedCheckbox& current = prefs_and_checkboxes_[i]; + current.boolean_pref.Init( + kMozcBooleanPrefs[i].pref_name, profile->GetPrefs(), this); + current.checkbox = NULL; + } for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { MozcPrefAndAssociatedCombobox& current = prefs_and_comboboxes_[i]; current.multiple_choice_pref.Init( @@ -39,6 +46,14 @@ LanguageMozcConfigView::~LanguageMozcConfigView() { } } +void LanguageMozcConfigView::ButtonPressed( + views::Button* sender, const views::Event& event) { + views::Checkbox* checkbox = static_cast<views::Checkbox*>(sender); + const int pref_id = checkbox->tag(); + DCHECK(pref_id >= 0 && pref_id < static_cast<int>(kNumMozcBooleanPrefs)); + prefs_and_checkboxes_[pref_id].boolean_pref.SetValue(checkbox->checked()); +} + void LanguageMozcConfigView::ItemChanged( views::Combobox* sender, int prev_index, int new_index) { for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { @@ -66,9 +81,14 @@ std::wstring LanguageMozcConfigView::GetWindowTitle() const { gfx::Size LanguageMozcConfigView::GetPreferredSize() { // TODO(satorux): Create our own localized content size once the UI is done. - return gfx::Size(views::Window::GetLocalizedContentsSize( + gfx::Size preferred_size = views::Window::GetLocalizedContentsSize( IDS_LANGUAGES_INPUT_DIALOG_WIDTH_CHARS, - IDS_LANGUAGES_INPUT_DIALOG_HEIGHT_LINES)); + 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; + preferred_size.Enlarge(0, kHeightPadding); + return preferred_size; } void LanguageMozcConfigView::InitControlLayout() { @@ -91,6 +111,13 @@ void LanguageMozcConfigView::InitControlLayout() { column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 0, GridLayout::USE_PREF, 0, 0); + for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { + MozcPrefAndAssociatedCheckbox& current = prefs_and_checkboxes_[i]; + current.checkbox = new views::Checkbox( + l10n_util::GetString(kMozcBooleanPrefs[i].message_id)); + current.checkbox->set_listener(this); + current.checkbox->set_tag(i); + } for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { MozcPrefAndAssociatedCombobox& current = prefs_and_comboboxes_[i]; current.combobox = new LanguageCombobox(current.combobox_model); @@ -98,6 +125,12 @@ void LanguageMozcConfigView::InitControlLayout() { } NotifyPrefChanged(); // Sync the comboboxes with current Chrome prefs. + // Show the checkboxes. + for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { + const MozcPrefAndAssociatedCheckbox& current = prefs_and_checkboxes_[i]; + layout->StartRow(0, kColumnSetId); + layout->AddView(current.checkbox, 3, 1); + } // Show the comboboxes. for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { const MozcPrefAndAssociatedCombobox& current = prefs_and_comboboxes_[i]; @@ -118,6 +151,11 @@ void LanguageMozcConfigView::Observe(NotificationType type, void LanguageMozcConfigView::NotifyPrefChanged() { // Update comboboxes. // TODO(yusukes): We don't have to update all UI controls. + for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { + MozcPrefAndAssociatedCheckbox& current = prefs_and_checkboxes_[i]; + const bool checked = current.boolean_pref.GetValue(); + current.checkbox->SetChecked(checked); + } for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { MozcPrefAndAssociatedCombobox& current = prefs_and_comboboxes_[i]; const std::wstring value = current.multiple_choice_pref.GetValue(); diff --git a/chrome/browser/chromeos/options/language_mozc_config_view.h b/chrome/browser/chromeos/options/language_mozc_config_view.h index 94df39c..173d028 100644 --- a/chrome/browser/chromeos/options/language_mozc_config_view.h +++ b/chrome/browser/chromeos/options/language_mozc_config_view.h @@ -16,6 +16,10 @@ #include "views/controls/label.h" #include "views/window/dialog_delegate.h" +namespace views { +class Checkbox; +} + namespace chromeos { class LanguageCombobox; @@ -23,13 +27,17 @@ template <typename DataType> class LanguageComboboxModel; // A dialog box for showing Mozc (Japanese input method) preferences. -class LanguageMozcConfigView : public views::Combobox::Listener, +class LanguageMozcConfigView : public views::ButtonListener, + public views::Combobox::Listener, public views::DialogDelegate, public OptionsPageView { public: explicit LanguageMozcConfigView(Profile* profile); virtual ~LanguageMozcConfigView(); + // views::ButtonListener overrides. + virtual void ButtonPressed(views::Button* sender, const views::Event& event); + // views::Combobox::Listener overrides. virtual void ItemChanged(views::Combobox* sender, int prev_index, @@ -58,6 +66,11 @@ class LanguageMozcConfigView : public views::Combobox::Listener, views::View* contents_; + struct MozcPrefAndAssociatedCheckbox { + BooleanPrefMember boolean_pref; + views::Checkbox* checkbox; + } prefs_and_checkboxes_[kNumMozcBooleanPrefs]; + struct MozcPrefAndAssociatedCombobox { StringPrefMember multiple_choice_pref; LanguageComboboxModel<const char*>* combobox_model; diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc index 0cee1dce..c5ef05f 100644 --- a/chrome/browser/chromeos/preferences.cc +++ b/chrome/browser/chromeos/preferences.cc @@ -62,6 +62,10 @@ void Preferences::RegisterUserPrefs(PrefService* prefs) { prefs->RegisterIntegerPref(kPinyinDoublePinyinSchema.pref_name, kPinyinDoublePinyinSchema.default_pref_value); + for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { + prefs->RegisterBooleanPref(kMozcBooleanPrefs[i].pref_name, + kMozcBooleanPrefs[i].default_pref_value); + } for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { prefs->RegisterStringPref( kMozcMultipleChoicePrefs[i].pref_name, @@ -106,6 +110,10 @@ void Preferences::Init(PrefService* prefs) { } language_pinyin_double_pinyin_schema_.Init( kPinyinDoublePinyinSchema.pref_name, prefs, this); + for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { + language_mozc_boolean_prefs_[i].Init( + kMozcBooleanPrefs[i].pref_name, prefs, this); + } for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { language_mozc_multiple_choice_prefs_[i].Init( kMozcMultipleChoicePrefs[i].pref_name, prefs, this); @@ -216,6 +224,13 @@ void Preferences::NotifyPrefChanged(const std::wstring* pref_name) { kPinyinDoublePinyinSchema.ibus_config_name, language_pinyin_double_pinyin_schema_.GetValue()); } + for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { + if (!pref_name || *pref_name == kMozcBooleanPrefs[i].pref_name) { + SetLanguageConfigBoolean(kMozcSectionName, + kMozcBooleanPrefs[i].ibus_config_name, + language_mozc_boolean_prefs_[i].GetValue()); + } + } for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { if (!pref_name || *pref_name == kMozcMultipleChoicePrefs[i].pref_name) { SetLanguageConfigString( diff --git a/chrome/browser/chromeos/preferences.h b/chrome/browser/chromeos/preferences.h index 90ade43..ed5e7f6 100644 --- a/chrome/browser/chromeos/preferences.h +++ b/chrome/browser/chromeos/preferences.h @@ -96,6 +96,7 @@ class Preferences : public NotificationObserver { BooleanPrefMember language_pinyin_boolean_prefs_[kNumPinyinBooleanPrefs]; IntegerPrefMember language_pinyin_int_prefs_[kNumPinyinIntegerPrefs]; IntegerPrefMember language_pinyin_double_pinyin_schema_; + BooleanPrefMember language_mozc_boolean_prefs_[kNumMozcBooleanPrefs]; StringPrefMember language_mozc_multiple_choice_prefs_[ kNumMozcMultipleChoicePrefs]; diff --git a/chrome/browser/sync/glue/synchronized_preferences.h b/chrome/browser/sync/glue/synchronized_preferences.h index 3ec3946..f252764 100644 --- a/chrome/browser/sync/glue/synchronized_preferences.h +++ b/chrome/browser/sync/glue/synchronized_preferences.h @@ -125,6 +125,14 @@ static const wchar_t* kSynchronizedPreferences[] = { // prefs::kLanguageMozcSelectionShortcut; // prefs::kLanguageMozcShiftKeyModeSwitch; // prefs::kLanguageMozcNumpadCharacterForm; + // prefs::kLanguageMozcIncognitoMode, + // prefs::kLanguageMozcUseAutoImeTurnOff, + // prefs::kLanguageMozcUseDateConversion, + // prefs::kLanguageMozcUseSingleKanjiConversion, + // prefs::kLanguageMozcUseSymbolConversion, + // prefs::kLanguageMozcUseNumberConversion, + // prefs::kLanguageMozcUseHistorySuggest, + // prefs::kLanguageMozcUseDictionarySuggest, // // 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 d0b351b..e63ee6b 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -305,6 +305,22 @@ const wchar_t kLanguageMozcShiftKeyModeSwitch[] = L"settings.language.mozc_shift_key_mode_switch"; const wchar_t kLanguageMozcNumpadCharacterForm[] = L"settings.language.mozc_numpad_character_form"; +const wchar_t kLanguageMozcIncognitoMode[] = + L"settings.language.mozc_incognito_mode"; +const wchar_t kLanguageMozcUseAutoImeTurnOff[] = + L"settings.language.mozc_use_auto_ime_turn_off"; +const wchar_t kLanguageMozcUseDateConversion[] = + L"settings.language.mozc_use_date_conversion"; +const wchar_t kLanguageMozcUseSingleKanjiConversion[] = + L"settings.language.mozc_use_single_kanji_conversion"; +const wchar_t kLanguageMozcUseSymbolConversion[] = + L"settings.language.mozc_use_symbol_conversion"; +const wchar_t kLanguageMozcUseNumberConversion[] = + L"settings.language.mozc_use_number_conversion"; +const wchar_t kLanguageMozcUseHistorySuggest[] = + L"settings.language.mozc_use_history_suggest"; +const wchar_t kLanguageMozcUseDictionarySuggest[] = + L"settings.language.mozc_use_dictionary_suggest"; // 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 18ae835..f1cb15b 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -115,6 +115,14 @@ extern const wchar_t kLanguageMozcHistoryLearningLevel[]; extern const wchar_t kLanguageMozcSelectionShortcut[]; extern const wchar_t kLanguageMozcShiftKeyModeSwitch[]; extern const wchar_t kLanguageMozcNumpadCharacterForm[]; +extern const wchar_t kLanguageMozcIncognitoMode[]; +extern const wchar_t kLanguageMozcUseAutoImeTurnOff[]; +extern const wchar_t kLanguageMozcUseDateConversion[]; +extern const wchar_t kLanguageMozcUseSingleKanjiConversion[]; +extern const wchar_t kLanguageMozcUseSymbolConversion[]; +extern const wchar_t kLanguageMozcUseNumberConversion[]; +extern const wchar_t kLanguageMozcUseHistorySuggest[]; +extern const wchar_t kLanguageMozcUseDictionarySuggest[]; extern const wchar_t kAccessibilityEnabled[]; #endif extern const wchar_t kIpcDisabledMessages[]; |