1 // Copyright (c) 2012 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/ui/webui/options/chromeos/language_chewing_handler.h" 6 7 #include <limits> 8 9 #include "base/logging.h" 10 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/utf_string_conversions.h" 12 #include "base/values.h" 13 #include "chrome/browser/chromeos/language_preferences.h" 14 #include "chrome/browser/ui/webui/options/chromeos/language_options_util.h" 15 #include "grit/generated_resources.h" 16 #include "ui/base/l10n/l10n_util.h" 17 18 namespace { 19 const char kI18nPrefix[] = "Chewing_"; 20 } // namespace 21 22 namespace chromeos { 23 namespace options { 24 25 LanguageChewingHandler::LanguageChewingHandler() { 26 } 27 28 LanguageChewingHandler::~LanguageChewingHandler() { 29 } 30 31 void LanguageChewingHandler::GetLocalizedValues( 32 DictionaryValue* localized_strings) { 33 DCHECK(localized_strings); 34 35 RegisterTitle(localized_strings, "languageChewingPage", 36 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTINGS_TITLE); 37 38 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) { 39 localized_strings->SetString( 40 GetI18nContentValue(language_prefs::kChewingBooleanPrefs[i], 41 kI18nPrefix), 42 l10n_util::GetStringUTF16( 43 language_prefs::kChewingBooleanPrefs[i].message_id)); 44 } 45 46 // For maximum Chinese characters in pre-edit buffer, we use slider UI. 47 { 48 const language_prefs::LanguageIntegerRangePreference& preference = 49 language_prefs::kChewingIntegerPrefs[ 50 language_prefs::kChewingMaxChiSymbolLenIndex]; 51 localized_strings->SetString( 52 GetI18nContentValue(preference, kI18nPrefix), 53 l10n_util::GetStringUTF16(preference.message_id)); 54 localized_strings->SetString( 55 GetTemplateDataMinName(preference, kI18nPrefix), 56 base::IntToString(preference.min_pref_value)); 57 localized_strings->SetString( 58 GetTemplateDataMaxName(preference, kI18nPrefix), 59 base::IntToString(preference.max_pref_value)); 60 } 61 62 // For number of candidates per page, we use select-option UI. 63 { 64 const language_prefs::LanguageIntegerRangePreference& preference = 65 language_prefs::kChewingIntegerPrefs[ 66 language_prefs::kChewingCandPerPageIndex]; 67 localized_strings->SetString( 68 GetI18nContentValue(preference, kI18nPrefix), 69 l10n_util::GetStringUTF16(preference.message_id)); 70 ListValue* list_value = new ListValue(); 71 for (int i = preference.min_pref_value; i <= preference.max_pref_value; 72 ++i) { 73 ListValue* option = new ListValue(); 74 option->Append(CreateValue(i)); 75 option->Append(CreateValue(i)); 76 list_value->Append(option); 77 } 78 localized_strings->Set(GetTemplateDataPropertyName(preference, kI18nPrefix), 79 list_value); 80 } 81 82 for (size_t i = 0; i < language_prefs::kNumChewingMultipleChoicePrefs; 83 ++i) { 84 const language_prefs::LanguageMultipleChoicePreference<const char*>& 85 preference = language_prefs::kChewingMultipleChoicePrefs[i]; 86 localized_strings->SetString( 87 GetI18nContentValue(preference, kI18nPrefix), 88 l10n_util::GetStringUTF16(preference.label_message_id)); 89 localized_strings->Set( 90 GetTemplateDataPropertyName(preference, kI18nPrefix), 91 CreateMultipleChoiceList(preference)); 92 } 93 94 localized_strings->SetString( 95 GetI18nContentValue(language_prefs::kChewingHsuSelKeyType, kI18nPrefix), 96 l10n_util::GetStringUTF16( 97 language_prefs::kChewingHsuSelKeyType.label_message_id)); 98 localized_strings->Set( 99 GetTemplateDataPropertyName(language_prefs::kChewingHsuSelKeyType, 100 kI18nPrefix), 101 CreateMultipleChoiceList(language_prefs::kChewingHsuSelKeyType)); 102 } 103 104 } // namespace options 105 } // namespace chromeos 106