Home | History | Annotate | Download | only in models
      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