[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 1 | // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #include "chrome/browser/chromeos/preferences.h" |
| 6 | |
| 7 | #include "base/string_util.h" |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 8 | #include "base/utf_string_conversions.h" |
[email protected] | 62c7ef3 | 2010-03-23 23:44:24 | [diff] [blame] | 9 | #include "chrome/browser/chromeos/cros/cros_library.h" |
[email protected] | 291d8b7 | 2010-06-21 09:43:14 | [diff] [blame] | 10 | #include "chrome/browser/chromeos/cros/input_method_library.h" |
[email protected] | 268b02f | 2010-02-04 21:07:15 | [diff] [blame] | 11 | #include "chrome/browser/chromeos/cros/synaptics_library.h" |
[email protected] | 052313b | 2010-02-19 09:43:08 | [diff] [blame] | 12 | #include "chrome/browser/pref_member.h" |
| 13 | #include "chrome/browser/pref_service.h" |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 14 | #include "chrome/common/notification_service.h" |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 15 | #include "chrome/common/pref_names.h" |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 16 | #include "unicode/timezone.h" |
| 17 | |
| 18 | namespace chromeos { |
| 19 | |
| 20 | // static |
| 21 | void Preferences::RegisterUserPrefs(PrefService* prefs) { |
[email protected] | 20ce516d | 2010-06-18 02:20:04 | [diff] [blame] | 22 | prefs->RegisterStringPref(prefs::kTimeZone, "US/Pacific"); |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 23 | prefs->RegisterBooleanPref(prefs::kTapToClickEnabled, false); |
[email protected] | fe23d5a3 | 2010-05-28 02:43:04 | [diff] [blame] | 24 | prefs->RegisterBooleanPref(prefs::kAccessibilityEnabled, false); |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 25 | prefs->RegisterBooleanPref(prefs::kVertEdgeScrollEnabled, false); |
[email protected] | 539d8f8 | 2010-05-27 14:52:11 | [diff] [blame] | 26 | prefs->RegisterIntegerPref(prefs::kTouchpadSpeedFactor, 9); |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 27 | prefs->RegisterIntegerPref(prefs::kTouchpadSensitivity, 5); |
[email protected] | 20ce516d | 2010-06-18 02:20:04 | [diff] [blame] | 28 | prefs->RegisterStringPref(prefs::kLanguageCurrentInputMethod, ""); |
| 29 | prefs->RegisterStringPref(prefs::kLanguagePreviousInputMethod, ""); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 30 | prefs->RegisterStringPref(prefs::kLanguageHotkeyNextEngineInMenu, |
| 31 | kHotkeyNextEngineInMenu); |
| 32 | prefs->RegisterStringPref(prefs::kLanguageHotkeyPreviousEngine, |
| 33 | kHotkeyPreviousEngine); |
[email protected] | 70aa5b3 | 2010-04-05 08:30:34 | [diff] [blame] | 34 | prefs->RegisterStringPref(prefs::kLanguagePreloadEngines, |
[email protected] | 20ce516d | 2010-06-18 02:20:04 | [diff] [blame] | 35 | kFallbackInputMethodId); // EN layout |
[email protected] | 525dbe2 | 2010-06-01 07:05:43 | [diff] [blame] | 36 | for (size_t i = 0; i < kNumChewingBooleanPrefs; ++i) { |
| 37 | prefs->RegisterBooleanPref(kChewingBooleanPrefs[i].pref_name, |
| 38 | kChewingBooleanPrefs[i].default_pref_value); |
| 39 | } |
| 40 | for (size_t i = 0; i < kNumChewingMultipleChoicePrefs; ++i) { |
| 41 | prefs->RegisterStringPref( |
| 42 | kChewingMultipleChoicePrefs[i].pref_name, |
[email protected] | 20ce516d | 2010-06-18 02:20:04 | [diff] [blame] | 43 | kChewingMultipleChoicePrefs[i].default_pref_value); |
[email protected] | 525dbe2 | 2010-06-01 07:05:43 | [diff] [blame] | 44 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 45 | prefs->RegisterIntegerPref(kChewingHsuSelKeyType.pref_name, |
| 46 | kChewingHsuSelKeyType.default_pref_value); |
| 47 | |
[email protected] | 15c5308 | 2010-06-03 03:28:21 | [diff] [blame] | 48 | for (size_t i = 0; i < kNumChewingIntegerPrefs; ++i) { |
| 49 | prefs->RegisterIntegerPref(kChewingIntegerPrefs[i].pref_name, |
| 50 | kChewingIntegerPrefs[i].default_pref_value); |
| 51 | } |
[email protected] | 20ce516d | 2010-06-18 02:20:04 | [diff] [blame] | 52 | prefs->RegisterStringPref( |
| 53 | prefs::kLanguageHangulKeyboard, |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 54 | kHangulKeyboardNameIDPairs[0].keyboard_id); |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 55 | for (size_t i = 0; i < kNumPinyinBooleanPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 56 | prefs->RegisterBooleanPref(kPinyinBooleanPrefs[i].pref_name, |
[email protected] | 6e5c4b8 | 2010-05-24 08:18:44 | [diff] [blame] | 57 | kPinyinBooleanPrefs[i].default_pref_value); |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 58 | } |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 59 | for (size_t i = 0; i < kNumPinyinIntegerPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 60 | prefs->RegisterIntegerPref(kPinyinIntegerPrefs[i].pref_name, |
[email protected] | 6e5c4b8 | 2010-05-24 08:18:44 | [diff] [blame] | 61 | kPinyinIntegerPrefs[i].default_pref_value); |
| 62 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 63 | prefs->RegisterIntegerPref(kPinyinDoublePinyinSchema.pref_name, |
| 64 | kPinyinDoublePinyinSchema.default_pref_value); |
| 65 | |
[email protected] | 8a1ace2 | 2010-06-10 05:38:25 | [diff] [blame] | 66 | for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { |
| 67 | prefs->RegisterBooleanPref(kMozcBooleanPrefs[i].pref_name, |
| 68 | kMozcBooleanPrefs[i].default_pref_value); |
| 69 | } |
[email protected] | 6e5c4b8 | 2010-05-24 08:18:44 | [diff] [blame] | 70 | for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 71 | prefs->RegisterStringPref( |
| 72 | kMozcMultipleChoicePrefs[i].pref_name, |
[email protected] | 20ce516d | 2010-06-18 02:20:04 | [diff] [blame] | 73 | kMozcMultipleChoicePrefs[i].default_pref_value); |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 74 | } |
[email protected] | 5403746 | 2010-06-22 02:06:23 | [diff] [blame] | 75 | for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) { |
| 76 | prefs->RegisterIntegerPref(kMozcIntegerPrefs[i].pref_name, |
| 77 | kMozcIntegerPrefs[i].default_pref_value); |
| 78 | } |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 79 | } |
| 80 | |
| 81 | void Preferences::Init(PrefService* prefs) { |
| 82 | timezone_.Init(prefs::kTimeZone, prefs, this); |
| 83 | tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, prefs, this); |
[email protected] | fe23d5a3 | 2010-05-28 02:43:04 | [diff] [blame] | 84 | accessibility_enabled_.Init(prefs::kAccessibilityEnabled, prefs, this); |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 85 | vert_edge_scroll_enabled_.Init(prefs::kVertEdgeScrollEnabled, prefs, this); |
| 86 | speed_factor_.Init(prefs::kTouchpadSpeedFactor, prefs, this); |
| 87 | sensitivity_.Init(prefs::kTouchpadSensitivity, prefs, this); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 88 | language_hotkey_next_engine_in_menu_.Init( |
| 89 | prefs::kLanguageHotkeyNextEngineInMenu, prefs, this); |
| 90 | language_hotkey_previous_engine_.Init( |
| 91 | prefs::kLanguageHotkeyPreviousEngine, prefs, this); |
[email protected] | 70aa5b3 | 2010-04-05 08:30:34 | [diff] [blame] | 92 | language_preload_engines_.Init(prefs::kLanguagePreloadEngines, prefs, this); |
[email protected] | 525dbe2 | 2010-06-01 07:05:43 | [diff] [blame] | 93 | for (size_t i = 0; i < kNumChewingBooleanPrefs; ++i) { |
| 94 | language_chewing_boolean_prefs_[i].Init( |
| 95 | kChewingBooleanPrefs[i].pref_name, prefs, this); |
| 96 | } |
| 97 | for (size_t i = 0; i < kNumChewingMultipleChoicePrefs; ++i) { |
| 98 | language_chewing_multiple_choice_prefs_[i].Init( |
| 99 | kChewingMultipleChoicePrefs[i].pref_name, prefs, this); |
| 100 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 101 | language_chewing_hsu_sel_key_type_.Init( |
| 102 | kChewingHsuSelKeyType.pref_name, prefs, this); |
[email protected] | 15c5308 | 2010-06-03 03:28:21 | [diff] [blame] | 103 | for (size_t i = 0; i < kNumChewingIntegerPrefs; ++i) { |
| 104 | language_chewing_integer_prefs_[i].Init( |
| 105 | kChewingIntegerPrefs[i].pref_name, prefs, this); |
| 106 | } |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 107 | language_hangul_keyboard_.Init(prefs::kLanguageHangulKeyboard, prefs, this); |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 108 | for (size_t i = 0; i < kNumPinyinBooleanPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 109 | language_pinyin_boolean_prefs_[i].Init( |
| 110 | kPinyinBooleanPrefs[i].pref_name, prefs, this); |
| 111 | } |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 112 | for (size_t i = 0; i < kNumPinyinIntegerPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 113 | language_pinyin_int_prefs_[i].Init( |
| 114 | kPinyinIntegerPrefs[i].pref_name, prefs, this); |
| 115 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 116 | language_pinyin_double_pinyin_schema_.Init( |
| 117 | kPinyinDoublePinyinSchema.pref_name, prefs, this); |
[email protected] | 8a1ace2 | 2010-06-10 05:38:25 | [diff] [blame] | 118 | for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { |
| 119 | language_mozc_boolean_prefs_[i].Init( |
| 120 | kMozcBooleanPrefs[i].pref_name, prefs, this); |
| 121 | } |
[email protected] | 6e5c4b8 | 2010-05-24 08:18:44 | [diff] [blame] | 122 | for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { |
| 123 | language_mozc_multiple_choice_prefs_[i].Init( |
| 124 | kMozcMultipleChoicePrefs[i].pref_name, prefs, this); |
| 125 | } |
[email protected] | 5403746 | 2010-06-22 02:06:23 | [diff] [blame] | 126 | for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) { |
| 127 | language_mozc_integer_prefs_[i].Init( |
| 128 | kMozcIntegerPrefs[i].pref_name, prefs, this); |
| 129 | } |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 130 | |
| 131 | // Initialize touchpad settings to what's saved in user preferences. |
| 132 | NotifyPrefChanged(NULL); |
| 133 | } |
| 134 | |
| 135 | void Preferences::Observe(NotificationType type, |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 136 | const NotificationSource& source, |
| 137 | const NotificationDetails& details) { |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 138 | if (type == NotificationType::PREF_CHANGED) |
| 139 | NotifyPrefChanged(Details<std::wstring>(details).ptr()); |
| 140 | } |
| 141 | |
| 142 | void Preferences::NotifyPrefChanged(const std::wstring* pref_name) { |
| 143 | if (!pref_name || *pref_name == prefs::kTimeZone) |
| 144 | SetTimeZone(timezone_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 145 | if (!pref_name || *pref_name == prefs::kTapToClickEnabled) { |
[email protected] | 62c7ef3 | 2010-03-23 23:44:24 | [diff] [blame] | 146 | CrosLibrary::Get()->GetSynapticsLibrary()->SetBoolParameter( |
| 147 | PARAM_BOOL_TAP_TO_CLICK, |
[email protected] | c31b3c72 | 2009-10-21 20:01:35 | [diff] [blame] | 148 | tap_to_click_enabled_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 149 | } |
| 150 | if (!pref_name || *pref_name == prefs::kVertEdgeScrollEnabled) { |
[email protected] | 62c7ef3 | 2010-03-23 23:44:24 | [diff] [blame] | 151 | CrosLibrary::Get()->GetSynapticsLibrary()->SetBoolParameter( |
[email protected] | c31b3c72 | 2009-10-21 20:01:35 | [diff] [blame] | 152 | PARAM_BOOL_VERTICAL_EDGE_SCROLLING, |
| 153 | vert_edge_scroll_enabled_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 154 | } |
| 155 | if (!pref_name || *pref_name == prefs::kTouchpadSpeedFactor) { |
[email protected] | 62c7ef3 | 2010-03-23 23:44:24 | [diff] [blame] | 156 | CrosLibrary::Get()->GetSynapticsLibrary()->SetRangeParameter( |
| 157 | PARAM_RANGE_SPEED_SENSITIVITY, |
| 158 | speed_factor_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 159 | } |
| 160 | if (!pref_name || *pref_name == prefs::kTouchpadSensitivity) { |
[email protected] | 62c7ef3 | 2010-03-23 23:44:24 | [diff] [blame] | 161 | CrosLibrary::Get()->GetSynapticsLibrary()->SetRangeParameter( |
| 162 | PARAM_RANGE_TOUCH_SENSITIVITY, |
| 163 | sensitivity_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 164 | } |
[email protected] | 8be9ff2 | 2010-06-08 02:13:54 | [diff] [blame] | 165 | |
| 166 | // We don't handle prefs::kLanguageCurrentInputMethod and PreviousInputMethod |
| 167 | // here. |
| 168 | |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 169 | if (!pref_name || *pref_name == prefs::kLanguageHotkeyNextEngineInMenu) { |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 170 | SetLanguageConfigStringListAsCSV( |
| 171 | kHotKeySectionName, |
| 172 | kNextEngineInMenuConfigName, |
| 173 | language_hotkey_next_engine_in_menu_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 174 | } |
| 175 | if (!pref_name || *pref_name == prefs::kLanguageHotkeyPreviousEngine) { |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 176 | SetLanguageConfigStringListAsCSV( |
| 177 | kHotKeySectionName, |
| 178 | kPreviousEngineConfigName, |
| 179 | language_hotkey_previous_engine_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 180 | } |
| 181 | if (!pref_name || *pref_name == prefs::kLanguagePreloadEngines) { |
[email protected] | d01bb807 | 2010-04-12 13:00:15 | [diff] [blame] | 182 | SetLanguageConfigStringListAsCSV(kGeneralSectionName, |
| 183 | kPreloadEnginesConfigName, |
| 184 | language_preload_engines_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 185 | } |
[email protected] | 525dbe2 | 2010-06-01 07:05:43 | [diff] [blame] | 186 | for (size_t i = 0; i < kNumChewingBooleanPrefs; ++i) { |
| 187 | if (!pref_name || *pref_name == kChewingBooleanPrefs[i].pref_name) { |
| 188 | SetLanguageConfigBoolean(kChewingSectionName, |
| 189 | kChewingBooleanPrefs[i].ibus_config_name, |
| 190 | language_chewing_boolean_prefs_[i].GetValue()); |
| 191 | } |
| 192 | } |
| 193 | for (size_t i = 0; i < kNumChewingMultipleChoicePrefs; ++i) { |
| 194 | if (!pref_name || *pref_name == kChewingMultipleChoicePrefs[i].pref_name) { |
| 195 | SetLanguageConfigString( |
| 196 | kChewingSectionName, |
| 197 | kChewingMultipleChoicePrefs[i].ibus_config_name, |
| 198 | language_chewing_multiple_choice_prefs_[i].GetValue()); |
| 199 | } |
| 200 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 201 | if (!pref_name || *pref_name == kChewingHsuSelKeyType.pref_name) { |
| 202 | SetLanguageConfigInteger( |
| 203 | kChewingSectionName, |
| 204 | kChewingHsuSelKeyType.ibus_config_name, |
| 205 | language_chewing_hsu_sel_key_type_.GetValue()); |
| 206 | } |
[email protected] | 15c5308 | 2010-06-03 03:28:21 | [diff] [blame] | 207 | for (size_t i = 0; i < kNumChewingIntegerPrefs; ++i) { |
| 208 | if (!pref_name || *pref_name == kChewingIntegerPrefs[i].pref_name) { |
| 209 | SetLanguageConfigInteger(kChewingSectionName, |
| 210 | kChewingIntegerPrefs[i].ibus_config_name, |
| 211 | language_chewing_integer_prefs_[i].GetValue()); |
| 212 | } |
| 213 | } |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 214 | if (!pref_name || *pref_name == prefs::kLanguageHangulKeyboard) { |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 215 | SetLanguageConfigString(kHangulSectionName, kHangulKeyboardConfigName, |
| 216 | language_hangul_keyboard_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 217 | } |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 218 | for (size_t i = 0; i < kNumPinyinBooleanPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 219 | if (!pref_name || *pref_name == kPinyinBooleanPrefs[i].pref_name) { |
| 220 | SetLanguageConfigBoolean(kPinyinSectionName, |
| 221 | kPinyinBooleanPrefs[i].ibus_config_name, |
| 222 | language_pinyin_boolean_prefs_[i].GetValue()); |
| 223 | } |
| 224 | } |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 225 | for (size_t i = 0; i < kNumPinyinIntegerPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 226 | if (!pref_name || *pref_name == kPinyinIntegerPrefs[i].pref_name) { |
| 227 | SetLanguageConfigInteger(kPinyinSectionName, |
| 228 | kPinyinIntegerPrefs[i].ibus_config_name, |
| 229 | language_pinyin_int_prefs_[i].GetValue()); |
| 230 | } |
| 231 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 232 | if (!pref_name || *pref_name == kPinyinDoublePinyinSchema.pref_name) { |
| 233 | SetLanguageConfigInteger( |
| 234 | kPinyinSectionName, |
| 235 | kPinyinDoublePinyinSchema.ibus_config_name, |
| 236 | language_pinyin_double_pinyin_schema_.GetValue()); |
| 237 | } |
[email protected] | 8a1ace2 | 2010-06-10 05:38:25 | [diff] [blame] | 238 | for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) { |
| 239 | if (!pref_name || *pref_name == kMozcBooleanPrefs[i].pref_name) { |
| 240 | SetLanguageConfigBoolean(kMozcSectionName, |
| 241 | kMozcBooleanPrefs[i].ibus_config_name, |
| 242 | language_mozc_boolean_prefs_[i].GetValue()); |
| 243 | } |
| 244 | } |
[email protected] | 6e5c4b8 | 2010-05-24 08:18:44 | [diff] [blame] | 245 | for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { |
| 246 | if (!pref_name || *pref_name == kMozcMultipleChoicePrefs[i].pref_name) { |
| 247 | SetLanguageConfigString( |
| 248 | kMozcSectionName, |
| 249 | kMozcMultipleChoicePrefs[i].ibus_config_name, |
| 250 | language_mozc_multiple_choice_prefs_[i].GetValue()); |
| 251 | } |
| 252 | } |
[email protected] | 5403746 | 2010-06-22 02:06:23 | [diff] [blame] | 253 | for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) { |
| 254 | if (!pref_name || *pref_name == kMozcIntegerPrefs[i].pref_name) { |
| 255 | SetLanguageConfigInteger(kMozcSectionName, |
| 256 | kMozcIntegerPrefs[i].ibus_config_name, |
| 257 | language_mozc_integer_prefs_[i].GetValue()); |
| 258 | } |
| 259 | } |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 260 | } |
| 261 | |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 262 | void Preferences::SetTimeZone(const std::string& id) { |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 263 | icu::TimeZone* timezone = icu::TimeZone::createTimeZone( |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 264 | icu::UnicodeString::fromUTF8(id)); |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 265 | icu::TimeZone::adoptDefault(timezone); |
| 266 | } |
| 267 | |
[email protected] | 70aa5b3 | 2010-04-05 08:30:34 | [diff] [blame] | 268 | void Preferences::SetLanguageConfigBoolean(const char* section, |
| 269 | const char* name, |
| 270 | bool value) { |
| 271 | ImeConfigValue config; |
| 272 | config.type = ImeConfigValue::kValueTypeBool; |
| 273 | config.bool_value = value; |
[email protected] | 60b0768 | 2010-06-17 08:45:28 | [diff] [blame] | 274 | CrosLibrary::Get()->GetInputMethodLibrary()-> |
| 275 | SetImeConfig(section, name, config); |
[email protected] | 70aa5b3 | 2010-04-05 08:30:34 | [diff] [blame] | 276 | } |
| 277 | |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 278 | void Preferences::SetLanguageConfigInteger(const char* section, |
| 279 | const char* name, |
| 280 | int value) { |
| 281 | ImeConfigValue config; |
| 282 | config.type = ImeConfigValue::kValueTypeInt; |
| 283 | config.int_value = value; |
[email protected] | 60b0768 | 2010-06-17 08:45:28 | [diff] [blame] | 284 | CrosLibrary::Get()->GetInputMethodLibrary()-> |
| 285 | SetImeConfig(section, name, config); |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 286 | } |
| 287 | |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 288 | void Preferences::SetLanguageConfigString(const char* section, |
| 289 | const char* name, |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 290 | const std::string& value) { |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 291 | ImeConfigValue config; |
| 292 | config.type = ImeConfigValue::kValueTypeString; |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 293 | config.string_value = value; |
[email protected] | 60b0768 | 2010-06-17 08:45:28 | [diff] [blame] | 294 | CrosLibrary::Get()->GetInputMethodLibrary()-> |
| 295 | SetImeConfig(section, name, config); |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 296 | } |
| 297 | |
[email protected] | 2c25ddfd | 2010-04-09 10:35:55 | [diff] [blame] | 298 | void Preferences::SetLanguageConfigStringList( |
| 299 | const char* section, |
| 300 | const char* name, |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 301 | const std::vector<std::string>& values) { |
[email protected] | 2c25ddfd | 2010-04-09 10:35:55 | [diff] [blame] | 302 | ImeConfigValue config; |
| 303 | config.type = ImeConfigValue::kValueTypeStringList; |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 304 | for (size_t i = 0; i < values.size(); ++i) |
| 305 | config.string_list_value.push_back(values[i]); |
| 306 | |
[email protected] | 60b0768 | 2010-06-17 08:45:28 | [diff] [blame] | 307 | CrosLibrary::Get()->GetInputMethodLibrary()-> |
| 308 | SetImeConfig(section, name, config); |
[email protected] | 2c25ddfd | 2010-04-09 10:35:55 | [diff] [blame] | 309 | } |
| 310 | |
[email protected] | d01bb807 | 2010-04-12 13:00:15 | [diff] [blame] | 311 | void Preferences::SetLanguageConfigStringListAsCSV(const char* section, |
| 312 | const char* name, |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 313 | const std::string& value) { |
[email protected] | d01bb807 | 2010-04-12 13:00:15 | [diff] [blame] | 314 | LOG(INFO) << "Setting " << name << " to '" << value << "'"; |
| 315 | |
[email protected] | ddd231e | 2010-06-29 20:35:19 | [diff] [blame^] | 316 | std::vector<std::string> split_values; |
| 317 | if (!value.empty()) |
| 318 | SplitString(value, ',', &split_values); |
| 319 | |
[email protected] | 2c25ddfd | 2010-04-09 10:35:55 | [diff] [blame] | 320 | // We should call the cros API even when |value| is empty, to disable default |
[email protected] | d01bb807 | 2010-04-12 13:00:15 | [diff] [blame] | 321 | // config. |
| 322 | SetLanguageConfigStringList(section, name, split_values); |
[email protected] | 70aa5b3 | 2010-04-05 08:30:34 | [diff] [blame] | 323 | } |
| 324 | |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 325 | } // namespace chromeos |