[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] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 10 | #include "chrome/browser/chromeos/cros/language_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) { |
| 22 | prefs->RegisterStringPref(prefs::kTimeZone, L"US/Pacific"); |
| 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] | 8be9ff2 | 2010-06-08 02:13:54 | [diff] [blame^] | 28 | prefs->RegisterStringPref(prefs::kLanguageCurrentInputMethod, L""); |
| 29 | prefs->RegisterStringPref(prefs::kLanguagePreviousInputMethod, L""); |
[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] | ce50a96 | 2010-04-08 09:35:40 | [diff] [blame] | 35 | UTF8ToWide(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] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 43 | UTF8ToWide(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] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 52 | prefs->RegisterStringPref(prefs::kLanguageHangulKeyboard, |
| 53 | kHangulKeyboardNameIDPairs[0].keyboard_id); |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 54 | for (size_t i = 0; i < kNumPinyinBooleanPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 55 | prefs->RegisterBooleanPref(kPinyinBooleanPrefs[i].pref_name, |
[email protected] | 6e5c4b8 | 2010-05-24 08:18:44 | [diff] [blame] | 56 | kPinyinBooleanPrefs[i].default_pref_value); |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 57 | } |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 58 | for (size_t i = 0; i < kNumPinyinIntegerPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 59 | prefs->RegisterIntegerPref(kPinyinIntegerPrefs[i].pref_name, |
[email protected] | 6e5c4b8 | 2010-05-24 08:18:44 | [diff] [blame] | 60 | kPinyinIntegerPrefs[i].default_pref_value); |
| 61 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 62 | prefs->RegisterIntegerPref(kPinyinDoublePinyinSchema.pref_name, |
| 63 | kPinyinDoublePinyinSchema.default_pref_value); |
| 64 | |
[email protected] | 6e5c4b8 | 2010-05-24 08:18:44 | [diff] [blame] | 65 | for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 66 | prefs->RegisterStringPref( |
| 67 | kMozcMultipleChoicePrefs[i].pref_name, |
| 68 | UTF8ToWide(kMozcMultipleChoicePrefs[i].default_pref_value)); |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 69 | } |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 70 | } |
| 71 | |
| 72 | void Preferences::Init(PrefService* prefs) { |
| 73 | timezone_.Init(prefs::kTimeZone, prefs, this); |
| 74 | tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, prefs, this); |
[email protected] | fe23d5a3 | 2010-05-28 02:43:04 | [diff] [blame] | 75 | accessibility_enabled_.Init(prefs::kAccessibilityEnabled, prefs, this); |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 76 | vert_edge_scroll_enabled_.Init(prefs::kVertEdgeScrollEnabled, prefs, this); |
| 77 | speed_factor_.Init(prefs::kTouchpadSpeedFactor, prefs, this); |
| 78 | sensitivity_.Init(prefs::kTouchpadSensitivity, prefs, this); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 79 | language_hotkey_next_engine_in_menu_.Init( |
| 80 | prefs::kLanguageHotkeyNextEngineInMenu, prefs, this); |
| 81 | language_hotkey_previous_engine_.Init( |
| 82 | prefs::kLanguageHotkeyPreviousEngine, prefs, this); |
[email protected] | 70aa5b3 | 2010-04-05 08:30:34 | [diff] [blame] | 83 | language_preload_engines_.Init(prefs::kLanguagePreloadEngines, prefs, this); |
[email protected] | 525dbe2 | 2010-06-01 07:05:43 | [diff] [blame] | 84 | for (size_t i = 0; i < kNumChewingBooleanPrefs; ++i) { |
| 85 | language_chewing_boolean_prefs_[i].Init( |
| 86 | kChewingBooleanPrefs[i].pref_name, prefs, this); |
| 87 | } |
| 88 | for (size_t i = 0; i < kNumChewingMultipleChoicePrefs; ++i) { |
| 89 | language_chewing_multiple_choice_prefs_[i].Init( |
| 90 | kChewingMultipleChoicePrefs[i].pref_name, prefs, this); |
| 91 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 92 | language_chewing_hsu_sel_key_type_.Init( |
| 93 | kChewingHsuSelKeyType.pref_name, prefs, this); |
[email protected] | 15c5308 | 2010-06-03 03:28:21 | [diff] [blame] | 94 | for (size_t i = 0; i < kNumChewingIntegerPrefs; ++i) { |
| 95 | language_chewing_integer_prefs_[i].Init( |
| 96 | kChewingIntegerPrefs[i].pref_name, prefs, this); |
| 97 | } |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 98 | language_hangul_keyboard_.Init(prefs::kLanguageHangulKeyboard, prefs, this); |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 99 | for (size_t i = 0; i < kNumPinyinBooleanPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 100 | language_pinyin_boolean_prefs_[i].Init( |
| 101 | kPinyinBooleanPrefs[i].pref_name, prefs, this); |
| 102 | } |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 103 | for (size_t i = 0; i < kNumPinyinIntegerPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 104 | language_pinyin_int_prefs_[i].Init( |
| 105 | kPinyinIntegerPrefs[i].pref_name, prefs, this); |
| 106 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 107 | language_pinyin_double_pinyin_schema_.Init( |
| 108 | kPinyinDoublePinyinSchema.pref_name, prefs, this); |
[email protected] | 6e5c4b8 | 2010-05-24 08:18:44 | [diff] [blame] | 109 | for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { |
| 110 | language_mozc_multiple_choice_prefs_[i].Init( |
| 111 | kMozcMultipleChoicePrefs[i].pref_name, prefs, this); |
| 112 | } |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 113 | |
| 114 | // Initialize touchpad settings to what's saved in user preferences. |
| 115 | NotifyPrefChanged(NULL); |
| 116 | } |
| 117 | |
| 118 | void Preferences::Observe(NotificationType type, |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 119 | const NotificationSource& source, |
| 120 | const NotificationDetails& details) { |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 121 | if (type == NotificationType::PREF_CHANGED) |
| 122 | NotifyPrefChanged(Details<std::wstring>(details).ptr()); |
| 123 | } |
| 124 | |
| 125 | void Preferences::NotifyPrefChanged(const std::wstring* pref_name) { |
| 126 | if (!pref_name || *pref_name == prefs::kTimeZone) |
| 127 | SetTimeZone(timezone_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 128 | if (!pref_name || *pref_name == prefs::kTapToClickEnabled) { |
[email protected] | 62c7ef3 | 2010-03-23 23:44:24 | [diff] [blame] | 129 | CrosLibrary::Get()->GetSynapticsLibrary()->SetBoolParameter( |
| 130 | PARAM_BOOL_TAP_TO_CLICK, |
[email protected] | c31b3c72 | 2009-10-21 20:01:35 | [diff] [blame] | 131 | tap_to_click_enabled_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 132 | } |
| 133 | if (!pref_name || *pref_name == prefs::kVertEdgeScrollEnabled) { |
[email protected] | 62c7ef3 | 2010-03-23 23:44:24 | [diff] [blame] | 134 | CrosLibrary::Get()->GetSynapticsLibrary()->SetBoolParameter( |
[email protected] | c31b3c72 | 2009-10-21 20:01:35 | [diff] [blame] | 135 | PARAM_BOOL_VERTICAL_EDGE_SCROLLING, |
| 136 | vert_edge_scroll_enabled_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 137 | } |
| 138 | if (!pref_name || *pref_name == prefs::kTouchpadSpeedFactor) { |
[email protected] | 62c7ef3 | 2010-03-23 23:44:24 | [diff] [blame] | 139 | CrosLibrary::Get()->GetSynapticsLibrary()->SetRangeParameter( |
| 140 | PARAM_RANGE_SPEED_SENSITIVITY, |
| 141 | speed_factor_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 142 | } |
| 143 | if (!pref_name || *pref_name == prefs::kTouchpadSensitivity) { |
[email protected] | 62c7ef3 | 2010-03-23 23:44:24 | [diff] [blame] | 144 | CrosLibrary::Get()->GetSynapticsLibrary()->SetRangeParameter( |
| 145 | PARAM_RANGE_TOUCH_SENSITIVITY, |
| 146 | sensitivity_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 147 | } |
[email protected] | 8be9ff2 | 2010-06-08 02:13:54 | [diff] [blame^] | 148 | |
| 149 | // We don't handle prefs::kLanguageCurrentInputMethod and PreviousInputMethod |
| 150 | // here. |
| 151 | |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 152 | if (!pref_name || *pref_name == prefs::kLanguageHotkeyNextEngineInMenu) { |
[email protected] | d01bb807 | 2010-04-12 13:00:15 | [diff] [blame] | 153 | SetLanguageConfigStringListAsCSV(kHotKeySectionName, |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 154 | kNextEngineInMenuConfigName, |
| 155 | language_hotkey_next_engine_in_menu_.GetValue()); |
| 156 | } |
| 157 | if (!pref_name || *pref_name == prefs::kLanguageHotkeyPreviousEngine) { |
[email protected] | d01bb807 | 2010-04-12 13:00:15 | [diff] [blame] | 158 | SetLanguageConfigStringListAsCSV(kHotKeySectionName, |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 159 | kPreviousEngineConfigName, |
| 160 | language_hotkey_previous_engine_.GetValue()); |
| 161 | } |
| 162 | if (!pref_name || *pref_name == prefs::kLanguagePreloadEngines) { |
[email protected] | d01bb807 | 2010-04-12 13:00:15 | [diff] [blame] | 163 | SetLanguageConfigStringListAsCSV(kGeneralSectionName, |
| 164 | kPreloadEnginesConfigName, |
| 165 | language_preload_engines_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 166 | } |
[email protected] | 525dbe2 | 2010-06-01 07:05:43 | [diff] [blame] | 167 | for (size_t i = 0; i < kNumChewingBooleanPrefs; ++i) { |
| 168 | if (!pref_name || *pref_name == kChewingBooleanPrefs[i].pref_name) { |
| 169 | SetLanguageConfigBoolean(kChewingSectionName, |
| 170 | kChewingBooleanPrefs[i].ibus_config_name, |
| 171 | language_chewing_boolean_prefs_[i].GetValue()); |
| 172 | } |
| 173 | } |
| 174 | for (size_t i = 0; i < kNumChewingMultipleChoicePrefs; ++i) { |
| 175 | if (!pref_name || *pref_name == kChewingMultipleChoicePrefs[i].pref_name) { |
| 176 | SetLanguageConfigString( |
| 177 | kChewingSectionName, |
| 178 | kChewingMultipleChoicePrefs[i].ibus_config_name, |
| 179 | language_chewing_multiple_choice_prefs_[i].GetValue()); |
| 180 | } |
| 181 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 182 | if (!pref_name || *pref_name == kChewingHsuSelKeyType.pref_name) { |
| 183 | SetLanguageConfigInteger( |
| 184 | kChewingSectionName, |
| 185 | kChewingHsuSelKeyType.ibus_config_name, |
| 186 | language_chewing_hsu_sel_key_type_.GetValue()); |
| 187 | } |
[email protected] | 15c5308 | 2010-06-03 03:28:21 | [diff] [blame] | 188 | for (size_t i = 0; i < kNumChewingIntegerPrefs; ++i) { |
| 189 | if (!pref_name || *pref_name == kChewingIntegerPrefs[i].pref_name) { |
| 190 | SetLanguageConfigInteger(kChewingSectionName, |
| 191 | kChewingIntegerPrefs[i].ibus_config_name, |
| 192 | language_chewing_integer_prefs_[i].GetValue()); |
| 193 | } |
| 194 | } |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 195 | if (!pref_name || *pref_name == prefs::kLanguageHangulKeyboard) { |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 196 | SetLanguageConfigString(kHangulSectionName, kHangulKeyboardConfigName, |
| 197 | language_hangul_keyboard_.GetValue()); |
[email protected] | 3b02de29 | 2010-05-13 06:05:05 | [diff] [blame] | 198 | } |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 199 | for (size_t i = 0; i < kNumPinyinBooleanPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 200 | if (!pref_name || *pref_name == kPinyinBooleanPrefs[i].pref_name) { |
| 201 | SetLanguageConfigBoolean(kPinyinSectionName, |
| 202 | kPinyinBooleanPrefs[i].ibus_config_name, |
| 203 | language_pinyin_boolean_prefs_[i].GetValue()); |
| 204 | } |
| 205 | } |
[email protected] | 594b8f5 | 2010-04-27 18:10:30 | [diff] [blame] | 206 | for (size_t i = 0; i < kNumPinyinIntegerPrefs; ++i) { |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 207 | if (!pref_name || *pref_name == kPinyinIntegerPrefs[i].pref_name) { |
| 208 | SetLanguageConfigInteger(kPinyinSectionName, |
| 209 | kPinyinIntegerPrefs[i].ibus_config_name, |
| 210 | language_pinyin_int_prefs_[i].GetValue()); |
| 211 | } |
| 212 | } |
[email protected] | 7ac5af9 | 2010-06-07 01:25:44 | [diff] [blame] | 213 | if (!pref_name || *pref_name == kPinyinDoublePinyinSchema.pref_name) { |
| 214 | SetLanguageConfigInteger( |
| 215 | kPinyinSectionName, |
| 216 | kPinyinDoublePinyinSchema.ibus_config_name, |
| 217 | language_pinyin_double_pinyin_schema_.GetValue()); |
| 218 | } |
[email protected] | 6e5c4b8 | 2010-05-24 08:18:44 | [diff] [blame] | 219 | for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) { |
| 220 | if (!pref_name || *pref_name == kMozcMultipleChoicePrefs[i].pref_name) { |
| 221 | SetLanguageConfigString( |
| 222 | kMozcSectionName, |
| 223 | kMozcMultipleChoicePrefs[i].ibus_config_name, |
| 224 | language_mozc_multiple_choice_prefs_[i].GetValue()); |
| 225 | } |
| 226 | } |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 227 | } |
| 228 | |
| 229 | void Preferences::SetTimeZone(const std::wstring& id) { |
| 230 | icu::TimeZone* timezone = icu::TimeZone::createTimeZone( |
| 231 | icu::UnicodeString::fromUTF8(WideToASCII(id))); |
| 232 | icu::TimeZone::adoptDefault(timezone); |
| 233 | } |
| 234 | |
[email protected] | 70aa5b3 | 2010-04-05 08:30:34 | [diff] [blame] | 235 | void Preferences::SetLanguageConfigBoolean(const char* section, |
| 236 | const char* name, |
| 237 | bool value) { |
| 238 | ImeConfigValue config; |
| 239 | config.type = ImeConfigValue::kValueTypeBool; |
| 240 | config.bool_value = value; |
| 241 | CrosLibrary::Get()->GetLanguageLibrary()->SetImeConfig(section, name, config); |
| 242 | } |
| 243 | |
[email protected] | 9040ad2 | 2010-04-22 04:29:28 | [diff] [blame] | 244 | void Preferences::SetLanguageConfigInteger(const char* section, |
| 245 | const char* name, |
| 246 | int value) { |
| 247 | ImeConfigValue config; |
| 248 | config.type = ImeConfigValue::kValueTypeInt; |
| 249 | config.int_value = value; |
| 250 | CrosLibrary::Get()->GetLanguageLibrary()->SetImeConfig(section, name, config); |
| 251 | } |
| 252 | |
[email protected] | 5095143 | 2010-03-31 12:12:42 | [diff] [blame] | 253 | void Preferences::SetLanguageConfigString(const char* section, |
| 254 | const char* name, |
| 255 | const std::wstring& value) { |
| 256 | ImeConfigValue config; |
| 257 | config.type = ImeConfigValue::kValueTypeString; |
| 258 | config.string_value = WideToUTF8(value); |
| 259 | CrosLibrary::Get()->GetLanguageLibrary()->SetImeConfig(section, name, config); |
| 260 | } |
| 261 | |
[email protected] | 2c25ddfd | 2010-04-09 10:35:55 | [diff] [blame] | 262 | void Preferences::SetLanguageConfigStringList( |
| 263 | const char* section, |
| 264 | const char* name, |
| 265 | const std::vector<std::wstring>& values) { |
| 266 | ImeConfigValue config; |
| 267 | config.type = ImeConfigValue::kValueTypeStringList; |
| 268 | for (size_t i = 0; i < values.size(); ++i) { |
| 269 | config.string_list_value.push_back(WideToUTF8(values[i])); |
| 270 | } |
[email protected] | 9b78658 | 2010-04-12 02:39:37 | [diff] [blame] | 271 | CrosLibrary::Get()->GetLanguageLibrary()->SetImeConfig(section, name, config); |
[email protected] | 2c25ddfd | 2010-04-09 10:35:55 | [diff] [blame] | 272 | } |
| 273 | |
[email protected] | d01bb807 | 2010-04-12 13:00:15 | [diff] [blame] | 274 | void Preferences::SetLanguageConfigStringListAsCSV(const char* section, |
| 275 | const char* name, |
| 276 | const std::wstring& value) { |
| 277 | LOG(INFO) << "Setting " << name << " to '" << value << "'"; |
| 278 | |
| 279 | std::vector<std::wstring> split_values; |
[email protected] | 2c25ddfd | 2010-04-09 10:35:55 | [diff] [blame] | 280 | if (!value.empty()) { |
[email protected] | d01bb807 | 2010-04-12 13:00:15 | [diff] [blame] | 281 | SplitString(value, L',', &split_values); |
[email protected] | 2c25ddfd | 2010-04-09 10:35:55 | [diff] [blame] | 282 | } |
| 283 | // 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] | 284 | // config. |
| 285 | SetLanguageConfigStringList(section, name, split_values); |
[email protected] | 70aa5b3 | 2010-04-05 08:30:34 | [diff] [blame] | 286 | } |
| 287 | |
[email protected] | fecc152 | 2009-10-15 21:08:29 | [diff] [blame] | 288 | } // namespace chromeos |