Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(484)

Side by Side Diff: ui/base/models/table_model.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/base/models/simple_menu_model.cc ('k') | ui/base/models/table_model.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 #ifndef UI_BASE_MODELS_TABLE_MODEL_H_
6 #define UI_BASE_MODELS_TABLE_MODEL_H_
7
8 #include <vector>
9
10 #include "base/strings/string16.h"
11 #include "third_party/icu/source/i18n/unicode/coll.h"
12 #include "ui/base/ui_base_export.h"
13
14 namespace gfx {
15 class ImageSkia;
16 }
17
18 namespace ui {
19
20 class TableModelObserver;
21
22 // The model driving the TableView.
23 class UI_BASE_EXPORT TableModel {
24 public:
25 // See HasGroups, get GetGroupID for details as to how this is used.
26 struct Group {
27 // The title text for the group.
28 base::string16 title;
29
30 // Unique id for the group.
31 int id;
32 };
33 typedef std::vector<Group> Groups;
34
35 // Number of rows in the model.
36 virtual int RowCount() = 0;
37
38 // Returns the value at a particular location in text.
39 virtual base::string16 GetText(int row, int column_id) = 0;
40
41 // Returns the small icon (16x16) that should be displayed in the first
42 // column before the text. This is only used when the TableView was created
43 // with the ICON_AND_TEXT table type. Returns an isNull() image if there is
44 // no image.
45 virtual gfx::ImageSkia GetIcon(int row);
46
47 // Returns the tooltip, if any, to show for a particular row. If there are
48 // multiple columns in the row, this will only be shown when hovering over
49 // column zero.
50 virtual base::string16 GetTooltip(int row);
51
52 // If true, this row should be indented.
53 virtual bool ShouldIndent(int row);
54
55 // Returns true if the TableView has groups. Groups provide a way to visually
56 // delineate the rows in a table view. When groups are enabled table view
57 // shows a visual separator for each group, followed by all the rows in
58 // the group.
59 //
60 // On win2k a visual separator is not rendered for the group headers.
61 virtual bool HasGroups();
62
63 // Returns the groups.
64 // This is only used if HasGroups returns true.
65 virtual Groups GetGroups();
66
67 // Returns the group id of the specified row.
68 // This is only used if HasGroups returns true.
69 virtual int GetGroupID(int row);
70
71 // Sets the observer for the model. The TableView should NOT take ownership
72 // of the observer.
73 virtual void SetObserver(TableModelObserver* observer) = 0;
74
75 // Compares the values in the column with id |column_id| for the two rows.
76 // Returns a value < 0, == 0 or > 0 as to whether the first value is
77 // <, == or > the second value.
78 //
79 // This implementation does a case insensitive locale specific string
80 // comparison.
81 virtual int CompareValues(int row1, int row2, int column_id);
82
83 // Reset the collator.
84 void ClearCollator();
85
86 protected:
87 virtual ~TableModel() {}
88
89 // Returns the collator used by CompareValues.
90 icu::Collator* GetCollator();
91 };
92
93 // TableColumn specifies the title, alignment and size of a particular column.
94 struct UI_BASE_EXPORT TableColumn {
95 enum Alignment {
96 LEFT, RIGHT, CENTER
97 };
98
99 TableColumn();
100 TableColumn(int id, Alignment alignment, int width, float percent);
101
102 // A unique identifier for the column.
103 int id;
104
105 // The title for the column.
106 base::string16 title;
107
108 // Alignment for the content.
109 Alignment alignment;
110
111 // The size of a column may be specified in two ways:
112 // 1. A fixed width. Set the width field to a positive number and the
113 // column will be given that width, in pixels.
114 // 2. As a percentage of the available width. If width is -1, and percent is
115 // > 0, the column is given a width of
116 // available_width * percent / total_percent.
117 // 3. If the width == -1 and percent == 0, the column is autosized based on
118 // the width of the column header text.
119 //
120 // Sizing is done in four passes. Fixed width columns are given
121 // their width, percentages are applied, autosized columns are autosized,
122 // and finally percentages are applied again taking into account the widths
123 // of autosized columns.
124 int width;
125 float percent;
126
127 // The minimum width required for all items in this column
128 // (including the header)
129 // to be visible.
130 int min_visible_width;
131
132 // Is this column sortable? Default is false
133 bool sortable;
134 };
135
136 } // namespace ui
137
138 #endif // UI_BASE_MODELS_TABLE_MODEL_H_
OLDNEW
« no previous file with comments | « ui/base/models/simple_menu_model.cc ('k') | ui/base/models/table_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698