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/default_encoding_combo_model.h" | 5 #include "chrome/browser/default_encoding_combo_model.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "app/l10n_util_collator.h" | 8 #include "app/l10n_util_collator.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
11 #include "chrome/browser/prefs/pref_member.h" | 11 #include "chrome/browser/prefs/pref_member.h" |
12 #include "chrome/browser/profile.h" | 12 #include "chrome/browser/profile.h" |
13 #include "chrome/common/pref_names.h" | 13 #include "chrome/common/pref_names.h" |
14 | 14 |
15 DefaultEncodingComboboxModel::DefaultEncodingComboboxModel() { | 15 DefaultEncodingComboboxModel::DefaultEncodingComboboxModel() { |
16 // Initialize the vector of all sorted encodings according to current | 16 // Initialize the vector of all sorted encodings according to current |
17 // UI locale. | 17 // UI locale. |
18 std::string locale = g_browser_process->GetApplicationLocale(); | 18 std::string locale = g_browser_process->GetApplicationLocale(); |
19 int size = CharacterEncoding::GetSupportCanonicalEncodingCount(); | 19 int size = CharacterEncoding::GetSupportCanonicalEncodingCount(); |
20 for (int i = 0; i < size; ++i) { | 20 for (int i = 0; i < size; ++i) { |
21 sorted_encoding_list_.push_back(CharacterEncoding::EncodingInfo( | 21 sorted_encoding_list_.push_back(CharacterEncoding::EncodingInfo( |
22 CharacterEncoding::GetEncodingCommandIdByIndex(i))); | 22 CharacterEncoding::GetEncodingCommandIdByIndex(i))); |
23 } | 23 } |
24 l10n_util::SortVectorWithStringKey(locale, &sorted_encoding_list_, true); | 24 l10n_util::SortVectorWithStringKey(locale, &sorted_encoding_list_, true); |
25 } | 25 } |
26 | 26 |
| 27 DefaultEncodingComboboxModel::~DefaultEncodingComboboxModel() { |
| 28 } |
| 29 |
| 30 int DefaultEncodingComboboxModel::GetItemCount() { |
| 31 return static_cast<int>(sorted_encoding_list_.size()); |
| 32 } |
| 33 |
27 string16 DefaultEncodingComboboxModel::GetItemAt(int index) { | 34 string16 DefaultEncodingComboboxModel::GetItemAt(int index) { |
28 DCHECK(index >= 0 && index < GetItemCount()); | 35 DCHECK(index >= 0 && index < GetItemCount()); |
29 return WideToUTF16Hack(sorted_encoding_list_[index].encoding_display_name); | 36 return WideToUTF16Hack(sorted_encoding_list_[index].encoding_display_name); |
30 } | 37 } |
31 | 38 |
32 std::string DefaultEncodingComboboxModel::GetEncodingCharsetByIndex(int index) { | 39 std::string DefaultEncodingComboboxModel::GetEncodingCharsetByIndex(int index) { |
33 DCHECK(index >= 0 && index < GetItemCount()); | 40 DCHECK(index >= 0 && index < GetItemCount()); |
34 int encoding_id = sorted_encoding_list_[index].encoding_id; | 41 int encoding_id = sorted_encoding_list_[index].encoding_id; |
35 return CharacterEncoding::GetCanonicalEncodingNameByCommandId(encoding_id); | 42 return CharacterEncoding::GetCanonicalEncodingNameByCommandId(encoding_id); |
36 } | 43 } |
37 | 44 |
38 int DefaultEncodingComboboxModel::GetSelectedEncodingIndex(Profile* profile) { | 45 int DefaultEncodingComboboxModel::GetSelectedEncodingIndex(Profile* profile) { |
39 StringPrefMember current_encoding_string; | 46 StringPrefMember current_encoding_string; |
40 current_encoding_string.Init(prefs::kDefaultCharset, | 47 current_encoding_string.Init(prefs::kDefaultCharset, |
41 profile->GetPrefs(), | 48 profile->GetPrefs(), |
42 NULL); | 49 NULL); |
43 const std::string current_encoding = current_encoding_string.GetValue(); | 50 const std::string current_encoding = current_encoding_string.GetValue(); |
44 for (int i = 0; i < GetItemCount(); ++i) { | 51 for (int i = 0; i < GetItemCount(); ++i) { |
45 if (GetEncodingCharsetByIndex(i) == current_encoding) | 52 if (GetEncodingCharsetByIndex(i) == current_encoding) |
46 return i; | 53 return i; |
47 } | 54 } |
48 | 55 |
49 return 0; | 56 return 0; |
50 } | 57 } |
OLD | NEW |