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 "ui/base/models/table_model.h" 6 7 #include "base/i18n/string_compare.h" 8 #include "base/logging.h" 9 #include "ui/base/l10n/l10n_util.h" 10 #include "ui/gfx/image/image_skia.h" 11 12 namespace ui { 13 14 // TableColumn ----------------------------------------------------------------- 15 16 TableColumn::TableColumn() 17 : id(0), 18 title(), 19 alignment(LEFT), 20 width(-1), 21 percent(), 22 min_visible_width(0), 23 sortable(false) { 24 } 25 26 TableColumn::TableColumn(int id, Alignment alignment, int width, float percent) 27 : id(id), 28 title(l10n_util::GetStringUTF16(id)), 29 alignment(alignment), 30 width(width), 31 percent(percent), 32 min_visible_width(0), 33 sortable(false) { 34 } 35 36 // TableModel ----------------------------------------------------------------- 37 38 // Used for sorting. 39 static icu::Collator* collator = NULL; 40 41 gfx::ImageSkia TableModel::GetIcon(int row) { 42 return gfx::ImageSkia(); 43 } 44 45 base::string16 TableModel::GetTooltip(int row) { 46 return base::string16(); 47 } 48 49 bool TableModel::ShouldIndent(int row) { 50 return false; 51 } 52 53 bool TableModel::HasGroups() { 54 return false; 55 } 56 57 TableModel::Groups TableModel::GetGroups() { 58 // If you override HasGroups to return true, you must override this as 59 // well. 60 NOTREACHED(); 61 return std::vector<Group>(); 62 } 63 64 int TableModel::GetGroupID(int row) { 65 // If you override HasGroups to return true, you must override this as 66 // well. 67 NOTREACHED(); 68 return 0; 69 } 70 71 int TableModel::CompareValues(int row1, int row2, int column_id) { 72 DCHECK(row1 >= 0 && row1 < RowCount() && 73 row2 >= 0 && row2 < RowCount()); 74 base::string16 value1 = GetText(row1, column_id); 75 base::string16 value2 = GetText(row2, column_id); 76 icu::Collator* collator = GetCollator(); 77 78 if (collator) 79 return base::i18n::CompareString16WithCollator(collator, value1, value2); 80 81 NOTREACHED(); 82 return 0; 83 } 84 85 void TableModel::ClearCollator() { 86 delete collator; 87 collator = NULL; 88 } 89 90 icu::Collator* TableModel::GetCollator() { 91 if (!collator) { 92 UErrorCode create_status = U_ZERO_ERROR; 93 collator = icu::Collator::createInstance(create_status); 94 if (!U_SUCCESS(create_status)) { 95 collator = NULL; 96 NOTREACHED(); 97 } 98 } 99 return collator; 100 } 101 102 } // namespace ui 103