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