| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/base/models/table_model.h" |
| |
| #include "base/check.h" |
| #include "base/i18n/string_compare.h" |
| #include "base/notreached.h" |
| #include "third_party/icu/source/i18n/unicode/coll.h" |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/base/models/image_model.h" |
| |
| namespace ui { |
| |
| // TableColumn ----------------------------------------------------------------- |
| |
| TableColumn::TableColumn() |
| : id(0), |
| title(), |
| alignment(LEFT), |
| width(-1), |
| percent(), |
| min_visible_width(0), |
| sortable(false), |
| initial_sort_is_ascending(true) { |
| } |
| |
| TableColumn::TableColumn(int id, Alignment alignment, int width, float percent) |
| : id(id), |
| title(l10n_util::GetStringUTF16(id)), |
| alignment(alignment), |
| width(width), |
| percent(percent), |
| min_visible_width(0), |
| sortable(false), |
| initial_sort_is_ascending(true) { |
| } |
| |
| TableColumn::TableColumn(const TableColumn& other) = default; |
| |
| TableColumn& TableColumn::operator=(const TableColumn& other) = default; |
| |
| // TableModel ----------------------------------------------------------------- |
| |
| // Used for sorting. |
| static icu::Collator* g_collator = nullptr; |
| |
| ui::ImageModel TableModel::GetIcon(int row) { |
| return ui::ImageModel(); |
| } |
| |
| std::u16string TableModel::GetTooltip(int row) { |
| return std::u16string(); |
| } |
| |
| int TableModel::CompareValues(int row1, int row2, int column_id) { |
| DCHECK_GE(row1, 0); |
| DCHECK_LT(row1, RowCount()); |
| DCHECK_GE(row2, 0); |
| DCHECK_LT(row2, RowCount()); |
| |
| std::u16string value1 = GetText(row1, column_id); |
| std::u16string value2 = GetText(row2, column_id); |
| icu::Collator* collator = GetCollator(); |
| |
| if (collator) |
| return base::i18n::CompareString16WithCollator(*collator, value1, value2); |
| |
| NOTREACHED(); |
| return 0; |
| } |
| |
| void TableModel::ClearCollator() { |
| delete g_collator; |
| g_collator = nullptr; |
| } |
| |
| TableModel::~TableModel() = default; |
| |
| icu::Collator* TableModel::GetCollator() { |
| if (!g_collator) { |
| UErrorCode create_status = U_ZERO_ERROR; |
| g_collator = icu::Collator::createInstance(create_status); |
| if (!U_SUCCESS(create_status)) { |
| g_collator = nullptr; |
| NOTREACHED(); |
| } |
| } |
| return g_collator; |
| } |
| |
| } // namespace ui |