| // Copyright (c) 2009 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 "app/table_model.h" |
| |
| #include "app/l10n_util.h" |
| #include "app/l10n_util_collator.h" |
| #include "base/logging.h" |
| #include "third_party/skia/include/core/SkBitmap.h" |
| |
| // TableColumn ----------------------------------------------------------------- |
| |
| TableColumn::TableColumn() |
| : id(0), |
| title(), |
| alignment(LEFT), |
| width(-1), |
| percent(), |
| min_visible_width(0), |
| sortable(false) { |
| } |
| |
| TableColumn::TableColumn(int id, const std::wstring& title, |
| Alignment alignment, |
| int width) |
| : id(id), |
| title(title), |
| alignment(alignment), |
| width(width), |
| percent(0), |
| min_visible_width(0), |
| sortable(false) { |
| } |
| |
| TableColumn::TableColumn(int id, const std::wstring& title, |
| Alignment alignment, int width, float percent) |
| : id(id), |
| title(title), |
| alignment(alignment), |
| width(width), |
| percent(percent), |
| min_visible_width(0), |
| sortable(false) { |
| } |
| |
| // It's common (but not required) to use the title's IDS_* tag as the column |
| // id. In this case, the provided conveniences look up the title string on |
| // bahalf of the caller. |
| TableColumn::TableColumn(int id, Alignment alignment, int width) |
| : id(id), |
| alignment(alignment), |
| width(width), |
| percent(0), |
| min_visible_width(0), |
| sortable(false) { |
| title = l10n_util::GetString(id); |
| } |
| |
| TableColumn::TableColumn(int id, Alignment alignment, int width, float percent) |
| : id(id), |
| alignment(alignment), |
| width(width), |
| percent(percent), |
| min_visible_width(0), |
| sortable(false) { |
| title = l10n_util::GetString(id); |
| } |
| |
| // TableModel ----------------------------------------------------------------- |
| |
| // Used for sorting. |
| static icu::Collator* collator = NULL; |
| |
| SkBitmap TableModel::GetIcon(int row) { |
| return SkBitmap(); |
| } |
| |
| std::wstring TableModel::GetTooltip(int row) { |
| return std::wstring(); |
| } |
| |
| bool TableModel::ShouldIndent(int row) { |
| return false; |
| } |
| |
| bool TableModel::HasGroups() { |
| return false; |
| } |
| |
| TableModel::Groups TableModel::GetGroups() { |
| // If you override HasGroups to return true, you must override this as |
| // well. |
| NOTREACHED(); |
| return std::vector<Group>(); |
| } |
| |
| int TableModel::GetGroupID(int row) { |
| // If you override HasGroups to return true, you must override this as |
| // well. |
| NOTREACHED(); |
| return 0; |
| } |
| |
| int TableModel::CompareValues(int row1, int row2, int column_id) { |
| DCHECK(row1 >= 0 && row1 < RowCount() && |
| row2 >= 0 && row2 < RowCount()); |
| std::wstring value1 = GetText(row1, column_id); |
| std::wstring value2 = GetText(row2, column_id); |
| icu::Collator* collator = GetCollator(); |
| |
| if (collator) |
| return l10n_util::CompareStringWithCollator(collator, value1, value2); |
| |
| NOTREACHED(); |
| return 0; |
| } |
| |
| icu::Collator* TableModel::GetCollator() { |
| if (!collator) { |
| UErrorCode create_status = U_ZERO_ERROR; |
| collator = icu::Collator::createInstance(create_status); |
| if (!U_SUCCESS(create_status)) { |
| collator = NULL; |
| NOTREACHED(); |
| } |
| } |
| return collator; |
| } |
| |
| void TableModel::ClearCollator() { |
| delete collator; |
| collator = NULL; |
| } |