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 |