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

Side by Side Diff: views/controls/table/table_view2.cc

Issue 7790009: views: Fix a couple of other trivial TODOs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « views/controls/table/table_view2.h ('k') | views/controls/table/table_view_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file. 3 // found in the LICENSE file.
5 4
6 #include "views/controls/table/table_view2.h" 5 #include "views/controls/table/table_view2.h"
7 6
8 #include "base/logging.h" 7 #include "base/logging.h"
9 #include "ui/base/models/table_model.h" 8 #include "ui/base/models/table_model.h"
10 #include "views/controls/native/native_view_host.h" 9 #include "views/controls/native/native_view_host.h"
11 #include "views/controls/table/table_view_observer.h" 10 #include "views/controls/table/table_view_observer.h"
12 11
13 using ui::TableColumn;
14
15 namespace views { 12 namespace views {
16 13
17 // TableView2 ------------------------------------------------------------------ 14 // TableView2 ------------------------------------------------------------------
18 15
19 TableView2::TableView2(TableModel* model, 16 TableView2::TableView2(ui::TableModel* model,
20 const std::vector<TableColumn>& columns, 17 const std::vector<ui::TableColumn>& columns,
21 TableTypes table_type, 18 TableTypes table_type,
22 int options) 19 int options)
23 : model_(model), 20 : model_(model),
24 table_type_(table_type), 21 table_type_(table_type),
25 table_view_observer_(NULL), 22 table_view_observer_(NULL),
26 visible_columns_(), 23 visible_columns_(),
27 all_columns_(), 24 all_columns_(),
28 column_count_(static_cast<int>(columns.size())), 25 column_count_(static_cast<int>(columns.size())),
29 single_selection_((options & SINGLE_SELECTION) != 0), 26 single_selection_((options & SINGLE_SELECTION) != 0),
30 resizable_columns_((options & RESIZABLE_COLUMNS) != 0), 27 resizable_columns_((options & RESIZABLE_COLUMNS) != 0),
31 autosize_columns_((options & AUTOSIZE_COLUMNS) != 0), 28 autosize_columns_((options & AUTOSIZE_COLUMNS) != 0),
32 horizontal_lines_((options & HORIZONTAL_LINES) != 0), 29 horizontal_lines_((options & HORIZONTAL_LINES) != 0),
33 vertical_lines_((options & VERTICAL_LINES) != 0), 30 vertical_lines_((options & VERTICAL_LINES) != 0),
34 native_wrapper_(NULL) { 31 native_wrapper_(NULL) {
35 Init(columns); 32 Init(columns);
36 } 33 }
37 34
38 TableView2::~TableView2() { 35 TableView2::~TableView2() {
39 if (model_) 36 if (model_)
40 model_->SetObserver(NULL); 37 model_->SetObserver(NULL);
41 } 38 }
42 39
43 void TableView2::SetModel(TableModel* model) { 40 void TableView2::SetModel(ui::TableModel* model) {
44 if (model == model_) 41 if (model == model_)
45 return; 42 return;
46 43
47 if (model_) 44 if (model_)
48 model_->SetObserver(NULL); 45 model_->SetObserver(NULL);
49 model_ = model; 46 model_ = model;
50 if (model_) 47 if (model_)
51 model_->SetObserver(this); 48 model_->SetObserver(this);
52 if (native_wrapper_) 49 if (native_wrapper_)
53 OnModelChanged(); 50 OnModelChanged();
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 void TableView2::OnItemsRemoved(int start, int length) { 149 void TableView2::OnItemsRemoved(int start, int length) {
153 if (!native_wrapper_) 150 if (!native_wrapper_)
154 return; 151 return;
155 152
156 DCHECK(start >= 0 && length >= 0 && 153 DCHECK(start >= 0 && length >= 0 &&
157 start + length <= native_wrapper_->GetRowCount()); 154 start + length <= native_wrapper_->GetRowCount());
158 155
159 native_wrapper_->OnRowsRemoved(start, length); 156 native_wrapper_->OnRowsRemoved(start, length);
160 } 157 }
161 158
162 void TableView2::AddColumn(const TableColumn& col) { 159 void TableView2::AddColumn(const ui::TableColumn& col) {
163 DCHECK_EQ(0U, all_columns_.count(col.id)); 160 DCHECK_EQ(0U, all_columns_.count(col.id));
164 all_columns_[col.id] = col; 161 all_columns_[col.id] = col;
165 } 162 }
166 163
167 void TableView2::SetColumns(const std::vector<TableColumn>& columns) { 164 void TableView2::SetColumns(const std::vector<ui::TableColumn>& columns) {
168 // Remove the currently visible columns. 165 // Remove the currently visible columns.
169 while (!visible_columns_.empty()) 166 while (!visible_columns_.empty())
170 SetColumnVisibility(visible_columns_.front(), false); 167 SetColumnVisibility(visible_columns_.front(), false);
171 168
172 all_columns_.clear(); 169 all_columns_.clear();
173 for (std::vector<TableColumn>::const_iterator i = columns.begin(); 170 for (std::vector<ui::TableColumn>::const_iterator i = columns.begin();
174 i != columns.end(); ++i) { 171 i != columns.end(); ++i) {
175 AddColumn(*i); 172 AddColumn(*i);
176 } 173 }
177 } 174 }
178 175
179 void TableView2::OnColumnsChanged() { 176 void TableView2::OnColumnsChanged() {
180 column_count_ = static_cast<int>(visible_columns_.size()); 177 column_count_ = static_cast<int>(visible_columns_.size());
181 ResetColumnSizes(); 178 ResetColumnSizes();
182 } 179 }
183 180
(...skipping 19 matching lines...) Expand all
203 native_wrapper_->RemoveColumn(index); 200 native_wrapper_->RemoveColumn(index);
204 visible_columns_.erase(i); 201 visible_columns_.erase(i);
205 changed = true; 202 changed = true;
206 break; 203 break;
207 } 204 }
208 } 205 }
209 } 206 }
210 if (is_visible) { 207 if (is_visible) {
211 DCHECK(native_wrapper_); 208 DCHECK(native_wrapper_);
212 visible_columns_.push_back(id); 209 visible_columns_.push_back(id);
213 TableColumn& column = all_columns_[id]; 210 ui::TableColumn& column = all_columns_[id];
214 native_wrapper_->InsertColumn(column, column_count_); 211 native_wrapper_->InsertColumn(column, column_count_);
215 changed = true; 212 changed = true;
216 } 213 }
217 if (changed) 214 if (changed)
218 OnColumnsChanged(); 215 OnColumnsChanged();
219 216
220 } 217 }
221 218
222 bool TableView2::IsColumnVisible(int id) const { 219 bool TableView2::IsColumnVisible(int id) const {
223 for (std::vector<int>::const_iterator i = visible_columns_.begin(); 220 for (std::vector<int>::const_iterator i = visible_columns_.begin();
(...skipping 18 matching lines...) Expand all
242 width = native_bounds.width(); 239 width = native_bounds.width();
243 } 240 }
244 } 241 }
245 242
246 float percent = 0; 243 float percent = 0;
247 int fixed_width = 0; 244 int fixed_width = 0;
248 int autosize_width = 0; 245 int autosize_width = 0;
249 246
250 for (std::vector<int>::const_iterator i = visible_columns_.begin(); 247 for (std::vector<int>::const_iterator i = visible_columns_.begin();
251 i != visible_columns_.end(); ++i) { 248 i != visible_columns_.end(); ++i) {
252 TableColumn& col = all_columns_[*i]; 249 ui::TableColumn& col = all_columns_[*i];
253 int col_index = static_cast<int>(i - visible_columns_.begin()); 250 int col_index = static_cast<int>(i - visible_columns_.begin());
254 if (col.width == -1) { 251 if (col.width == -1) {
255 if (col.percent > 0) { 252 if (col.percent > 0) {
256 percent += col.percent; 253 percent += col.percent;
257 } else { 254 } else {
258 autosize_width += col.min_visible_width; 255 autosize_width += col.min_visible_width;
259 } 256 }
260 } else { 257 } else {
261 fixed_width += native_wrapper_->GetColumnWidth(col_index); 258 fixed_width += native_wrapper_->GetColumnWidth(col_index);
262 } 259 }
263 } 260 }
264 261
265 // Now do a pass to set the actual sizes of auto-sized and 262 // Now do a pass to set the actual sizes of auto-sized and
266 // percent-sized columns. 263 // percent-sized columns.
267 int available_width = width - fixed_width - autosize_width; 264 int available_width = width - fixed_width - autosize_width;
268 for (std::vector<int>::const_iterator i = visible_columns_.begin(); 265 for (std::vector<int>::const_iterator i = visible_columns_.begin();
269 i != visible_columns_.end(); ++i) { 266 i != visible_columns_.end(); ++i) {
270 TableColumn& col = all_columns_[*i]; 267 ui::TableColumn& col = all_columns_[*i];
271 if (col.width == -1) { 268 if (col.width == -1) {
272 int col_index = static_cast<int>(i - visible_columns_.begin()); 269 int col_index = static_cast<int>(i - visible_columns_.begin());
273 if (col.percent > 0) { 270 if (col.percent > 0) {
274 if (available_width > 0) { 271 if (available_width > 0) {
275 int col_width = 272 int col_width =
276 static_cast<int>(available_width * (col.percent / percent)); 273 static_cast<int>(available_width * (col.percent / percent));
277 available_width -= col_width; 274 available_width -= col_width;
278 percent -= col.percent; 275 percent -= col.percent;
279 native_wrapper_->SetColumnWidth(col_index, col_width); 276 native_wrapper_->SetColumnWidth(col_index, col_width);
280 } 277 }
(...skipping 28 matching lines...) Expand all
309 306
310 void TableView2::ViewHierarchyChanged(bool is_add, View* parent, View* child) { 307 void TableView2::ViewHierarchyChanged(bool is_add, View* parent, View* child) {
311 if (is_add && !native_wrapper_ && GetWidget()) { 308 if (is_add && !native_wrapper_ && GetWidget()) {
312 // The native wrapper's lifetime will be managed by the view hierarchy after 309 // The native wrapper's lifetime will be managed by the view hierarchy after
313 // we call AddChildView. 310 // we call AddChildView.
314 native_wrapper_ = CreateWrapper(); 311 native_wrapper_ = CreateWrapper();
315 AddChildView(native_wrapper_->GetView()); 312 AddChildView(native_wrapper_->GetView());
316 } 313 }
317 } 314 }
318 315
319 void TableView2::Init(const std::vector<TableColumn>& columns) { 316 void TableView2::Init(const std::vector<ui::TableColumn>& columns) {
320 for (std::vector<TableColumn>::const_iterator i = columns.begin(); 317 for (std::vector<ui::TableColumn>::const_iterator i = columns.begin();
321 i != columns.end(); ++i) { 318 i != columns.end(); ++i) {
322 AddColumn(*i); 319 AddColumn(*i);
323 visible_columns_.push_back(i->id); 320 visible_columns_.push_back(i->id);
324 } 321 }
325 } 322 }
326 323
327 gfx::NativeView TableView2::GetTestingHandle() { 324 gfx::NativeView TableView2::GetTestingHandle() {
328 return native_wrapper_->GetTestingHandle(); 325 return native_wrapper_->GetTestingHandle();
329 } 326 }
330 327
331 TableColumn TableView2::GetVisibleColumnAt(int index) { 328 ui::TableColumn TableView2::GetVisibleColumnAt(int index) {
332 DCHECK(index < static_cast<int>(visible_columns_.size())); 329 DCHECK(index < static_cast<int>(visible_columns_.size()));
333 std::map<int, TableColumn>::iterator iter = 330 std::map<int, ui::TableColumn>::iterator iter =
334 all_columns_.find(index); 331 all_columns_.find(index);
335 DCHECK(iter != all_columns_.end()); 332 DCHECK(iter != all_columns_.end());
336 return iter->second; 333 return iter->second;
337 } 334 }
338 335
339 //////////////////////////////////////////////////////////////////////////////// 336 ////////////////////////////////////////////////////////////////////////////////
340 // NativeTable2, protected: 337 // NativeTable2, protected:
341 338
342 NativeTableWrapper* TableView2::CreateWrapper() { 339 NativeTableWrapper* TableView2::CreateWrapper() {
343 return NativeTableWrapper::CreateNativeWrapper(this); 340 return NativeTableWrapper::CreateNativeWrapper(this);
344 } 341 }
345 342
346 } // namespace views 343 } // namespace views
OLDNEW
« no previous file with comments | « views/controls/table/table_view2.h ('k') | views/controls/table/table_view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698