| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/dom_ui/language_options_handler.h" | 5 #include "chrome/browser/chromeos/dom_ui/language_options_handler.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 for (size_t i = 0; i < arraysize(input_method::kExtraLanguages); ++i) { | 189 for (size_t i = 0; i < arraysize(input_method::kExtraLanguages); ++i) { |
| 190 const char* language_code = | 190 const char* language_code = |
| 191 input_method::kExtraLanguages[i].language_code; | 191 input_method::kExtraLanguages[i].language_code; |
| 192 language_codes.insert(language_code); | 192 language_codes.insert(language_code); |
| 193 } | 193 } |
| 194 | 194 |
| 195 // Map of display name -> {language code, native_display_name}. | 195 // Map of display name -> {language code, native_display_name}. |
| 196 // In theory, we should be able to create a map that is sorted by | 196 // In theory, we should be able to create a map that is sorted by |
| 197 // display names using ICU comparator, but doing it is hard, thus we'll | 197 // display names using ICU comparator, but doing it is hard, thus we'll |
| 198 // use an auxiliary vector to achieve the same result. | 198 // use an auxiliary vector to achieve the same result. |
| 199 typedef std::pair<std::string, std::wstring> LanguagePair; | 199 typedef std::pair<std::string, string16> LanguagePair; |
| 200 typedef std::map<std::wstring, LanguagePair> LanguageMap; | 200 typedef std::map<string16, LanguagePair> LanguageMap; |
| 201 LanguageMap language_map; | 201 LanguageMap language_map; |
| 202 // The auxiliary vector mentioned above. | 202 // The auxiliary vector mentioned above. |
| 203 std::vector<std::wstring> display_names; | 203 std::vector<string16> display_names; |
| 204 | 204 |
| 205 // Build the list of display names, and build the language map. | 205 // Build the list of display names, and build the language map. |
| 206 for (std::set<std::string>::const_iterator iter = language_codes.begin(); | 206 for (std::set<std::string>::const_iterator iter = language_codes.begin(); |
| 207 iter != language_codes.end(); ++iter) { | 207 iter != language_codes.end(); ++iter) { |
| 208 const std::wstring display_name = | 208 const string16 display_name = |
| 209 input_method::GetLanguageDisplayNameFromCode(*iter); | 209 input_method::GetLanguageDisplayNameFromCode(*iter); |
| 210 const std::wstring native_display_name = | 210 const string16 native_display_name = |
| 211 input_method::GetLanguageNativeDisplayNameFromCode(*iter); | 211 input_method::GetLanguageNativeDisplayNameFromCode(*iter); |
| 212 display_names.push_back(display_name); | 212 display_names.push_back(display_name); |
| 213 language_map[display_name] = | 213 language_map[display_name] = |
| 214 std::make_pair(*iter, native_display_name); | 214 std::make_pair(*iter, native_display_name); |
| 215 } | 215 } |
| 216 DCHECK_EQ(display_names.size(), language_map.size()); | 216 DCHECK_EQ(display_names.size(), language_map.size()); |
| 217 | 217 |
| 218 // Sort display names using locale specific sorter. | 218 // Sort display names using locale specific sorter. |
| 219 l10n_util::SortStrings(g_browser_process->GetApplicationLocale(), | 219 l10n_util::SortStrings16(g_browser_process->GetApplicationLocale(), |
| 220 &display_names); | 220 &display_names); |
| 221 | 221 |
| 222 // Build the language list from the language map. | 222 // Build the language list from the language map. |
| 223 ListValue* language_list = new ListValue(); | 223 ListValue* language_list = new ListValue(); |
| 224 for (size_t i = 0; i < display_names.size(); ++i) { | 224 for (size_t i = 0; i < display_names.size(); ++i) { |
| 225 const LanguagePair& pair = language_map[display_names[i]]; | 225 const LanguagePair& pair = language_map[display_names[i]]; |
| 226 DictionaryValue* dictionary = new DictionaryValue(); | 226 DictionaryValue* dictionary = new DictionaryValue(); |
| 227 dictionary->SetString("code", pair.first); | 227 dictionary->SetString("code", pair.first); |
| 228 dictionary->SetString("displayName", WideToUTF16Hack(display_names[i])); | 228 dictionary->SetString("displayName", display_names[i]); |
| 229 dictionary->SetString("nativeDisplayName", WideToUTF16Hack(pair.second)); | 229 dictionary->SetString("nativeDisplayName", pair.second); |
| 230 language_list->Append(dictionary); | 230 language_list->Append(dictionary); |
| 231 } | 231 } |
| 232 | 232 |
| 233 return language_list; | 233 return language_list; |
| 234 } | 234 } |
| 235 | 235 |
| 236 DictionaryValue* LanguageOptionsHandler::GetUiLanguageCodeSet() { | 236 DictionaryValue* LanguageOptionsHandler::GetUiLanguageCodeSet() { |
| 237 DictionaryValue* dictionary = new DictionaryValue(); | 237 DictionaryValue* dictionary = new DictionaryValue(); |
| 238 const std::vector<std::string>& available_locales = | 238 const std::vector<std::string>& available_locales = |
| 239 l10n_util::GetAvailableLocales(); | 239 l10n_util::GetAvailableLocales(); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 void LanguageOptionsHandler::SignOutCallback(const ListValue* args) { | 317 void LanguageOptionsHandler::SignOutCallback(const ListValue* args) { |
| 318 UserMetrics::RecordAction(UserMetricsAction("LanguageOptions_SignOut")); | 318 UserMetrics::RecordAction(UserMetricsAction("LanguageOptions_SignOut")); |
| 319 | 319 |
| 320 Browser* browser = Browser::GetBrowserForController( | 320 Browser* browser = Browser::GetBrowserForController( |
| 321 &dom_ui_->tab_contents()->controller(), NULL); | 321 &dom_ui_->tab_contents()->controller(), NULL); |
| 322 if (browser) | 322 if (browser) |
| 323 browser->ExecuteCommand(IDC_EXIT); | 323 browser->ExecuteCommand(IDC_EXIT); |
| 324 } | 324 } |
| 325 | 325 |
| 326 } // namespace chromeos | 326 } // namespace chromeos |
| OLD | NEW |