diff options
author | satorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-19 08:37:24 +0000 |
---|---|---|
committer | satorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-19 08:37:24 +0000 |
commit | 401d881f589a949d8b8cc35af85745a8b16015ae (patch) | |
tree | 4f77a20005fc7b65ccb2a331cc4119b59c056ba6 | |
parent | da4f8a1a589ef8737296d69049a4977bc1fc37a0 (diff) | |
download | chromium_src-401d881f589a949d8b8cc35af85745a8b16015ae.zip chromium_src-401d881f589a949d8b8cc35af85745a8b16015ae.tar.gz chromium_src-401d881f589a949d8b8cc35af85745a8b16015ae.tar.bz2 |
Clean up chrome/browser/chromeos/language_preferences.h.
Get rid of includes from language_preferences.h.
Move definitions of variables from .h to .cc file.
Change affected files accordingly.
Note that some files were depending on includes in
language_preferences.h. For these files, add required
includes so these files compile.
BUG=chromium-os:5848
TEST=compiles. try bots.
Review URL: http://codereview.chromium.org/3164027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56657 0039d316-1c4b-4281-b951-d872f2087c98
12 files changed, 509 insertions, 369 deletions
diff --git a/chrome/browser/chromeos/dom_ui/language_hangul_options_handler.cc b/chrome/browser/chromeos/dom_ui/language_hangul_options_handler.cc index 3d77d08..f645cf5 100644 --- a/chrome/browser/chromeos/dom_ui/language_hangul_options_handler.cc +++ b/chrome/browser/chromeos/dom_ui/language_hangul_options_handler.cc @@ -30,7 +30,7 @@ void LanguageHangulOptionsHandler::GetLocalizedValues( ListValue* LanguageHangulOptionsHandler::GetKeyboardLayoutList() { ListValue* keyboard_layout_list = new ListValue(); - for (size_t i = 0; i < arraysize(kHangulKeyboardNameIDPairs); ++i) { + for (size_t i = 0; i < kNumHangulKeyboardNameIDPairs; ++i) { ListValue* option = new ListValue(); option->Append(Value::CreateStringValue( kHangulKeyboardNameIDPairs[i].keyboard_id)); diff --git a/chrome/browser/chromeos/language_preferences.cc b/chrome/browser/chromeos/language_preferences.cc new file mode 100644 index 0000000..8c45e8a --- /dev/null +++ b/chrome/browser/chromeos/language_preferences.cc @@ -0,0 +1,405 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/basictypes.h" +#include "chrome/browser/chromeos/language_preferences.h" +#include "chrome/common/pref_names.h" +#include "grit/generated_resources.h" + +namespace chromeos { + +// --------------------------------------------------------------------------- +// For ibus-daemon +// --------------------------------------------------------------------------- +const char kGeneralSectionName[] = "general"; +const char kHotKeySectionName[] = "general/hotkey"; +const char kPreloadEnginesConfigName[] = "preload_engines"; +const char kNextEngineInMenuConfigName[] = "next_engine_in_menu"; +const char kPreviousEngineConfigName[] = "previous_engine"; +// TODO(yusukes): Check if the "Kana/Eisu" key in the Japanese keyboard for +// Chrome OS actually generates Zenkaku_Hankaku when the keyboard gets ready. +// ibus-daemon accepts up to 5 next-engine hot-keys. +const char kHotkeyNextEngineInMenu[] = + "Shift+Alt+Release+Shift_L,Shift+Alt+Release+Meta_L,Control+Shift+space," + "Zenkaku_Hankaku"; +// TODO(suzhe): Add more key bindings? +const char kHotkeyPreviousEngine[] = "Control+space"; + +// --------------------------------------------------------------------------- +// For Traditional Chinese input method (ibus-chewing) +// --------------------------------------------------------------------------- +const char kChewingSectionName[] = "engine/Chewing"; + +// We have to sync the |ibus_config_name|s with those in +// ibus-chewing/files/src/Config.cc. +const LanguageBooleanPrefs kChewingBooleanPrefs[] = { + { prefs::kLanguageChewingAutoShiftCur, false, "autoShiftCur", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_AUTO_SHIFT_CUR}, + { prefs::kLanguageChewingAddPhraseDirection, false, "addPhraseDirection", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_ADD_PHRASE_DIRECTION}, + { prefs::kLanguageChewingEasySymbolInput, true, "easySymbolInput", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_EASY_SYMBOL_INPUT}, + { prefs::kLanguageChewingEscCleanAllBuf, false, "escCleanAllBuf", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_ESC_CLEAN_ALL_BUF}, + { prefs::kLanguageChewingForceLowercaseEnglish, false, + "forceLowercaseEnglish", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_FORCE_LOWER_CASE_ENGLISH}, + { prefs::kLanguageChewingPlainZhuyin, false, "plainZhuyin", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_PLAIN_ZHUYIN}, + { prefs::kLanguageChewingPhraseChoiceRearward, true, "phraseChoiceRearward", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_PHRASE_CHOICE_REARWARD}, + { prefs::kLanguageChewingSpaceAsSelection, true, "spaceAsSelection", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_SPACE_AS_SELECTION}, +}; +COMPILE_ASSERT(kNumChewingBooleanPrefs == arraysize(kChewingBooleanPrefs), + TheSizeShouldMatch); + +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", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_CAND_PER_PAGE}, +}; +COMPILE_ASSERT(kNumChewingIntegerPrefs == arraysize(kChewingIntegerPrefs), + TheSizeShouldMatch); + +const LanguageMultipleChoicePreference<const char*> + kChewingMultipleChoicePrefs[] = { + { prefs::kLanguageChewingKeyboardType, + "default", + "KBType", + {{ "default", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DEFAULT }, + { "hsu", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_HSU }, + { "ibm", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_IBM }, + { "gin_yieh", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_GIN_YIEH }, + { "eten", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_ETEN }, + { "eten26", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_ETEN26 }, + { "dvorak", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DVORAK }, + { "dvorak_hsu", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DVORAK_HSU }, + { "dachen_26", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DACHEN_26 }, + { "hanyu", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_HANYU }}, + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE, + }, + { prefs::kLanguageChewingSelKeys, + "1234567890", + "selKeys", + {{ "1234567890", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_1234567890 }, + { "asdfghjkl;", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_ASDFGHJKLS }, + { "asdfzxcv89", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_ASDFZXCV89 }, + { "asdfjkl789", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_ASDFJKL789 }, + { "aoeu;qjkix", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_AOEUSQJKIX }, + { "aoeuhtnsid", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_AOEUHTNSID }, + { "aoeuidhtns", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_AOEUIDHTNS }, + { "1234qweras", + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_1234QWERAS }}, + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS, + }, +}; +COMPILE_ASSERT(kNumChewingMultipleChoicePrefs == + arraysize(kChewingMultipleChoicePrefs), + TheSizeShouldMatch); + +const LanguageMultipleChoicePreference<int> kChewingHsuSelKeyType = { + prefs::kLanguageChewingHsuSelKeyType, + 1, + "hsuSelKeyType", + {{ 1, IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_HSU_SEL_KEY_TYPE_1 }, + { 2, IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_HSU_SEL_KEY_TYPE_2 }}, + IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_HSU_SEL_KEY_TYPE, +}; + +// --------------------------------------------------------------------------- +// For Korean input method (ibus-hangul) +// --------------------------------------------------------------------------- +const char kHangulSectionName[] = "engine/Hangul"; +const char kHangulKeyboardConfigName[] = "HangulKeyboard"; +const char kHangulHanjaKeysConfigName[] = "HanjaKeys"; +// We add Control+Alt+9 in addition to the two default keys since Hanja key +// might not be available on the Chrome OS keyboard and F9 key is reserved by +// the window manager. +// TODO: Hanja keys are not configurable yet (and we're not sure if it should.) +const char kHangulHanjaKeys[] = "F9,Hangul_Hanja,Control+Alt+9"; + +const HangulKeyboardNameIDPair kHangulKeyboardNameIDPairs[] = { + // We have to sync the |keyboard_id|s with those in + // ibus-hangul/files/setup/main.py. + { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_2_SET, "2" }, + { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_3_SET_FINAL, + "3f" }, + { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_3_SET_390, "39" }, + { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_3_SET_NO_SHIFT, + "3s" }, + // We don't support "Sebeolsik 2 set" keyboard. +}; +COMPILE_ASSERT(kNumHangulKeyboardNameIDPairs == + arraysize(kHangulKeyboardNameIDPairs), + TheSizeShouldMatch); + +// --------------------------------------------------------------------------- +// For Simplified Chinese input method (ibus-pinyin) +// --------------------------------------------------------------------------- +const char kPinyinSectionName[] = "engine/Pinyin"; + +// We have to sync the |ibus_config_name|s with those in +// ibus-pinyin/files/src/Config.cc. +const LanguageBooleanPrefs kPinyinBooleanPrefs[] = { + { prefs::kLanguagePinyinCorrectPinyin, true, "CorrectPinyin", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_CORRECT_PINYIN }, + { prefs::kLanguagePinyinFuzzyPinyin, false, "FuzzyPinyin", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_FUZZY_PINYIN }, + { prefs::kLanguagePinyinShiftSelectCandidate, false, "ShiftSelectCandidate", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_SHIFT_SELECT_PINYIN }, + { prefs::kLanguagePinyinMinusEqualPage, true, "MinusEqualPage", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_MINUS_EQUAL_PAGE }, + { prefs::kLanguagePinyinCommaPeriodPage, true, "CommaPeriodPage", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_COMMA_PERIOD_PAGE }, + { prefs::kLanguagePinyinAutoCommit, false, "AutoCommit", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_AUTO_COMMIT }, + { prefs::kLanguagePinyinDoublePinyin, false, "DoublePinyin", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_DOUBLE_PINYIN }, + { prefs::kLanguagePinyinInitChinese, true, "InitChinese", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_CHINESE }, + { prefs::kLanguagePinyinInitFull, false, "InitFull", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_FULL }, + { prefs::kLanguagePinyinInitFullPunct, true, "InitFullPunct", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_FULL_PUNCT }, + { prefs::kLanguagePinyinInitSimplifiedChinese, true, "InitSimplifiedChinese", + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_SIMPLIFIED_CHINESE }, + // TODO(yusukes): Support PINYIN_{INCOMPLETE,CORRECT,FUZZY}_... prefs (32 + // additional boolean prefs.) +}; +COMPILE_ASSERT(kNumPinyinBooleanPrefs == arraysize(kPinyinBooleanPrefs), + TheSizeShouldMatch); +// TODO(yusukes): Support HalfWidthPuncts and IncompletePinyin prefs if needed. + +const LanguageMultipleChoicePreference<int> kPinyinDoublePinyinSchema = { + prefs::kLanguagePinyinDoublePinyinSchema, + 0, + "DoublePinyinSchema", + {{ 0, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_MSPY}, + { 1, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_ZRM}, + { 2, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_ABC}, + { 3, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_ZGPY}, + { 4, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_PYJJ}}, + IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA, +}; + +const PinyinIntegerPref kPinyinIntegerPrefs[] = { + // TODO(yusukes): the type of lookup_table_page_size on ibus should be uint. + { prefs::kLanguagePinyinLookupTablePageSize, 5, "LookupTablePageSize" }, +}; +COMPILE_ASSERT(kNumPinyinIntegerPrefs == arraysize(kPinyinIntegerPrefs), + TheSizeShouldMatch); + +// --------------------------------------------------------------------------- +// For Japanese input method (ibus-mozc) +// --------------------------------------------------------------------------- +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) + }, +}; +COMPILE_ASSERT(kNumMozcBooleanPrefs == arraysize(kMozcBooleanPrefs), + TheSizeShouldMatch); + +extern const LanguageMultipleChoicePreference<const char*> + kMozcMultipleChoicePrefs[] = { + { prefs::kLanguageMozcPreeditMethod, + "ROMAN", + "preedit_method", + {{ "ROMAN", IDS_MOZC(PREEDIT_METHOD_ROMAN) }, + { "KANA", IDS_MOZC(PREEDIT_METHOD_KANA) }}, + IDS_MOZC(PREEDIT_METHOD), + }, + { prefs::kLanguageMozcSessionKeymap, + "MSIME", + "session_keymap", + {{ "ATOK", IDS_MOZC(SESSION_KEYMAP_ATOK) }, + { "MSIME", IDS_MOZC(SESSION_KEYMAP_MSIME) }, + { "KOTOERI", IDS_MOZC(SESSION_KEYMAP_KOTOERI) }}, + // TODO: Support "CUSTOM" keymap. + IDS_MOZC(SESSION_KEYMAP), + }, + { prefs::kLanguageMozcPunctuationMethod, + "KUTEN_TOUTEN", + "punctuation_method", + {{ "KUTEN_TOUTEN", + IDS_MOZC(PUNCTUATION_METHOD_KUTEN_TOUTEN) }, + { "COMMA_PERIOD", + IDS_MOZC(PUNCTUATION_METHOD_COMMA_PERIOD) }, + { "KUTEN_PERIOD", + IDS_MOZC(PUNCTUATION_METHOD_KUTEN_PERIOD) }, + { "COMMA_TOUTEN", + IDS_MOZC(PUNCTUATION_METHOD_COMMA_TOUTEN) }}, + IDS_MOZC(PUNCTUATION_METHOD), + }, + { prefs::kLanguageMozcSymbolMethod, + "CORNER_BRACKET_MIDDLE_DOT", + "symbol_method", + {{ "CORNER_BRACKET_MIDDLE_DOT", + IDS_MOZC(SYMBOL_METHOD_CORNER_BRACKET_MIDDLE_DOT) }, + { "SQUARE_BRACKET_SLASH", + IDS_MOZC(SYMBOL_METHOD_SQUARE_BRACKET_SLASH) }, + { "CORNER_BRACKET_SLASH", + IDS_MOZC(SYMBOL_METHOD_CORNER_BRACKET_SLASH) }, + { "SQUARE_BRACKET_MIDDLE_DOT", + IDS_MOZC(SYMBOL_METHOD_SQUARE_BRACKET_MIDDLE_DOT) }}, + IDS_MOZC(SYMBOL_METHOD), + }, + { prefs::kLanguageMozcSpaceCharacterForm, + "FUNDAMENTAL_INPUT_MODE", + "space_character_form", + {{ "FUNDAMENTAL_INPUT_MODE", + IDS_MOZC(SPACE_CHARACTER_FORM_FUNDAMENTAL_INPUT_MODE) }, + { "FUNDAMENTAL_FULL_WIDTH", + IDS_MOZC(SPACE_CHARACTER_FORM_FUNDAMENTAL_FULL_WIDTH) }, + { "FUNDAMENTAL_HALF_WIDTH", + IDS_MOZC(SPACE_CHARACTER_FORM_FUNDAMENTAL_HALF_WIDTH) }}, + IDS_MOZC(SPACE_CHARACTER_FORM), + }, + { prefs::kLanguageMozcHistoryLearningLevel, + "DEFAULT_HISTORY", + "history_learning_level", + {{ "DEFAULT_HISTORY", + IDS_MOZC(HISTORY_LEARNING_LEVEL_DEFAULT_HISTORY) }, + { "READ_ONLY", + IDS_MOZC(HISTORY_LEARNING_LEVEL_READ_ONLY) }, + { "NO_HISTORY", + IDS_MOZC(HISTORY_LEARNING_LEVEL_NO_HISTORY) }}, + IDS_MOZC(HISTORY_LEARNING_LEVEL), + }, + // TODO(mazda): Uncomment this block once the candidate window in Chrome OS + // supports changing shortcut labels. + // { prefs::kLanguageMozcSelectionShortcut, + // "SHORTCUT_123456789", + // "selection_shortcut", + // {{ "NO_SHORTCUT", + // IDS_MOZC(SELECTION_SHORTCUT_NO_SHORTCUT) }, + // { "SHORTCUT_123456789", + // IDS_MOZC(SELECTION_SHORTCUT_SHORTCUT_123456789) }, + // { "SHORTCUT_ASDFGHJKL", + // IDS_MOZC(SELECTION_SHORTCUT_SHORTCUT_ASDFGHJKL) }}, + // IDS_MOZC(SELECTION_SHORTCUT), + // }, + { prefs::kLanguageMozcShiftKeyModeSwitch, + "ASCII_INPUT_MODE", + "shift_key_mode_switch", + {{ "OFF", + IDS_MOZC(SHIFT_KEY_MODE_SWITCH_OFF) }, + { "ASCII_INPUT_MODE", + IDS_MOZC(SHIFT_KEY_MODE_SWITCH_ASCII_INPUT_MODE) }, + { "KATAKANA_INPUT_MODE", + IDS_MOZC(SHIFT_KEY_MODE_SWITCH_KATAKANA_INPUT_MODE) }}, + IDS_MOZC(SHIFT_KEY_MODE_SWITCH), + }, + { prefs::kLanguageMozcNumpadCharacterForm, + "NUMPAD_HALF_WIDTH", + "numpad_character_form", + {{ "NUMPAD_INPUT_MODE", + IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_INPUT_MODE) }, + { "NUMPAD_FULL_WIDTH", + IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_FULL_WIDTH) }, + { "NUMPAD_HALF_WIDTH", + IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_HALF_WIDTH) }, + { "NUMPAD_DIRECT_INPUT", + IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_DIRECT_INPUT) }}, + IDS_MOZC(NUMPAD_CHARACTER_FORM), + }, +}; +COMPILE_ASSERT(kNumMozcMultipleChoicePrefs == + arraysize(kMozcMultipleChoicePrefs), + TheSizeShouldMatch); + +const LanguageIntegerRangePreference kMozcIntegerPrefs[] = { + { prefs::kLanguageMozcSuggestionsSize, 3, 1, 9, "suggestions_size", + IDS_MOZC(SUGGESTIONS_SIZE)}, +}; +COMPILE_ASSERT(kNumMozcIntegerPrefs == arraysize(kMozcIntegerPrefs), + TheSizeShouldMatch); + +#undef IDS_MOZC + +// --------------------------------------------------------------------------- +// For keyboard stuff +// --------------------------------------------------------------------------- +const LanguageMultipleChoicePreference<int> kXkbModifierMultipleChoicePrefs = { + NULL, // don't use this field since the config is associated with 3 prefs. + kNoRemap, + NULL, // does not use the ibus configuration service. + {{ kNoRemap, IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_MODIFIER_NO_REMAP }, + { kSwapCtrlAndAlt, + IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_MODIFIER_REMAP_CTRL_ALT }, + { kSwapSearchAndCtrl, + IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_MODIFIER_REMAP_SEARCH_CTRL }}, + 0, // does not use the label. +}; + +const LanguageIntegerRangePreference kXkbAutoRepeatDelayPref = { + prefs::kLanguageXkbAutoRepeatDelay, 500, 100, 2000, + NULL, // does not use the ibus configuration service. + IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_REPEAT_DELAY, +}; +const LanguageIntegerRangePreference kXkbAutoRepeatIntervalPref = { + prefs::kLanguageXkbAutoRepeatInterval, 33, 9, 100, + NULL, // does not use the ibus configuration service. + IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_REPEAT_SPEED, +}; + +const char kPreferredKeyboardLayout[] = "PreferredKeyboardLayout"; +const char kHardwareKeyboardLayout[] = "xkb:us::eng"; + +} // chromeos diff --git a/chrome/browser/chromeos/language_preferences.h b/chrome/browser/chromeos/language_preferences.h index 66061dd..f1bb333 100644 --- a/chrome/browser/chromeos/language_preferences.h +++ b/chrome/browser/chromeos/language_preferences.h @@ -6,13 +6,14 @@ #define CHROME_BROWSER_CHROMEOS_LANGUAGE_PREFERENCES_H_ #pragma once -#include "base/basictypes.h" -#include "chrome/common/pref_names.h" -#include "grit/generated_resources.h" +#include <stddef.h> // For size_t -// Section and config names for the IBus configuration daemon. +// This file defines types and declare variables used in "Languages and +// Input" settings in Chromium OS. namespace chromeos { +// The struct is used for preferences consisting of multiple choices, like +// punctuation types used in Japanese input method. template <typename DataType> struct LanguageMultipleChoicePreference { const char* pref_name; // Chrome preference name. @@ -27,6 +28,8 @@ struct LanguageMultipleChoicePreference { int label_message_id; // Resource grd ID for the label. }; +// The struct is used for preferences of boolean values, like switches to +// enable or disable particular features. struct LanguageBooleanPrefs { const char* pref_name; // Chrome preference name. bool default_pref_value; @@ -34,6 +37,8 @@ struct LanguageBooleanPrefs { int message_id; }; +// The struct is used for preferences of integer range values, like the +// key repeat rate. struct LanguageIntegerRangePreference { const char* pref_name; // Chrome preference name. int default_pref_value; @@ -43,399 +48,120 @@ struct LanguageIntegerRangePreference { int message_id; }; +// --------------------------------------------------------------------------- // For ibus-daemon -const char kGeneralSectionName[] = "general"; -const char kHotKeySectionName[] = "general/hotkey"; -const char kPreloadEnginesConfigName[] = "preload_engines"; -const char kNextEngineInMenuConfigName[] = "next_engine_in_menu"; -const char kPreviousEngineConfigName[] = "previous_engine"; - -// TODO(yusukes): Check if the "Kana/Eisu" key in the Japanese keyboard for -// Chrome OS actually generates Zenkaku_Hankaku when the keyboard gets ready. - -// ibus-daemon accepts up to 5 next-engine hot-keys. -const char kHotkeyNextEngineInMenu[] = - "Shift+Alt+Release+Shift_L,Shift+Alt+Release+Meta_L,Control+Shift+space," - "Zenkaku_Hankaku"; -// TODO(suzhe): Add more key bindings? -const char kHotkeyPreviousEngine[] = "Control+space"; - -// For Simplified Chinese input method (ibus-chewing) -const char kChewingSectionName[] = "engine/Chewing"; - -// We have to sync the |ibus_config_name|s with those in -// ibus-chewing/files/src/Config.cc. -const LanguageBooleanPrefs kChewingBooleanPrefs[] = { - { prefs::kLanguageChewingAutoShiftCur, false, "autoShiftCur", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_AUTO_SHIFT_CUR}, - { prefs::kLanguageChewingAddPhraseDirection, false, "addPhraseDirection", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_ADD_PHRASE_DIRECTION}, - { prefs::kLanguageChewingEasySymbolInput, true, "easySymbolInput", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_EASY_SYMBOL_INPUT}, - { prefs::kLanguageChewingEscCleanAllBuf, false, "escCleanAllBuf", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_ESC_CLEAN_ALL_BUF}, - { prefs::kLanguageChewingForceLowercaseEnglish, false, - "forceLowercaseEnglish", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_FORCE_LOWER_CASE_ENGLISH}, - { prefs::kLanguageChewingPlainZhuyin, false, "plainZhuyin", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_PLAIN_ZHUYIN}, - { prefs::kLanguageChewingPhraseChoiceRearward, true, "phraseChoiceRearward", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_PHRASE_CHOICE_REARWARD}, - { prefs::kLanguageChewingSpaceAsSelection, true, "spaceAsSelection", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_SPACE_AS_SELECTION}, -}; -const size_t kNumChewingBooleanPrefs = arraysize(kChewingBooleanPrefs); - -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", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_CAND_PER_PAGE}, -}; -const size_t kNumChewingIntegerPrefs = arraysize(kChewingIntegerPrefs); - -// TODO(yusukes): Temporary solution for View version of modifier key remapper. -// Remove RemapType and kXkbModifierMultipleChoicePrefs when we finish to -// migrate to DOMUI. -enum RemapType { - kNoRemap = 0, - kSwapCtrlAndAlt = 1, - kSwapSearchAndCtrl = 2, -}; -const LanguageMultipleChoicePreference<int> kXkbModifierMultipleChoicePrefs = { - NULL, // don't use this field since the config is associated with 3 prefs. - kNoRemap, - NULL, // does not use the ibus configuration service. - {{ kNoRemap, IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_MODIFIER_NO_REMAP }, - { kSwapCtrlAndAlt, - IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_MODIFIER_REMAP_CTRL_ALT }, - { kSwapSearchAndCtrl, - IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_MODIFIER_REMAP_SEARCH_CTRL }}, - 0, // does not use the label. -}; - -const LanguageIntegerRangePreference kXkbAutoRepeatDelayPref = { - prefs::kLanguageXkbAutoRepeatDelay, 500, 100, 2000, - NULL, // does not use the ibus configuration service. - IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_REPEAT_DELAY, -}; -const LanguageIntegerRangePreference kXkbAutoRepeatIntervalPref = { - prefs::kLanguageXkbAutoRepeatInterval, 33, 9, 100, - NULL, // does not use the ibus configuration service. - IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_REPEAT_SPEED, -}; - -const LanguageMultipleChoicePreference<const char*> - kChewingMultipleChoicePrefs[] = { - { prefs::kLanguageChewingKeyboardType, - "default", - "KBType", - {{ "default", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DEFAULT }, - { "hsu", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_HSU }, - { "ibm", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_IBM }, - { "gin_yieh", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_GIN_YIEH }, - { "eten", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_ETEN }, - { "eten26", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_ETEN26 }, - { "dvorak", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DVORAK }, - { "dvorak_hsu", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DVORAK_HSU }, - { "dachen_26", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DACHEN_26 }, - { "hanyu", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_HANYU }}, - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE, - }, - { prefs::kLanguageChewingSelKeys, - "1234567890", - "selKeys", - {{ "1234567890", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_1234567890 }, - { "asdfghjkl;", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_ASDFGHJKLS }, - { "asdfzxcv89", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_ASDFZXCV89 }, - { "asdfjkl789", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_ASDFJKL789 }, - { "aoeu;qjkix", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_AOEUSQJKIX }, - { "aoeuhtnsid", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_AOEUHTNSID }, - { "aoeuidhtns", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_AOEUIDHTNS }, - { "1234qweras", - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_1234QWERAS }}, - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS, - }, -}; -const size_t kNumChewingMultipleChoicePrefs = - arraysize(kChewingMultipleChoicePrefs); - -const LanguageMultipleChoicePreference<int> kChewingHsuSelKeyType = { - prefs::kLanguageChewingHsuSelKeyType, - 1, - "hsuSelKeyType", - {{ 1, IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_HSU_SEL_KEY_TYPE_1 }, - { 2, IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_HSU_SEL_KEY_TYPE_2 }}, - IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_HSU_SEL_KEY_TYPE, -}; - +// --------------------------------------------------------------------------- +extern const char kGeneralSectionName[]; +extern const char kHotKeySectionName[]; +extern const char kPreloadEnginesConfigName[]; +extern const char kNextEngineInMenuConfigName[]; +extern const char kPreviousEngineConfigName[]; +extern const char kHotkeyNextEngineInMenu[]; +extern const char kHotkeyPreviousEngine[]; + +// --------------------------------------------------------------------------- +// For Traditional Chinese input method (ibus-chewing) +// --------------------------------------------------------------------------- +extern const char kChewingSectionName[]; + +extern const LanguageBooleanPrefs kChewingBooleanPrefs[]; +// This is not ideal, but we should hard-code the number here as the value +// is referenced in other header files as array sizes. We have a +// COMPILE_ASSERT in .cc to ensure that the number is correct. +const size_t kNumChewingBooleanPrefs = 8; + +extern const LanguageIntegerRangePreference kChewingIntegerPrefs[]; +// See comments at kNumChewingBooleanPrefs for why we hard-code this here. +const size_t kNumChewingIntegerPrefs = 2; + +extern const LanguageMultipleChoicePreference<const char*> + kChewingMultipleChoicePrefs[]; +// See comments at kNumChewingBooleanPrefs for why we hard-code this here. +const size_t kNumChewingMultipleChoicePrefs = 2; + +extern const LanguageMultipleChoicePreference<int> kChewingHsuSelKeyType; + +// --------------------------------------------------------------------------- // For Korean input method (ibus-hangul) -const char kHangulSectionName[] = "engine/Hangul"; -const char kHangulKeyboardConfigName[] = "HangulKeyboard"; -const char kHangulHanjaKeysConfigName[] = "HanjaKeys"; -// We add Control+Alt+9 in addition to the two default keys since Hanja key -// might not be available on the Chrome OS keyboard and F9 key is reserved by -// the window manager. -// TODO: Hanja keys are not configurable yet (and we're not sure if it should.) -const char kHangulHanjaKeys[] = "F9,Hangul_Hanja,Control+Alt+9"; +// --------------------------------------------------------------------------- +extern const char kHangulSectionName[]; +extern const char kHangulKeyboardConfigName[]; +extern const char kHangulHanjaKeysConfigName[]; +extern const char kHangulHanjaKeys[]; -const struct HangulKeyboardNameIDPair { +struct HangulKeyboardNameIDPair { int message_id; const char* keyboard_id; -} kHangulKeyboardNameIDPairs[] = { - // We have to sync the |keyboard_id|s with those in - // ibus-hangul/files/setup/main.py. - { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_2_SET, "2" }, - { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_3_SET_FINAL, - "3f" }, - { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_3_SET_390, "39" }, - { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_3_SET_NO_SHIFT, - "3s" }, - // We don't support "Sebeolsik 2 set" keyboard. }; +extern const HangulKeyboardNameIDPair kHangulKeyboardNameIDPairs[]; +// See comments at kNumChewingBooleanPrefs for why we hard-code this here. +const size_t kNumHangulKeyboardNameIDPairs = 4; + +// --------------------------------------------------------------------------- // For Simplified Chinese input method (ibus-pinyin) -const char kPinyinSectionName[] = "engine/Pinyin"; +// --------------------------------------------------------------------------- +extern const char kPinyinSectionName[]; -// We have to sync the |ibus_config_name|s with those in -// ibus-pinyin/files/src/Config.cc. -const LanguageBooleanPrefs kPinyinBooleanPrefs[] = { - { prefs::kLanguagePinyinCorrectPinyin, true, "CorrectPinyin", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_CORRECT_PINYIN }, - { prefs::kLanguagePinyinFuzzyPinyin, false, "FuzzyPinyin", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_FUZZY_PINYIN }, - { prefs::kLanguagePinyinShiftSelectCandidate, false, "ShiftSelectCandidate", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_SHIFT_SELECT_PINYIN }, - { prefs::kLanguagePinyinMinusEqualPage, true, "MinusEqualPage", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_MINUS_EQUAL_PAGE }, - { prefs::kLanguagePinyinCommaPeriodPage, true, "CommaPeriodPage", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_COMMA_PERIOD_PAGE }, - { prefs::kLanguagePinyinAutoCommit, false, "AutoCommit", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_AUTO_COMMIT }, - { prefs::kLanguagePinyinDoublePinyin, false, "DoublePinyin", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_DOUBLE_PINYIN }, - { prefs::kLanguagePinyinInitChinese, true, "InitChinese", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_CHINESE }, - { prefs::kLanguagePinyinInitFull, false, "InitFull", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_FULL }, - { prefs::kLanguagePinyinInitFullPunct, true, "InitFullPunct", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_FULL_PUNCT }, - { prefs::kLanguagePinyinInitSimplifiedChinese, true, "InitSimplifiedChinese", - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_SIMPLIFIED_CHINESE }, - // TODO(yusukes): Support PINYIN_{INCOMPLETE,CORRECT,FUZZY}_... prefs (32 - // additional boolean prefs.) -}; -const size_t kNumPinyinBooleanPrefs = arraysize(kPinyinBooleanPrefs); -// TODO(yusukes): Support HalfWidthPuncts and IncompletePinyin prefs if needed. +extern const LanguageBooleanPrefs kPinyinBooleanPrefs[]; +// See comments at kNumChewingBooleanPrefs for why we hard-code this here. +const size_t kNumPinyinBooleanPrefs = 11; -const LanguageMultipleChoicePreference<int> kPinyinDoublePinyinSchema = { - prefs::kLanguagePinyinDoublePinyinSchema, - 0, - "DoublePinyinSchema", - {{ 0, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_MSPY}, - { 1, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_ZRM}, - { 2, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_ABC}, - { 3, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_ZGPY}, - { 4, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_PYJJ}}, - IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA, -}; +extern const LanguageMultipleChoicePreference<int> kPinyinDoublePinyinSchema; -const struct { +struct PinyinIntegerPref { const char* pref_name; // Chrome preference name. int default_pref_value; const char* ibus_config_name; // TODO(yusukes): Add message_id if needed. -} kPinyinIntegerPrefs[] = { - // TODO(yusukes): the type of lookup_table_page_size on ibus should be uint. - { prefs::kLanguagePinyinLookupTablePageSize, 5, "LookupTablePageSize" }, }; -const size_t kNumPinyinIntegerPrefs = ARRAYSIZE_UNSAFE(kPinyinIntegerPrefs); +extern const PinyinIntegerPref kPinyinIntegerPrefs[]; +const size_t kNumPinyinIntegerPrefs = 1; + +// --------------------------------------------------------------------------- // For Japanese input method (ibus-mozc) -const char kMozcSectionName[] = "engine/Mozc"; +// --------------------------------------------------------------------------- +extern const char kMozcSectionName[]; -#define IDS_MOZC(suffix) \ - IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_##suffix +extern const LanguageBooleanPrefs kMozcBooleanPrefs[]; +// See comments at kNumChewingBooleanPrefs for why we hard-code this here. +const size_t kNumMozcBooleanPrefs = 8; -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(kMozcBooleanPrefs); +extern const LanguageMultipleChoicePreference<const char*> + kMozcMultipleChoicePrefs[]; +// See comments at kNumChewingBooleanPrefs for why we hard-code this here. +const size_t kNumMozcMultipleChoicePrefs = 8; -const LanguageMultipleChoicePreference<const char*> - kMozcMultipleChoicePrefs[] = { - { prefs::kLanguageMozcPreeditMethod, - "ROMAN", - "preedit_method", - {{ "ROMAN", IDS_MOZC(PREEDIT_METHOD_ROMAN) }, - { "KANA", IDS_MOZC(PREEDIT_METHOD_KANA) }}, - IDS_MOZC(PREEDIT_METHOD), - }, - { prefs::kLanguageMozcSessionKeymap, - "MSIME", - "session_keymap", - {{ "ATOK", IDS_MOZC(SESSION_KEYMAP_ATOK) }, - { "MSIME", IDS_MOZC(SESSION_KEYMAP_MSIME) }, - { "KOTOERI", IDS_MOZC(SESSION_KEYMAP_KOTOERI) }}, - // TODO: Support "CUSTOM" keymap. - IDS_MOZC(SESSION_KEYMAP), - }, - { prefs::kLanguageMozcPunctuationMethod, - "KUTEN_TOUTEN", - "punctuation_method", - {{ "KUTEN_TOUTEN", - IDS_MOZC(PUNCTUATION_METHOD_KUTEN_TOUTEN) }, - { "COMMA_PERIOD", - IDS_MOZC(PUNCTUATION_METHOD_COMMA_PERIOD) }, - { "KUTEN_PERIOD", - IDS_MOZC(PUNCTUATION_METHOD_KUTEN_PERIOD) }, - { "COMMA_TOUTEN", - IDS_MOZC(PUNCTUATION_METHOD_COMMA_TOUTEN) }}, - IDS_MOZC(PUNCTUATION_METHOD), - }, - { prefs::kLanguageMozcSymbolMethod, - "CORNER_BRACKET_MIDDLE_DOT", - "symbol_method", - {{ "CORNER_BRACKET_MIDDLE_DOT", - IDS_MOZC(SYMBOL_METHOD_CORNER_BRACKET_MIDDLE_DOT) }, - { "SQUARE_BRACKET_SLASH", - IDS_MOZC(SYMBOL_METHOD_SQUARE_BRACKET_SLASH) }, - { "CORNER_BRACKET_SLASH", - IDS_MOZC(SYMBOL_METHOD_CORNER_BRACKET_SLASH) }, - { "SQUARE_BRACKET_MIDDLE_DOT", - IDS_MOZC(SYMBOL_METHOD_SQUARE_BRACKET_MIDDLE_DOT) }}, - IDS_MOZC(SYMBOL_METHOD), - }, - { prefs::kLanguageMozcSpaceCharacterForm, - "FUNDAMENTAL_INPUT_MODE", - "space_character_form", - {{ "FUNDAMENTAL_INPUT_MODE", - IDS_MOZC(SPACE_CHARACTER_FORM_FUNDAMENTAL_INPUT_MODE) }, - { "FUNDAMENTAL_FULL_WIDTH", - IDS_MOZC(SPACE_CHARACTER_FORM_FUNDAMENTAL_FULL_WIDTH) }, - { "FUNDAMENTAL_HALF_WIDTH", - IDS_MOZC(SPACE_CHARACTER_FORM_FUNDAMENTAL_HALF_WIDTH) }}, - IDS_MOZC(SPACE_CHARACTER_FORM), - }, - { prefs::kLanguageMozcHistoryLearningLevel, - "DEFAULT_HISTORY", - "history_learning_level", - {{ "DEFAULT_HISTORY", - IDS_MOZC(HISTORY_LEARNING_LEVEL_DEFAULT_HISTORY) }, - { "READ_ONLY", - IDS_MOZC(HISTORY_LEARNING_LEVEL_READ_ONLY) }, - { "NO_HISTORY", - IDS_MOZC(HISTORY_LEARNING_LEVEL_NO_HISTORY) }}, - IDS_MOZC(HISTORY_LEARNING_LEVEL), - }, - // TODO(mazda): Uncomment this block once the candidate window in Chrome OS - // supports changing shortcut labels. - // { prefs::kLanguageMozcSelectionShortcut, - // "SHORTCUT_123456789", - // "selection_shortcut", - // {{ "NO_SHORTCUT", - // IDS_MOZC(SELECTION_SHORTCUT_NO_SHORTCUT) }, - // { "SHORTCUT_123456789", - // IDS_MOZC(SELECTION_SHORTCUT_SHORTCUT_123456789) }, - // { "SHORTCUT_ASDFGHJKL", - // IDS_MOZC(SELECTION_SHORTCUT_SHORTCUT_ASDFGHJKL) }}, - // IDS_MOZC(SELECTION_SHORTCUT), - // }, - { prefs::kLanguageMozcShiftKeyModeSwitch, - "ASCII_INPUT_MODE", - "shift_key_mode_switch", - {{ "OFF", - IDS_MOZC(SHIFT_KEY_MODE_SWITCH_OFF) }, - { "ASCII_INPUT_MODE", - IDS_MOZC(SHIFT_KEY_MODE_SWITCH_ASCII_INPUT_MODE) }, - { "KATAKANA_INPUT_MODE", - IDS_MOZC(SHIFT_KEY_MODE_SWITCH_KATAKANA_INPUT_MODE) }}, - IDS_MOZC(SHIFT_KEY_MODE_SWITCH), - }, - { prefs::kLanguageMozcNumpadCharacterForm, - "NUMPAD_HALF_WIDTH", - "numpad_character_form", - {{ "NUMPAD_INPUT_MODE", - IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_INPUT_MODE) }, - { "NUMPAD_FULL_WIDTH", - IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_FULL_WIDTH) }, - { "NUMPAD_HALF_WIDTH", - IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_HALF_WIDTH) }, - { "NUMPAD_DIRECT_INPUT", - IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_DIRECT_INPUT) }}, - IDS_MOZC(NUMPAD_CHARACTER_FORM), - }, -}; -const size_t kNumMozcMultipleChoicePrefs = arraysize(kMozcMultipleChoicePrefs); +extern const LanguageIntegerRangePreference kMozcIntegerPrefs[]; +// See comments at kNumChewingBooleanPrefs for why we hard-code this here. +const size_t kNumMozcIntegerPrefs = 1; -const LanguageIntegerRangePreference kMozcIntegerPrefs[] = { - { prefs::kLanguageMozcSuggestionsSize, 3, 1, 9, "suggestions_size", - IDS_MOZC(SUGGESTIONS_SIZE)}, +// --------------------------------------------------------------------------- +// For keyboard stuff +// --------------------------------------------------------------------------- +// TODO(yusukes): Temporary solution for View version of modifier key remapper. +// Remove RemapType and kXkbModifierMultipleChoicePrefs when we finish to +// migrate to DOMUI. +enum RemapType { + kNoRemap = 0, + kSwapCtrlAndAlt = 1, + kSwapSearchAndCtrl = 2, }; -const size_t kNumMozcIntegerPrefs = arraysize(kMozcIntegerPrefs); - -#undef IDS_MOZC +extern const LanguageMultipleChoicePreference<int> + kXkbModifierMultipleChoicePrefs; -// For Traditional Chinese input methods (ibus-pinyin-bopomofo and ibus-chewing) -// TODO(yusukes): Add constants for Traditional Chinese input methods. +extern const LanguageIntegerRangePreference kXkbAutoRepeatDelayPref; +extern const LanguageIntegerRangePreference kXkbAutoRepeatIntervalPref; // A string Chrome preference (Local State) of the preferred keyboard layout in // the login screen. -const char kPreferredKeyboardLayout[] = "PreferredKeyboardLayout"; +extern const char kPreferredKeyboardLayout[]; // A input method name that corresponds the hardware keyboard layout. // TODO(yusukes): just assuming US qwerty keyboard is not always correct. -const char kHardwareKeyboardLayout[] = "xkb:us::eng"; +// crosbug.com/5579. +extern const char kHardwareKeyboardLayout[]; } // chromeos diff --git a/chrome/browser/chromeos/login/eula_view.cc b/chrome/browser/chromeos/login/eula_view.cc index b38a66f..adf0e9c 100644 --- a/chrome/browser/chromeos/login/eula_view.cc +++ b/chrome/browser/chromeos/login/eula_view.cc @@ -24,6 +24,7 @@ #include "chrome/browser/tab_contents/tab_contents.h" #include "chrome/browser/views/dom_view.h" #include "chrome/common/native_web_keyboard_event.h" +#include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" #include "chrome/installer/util/google_update_settings.h" #include "grit/chromium_strings.h" diff --git a/chrome/browser/chromeos/login/existing_user_controller.cc b/chrome/browser/chromeos/login/existing_user_controller.cc index 4cc5316..414e6b2 100644 --- a/chrome/browser/chromeos/login/existing_user_controller.cc +++ b/chrome/browser/chromeos/login/existing_user_controller.cc @@ -30,6 +30,7 @@ #include "chrome/browser/profile.h" #include "chrome/browser/profile_manager.h" #include "gfx/native_widget_types.h" +#include "grit/generated_resources.h" #include "grit/theme_resources.h" #include "views/screen.h" #include "views/widget/widget_gtk.h" diff --git a/chrome/browser/chromeos/login/login_screen.cc b/chrome/browser/chromeos/login/login_screen.cc index 7aea84a..caa84a1 100644 --- a/chrome/browser/chromeos/login/login_screen.cc +++ b/chrome/browser/chromeos/login/login_screen.cc @@ -23,6 +23,7 @@ #include "chrome/browser/profile.h" #include "chrome/browser/profile_manager.h" #include "chrome/common/notification_service.h" +#include "grit/generated_resources.h" #include "grit/theme_resources.h" namespace chromeos { diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc index 3434554..11b590b 100644 --- a/chrome/browser/chromeos/login/wizard_controller.cc +++ b/chrome/browser/chromeos/login/wizard_controller.cc @@ -42,6 +42,7 @@ #include "chrome/browser/profile_manager.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/notification_service.h" +#include "chrome/common/pref_names.h" #include "cros/chromeos_wm_ipc_enums.h" #include "unicode/timezone.h" #include "views/accelerator.h" diff --git a/chrome/browser/chromeos/options/language_config_model.cc b/chrome/browser/chromeos/options/language_config_model.cc index c0d3cfd..c6247a0 100644 --- a/chrome/browser/chromeos/options/language_config_model.cc +++ b/chrome/browser/chromeos/options/language_config_model.cc @@ -16,6 +16,7 @@ #include "chrome/browser/chromeos/preferences.h" #include "chrome/common/notification_type.h" #include "chrome/common/pref_names.h" +#include "grit/generated_resources.h" namespace chromeos { diff --git a/chrome/browser/chromeos/options/language_hangul_config_view.cc b/chrome/browser/chromeos/options/language_hangul_config_view.cc index 9158c89..02eed33 100644 --- a/chrome/browser/chromeos/options/language_hangul_config_view.cc +++ b/chrome/browser/chromeos/options/language_hangul_config_view.cc @@ -28,7 +28,7 @@ namespace chromeos { class HangulKeyboardComboboxModel : public ComboboxModel { public: HangulKeyboardComboboxModel() { - for (size_t i = 0; i < arraysize(kHangulKeyboardNameIDPairs); ++i) { + for (size_t i = 0; i < kNumHangulKeyboardNameIDPairs; ++i) { layouts_.push_back(std::make_pair( l10n_util::GetStringUTF8(kHangulKeyboardNameIDPairs[i].message_id), kHangulKeyboardNameIDPairs[i].keyboard_id)); diff --git a/chrome/browser/chromeos/status/language_menu_button.cc b/chrome/browser/chromeos/status/language_menu_button.cc index 695cdf7..127b6bf 100644 --- a/chrome/browser/chromeos/status/language_menu_button.cc +++ b/chrome/browser/chromeos/status/language_menu_button.cc @@ -19,6 +19,7 @@ #include "chrome/browser/metrics/user_metrics.h" #include "chrome/browser/pref_service.h" #include "chrome/browser/profile.h" +#include "chrome/common/pref_names.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" diff --git a/chrome/browser/chromeos/usb_mount_observer.cc b/chrome/browser/chromeos/usb_mount_observer.cc index d0e329f..16928c6 100644 --- a/chrome/browser/chromeos/usb_mount_observer.cc +++ b/chrome/browser/chromeos/usb_mount_observer.cc @@ -10,6 +10,7 @@ #include "chrome/browser/dom_ui/filebrowse_ui.h" #include "chrome/browser/pref_service.h" #include "chrome/browser/tab_contents/tab_contents.h" +#include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" namespace chromeos { diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 207689d..c8533ac 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -457,6 +457,8 @@ 'browser/chromeos/gview_request_interceptor.h', 'browser/chromeos/input_method/input_method_util.cc', 'browser/chromeos/input_method/input_method_util.h', + 'browser/chromeos/language_preferences.cc', + 'browser/chromeos/language_preferences.h', 'browser/chromeos/login/account_creation_view.cc', 'browser/chromeos/login/account_creation_view.h', 'browser/chromeos/login/account_screen.cc', |