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

Side by Side Diff: chrome/browser/ui/views/chooser_content_view.cc

Issue 2518933004: Add multiple selection support to chooser on desktops (Closed)
Patch Set: add multiple selection support to chooser on desktops Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // 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
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/chooser_content_view.h" 5 #include "chrome/browser/ui/views/chooser_content_view.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/numerics/safe_conversions.h" 8 #include "base/numerics/safe_conversions.h"
9 #include "chrome/grit/generated_resources.h" 9 #include "chrome/grit/generated_resources.h"
10 #include "ui/base/l10n/l10n_util.h" 10 #include "ui/base/l10n/l10n_util.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 help_text_range_ = gfx::Range(offsets[0], offsets[0] + help_text_.size()); 57 help_text_range_ = gfx::Range(offsets[0], offsets[0] + help_text_.size());
58 re_scan_text_range_ = 58 re_scan_text_range_ =
59 gfx::Range(offsets[1], offsets[1] + re_scan_text.size()); 59 gfx::Range(offsets[1], offsets[1] + re_scan_text.size());
60 chooser_controller_->set_view(this); 60 chooser_controller_->set_view(this);
61 std::vector<ui::TableColumn> table_columns; 61 std::vector<ui::TableColumn> table_columns;
62 table_columns.push_back(ui::TableColumn()); 62 table_columns.push_back(ui::TableColumn());
63 table_view_ = new views::TableView( 63 table_view_ = new views::TableView(
64 this, table_columns, 64 this, table_columns,
65 chooser_controller_->ShouldShowIconBeforeText() ? views::ICON_AND_TEXT 65 chooser_controller_->ShouldShowIconBeforeText() ? views::ICON_AND_TEXT
66 : views::TEXT_ONLY, 66 : views::TEXT_ONLY,
67 true /* single_selection */); 67 !chooser_controller_->AllowMultipleSelection() /* single_selection */);
68 table_view_->set_select_on_remove(false); 68 table_view_->set_select_on_remove(false);
69 table_view_->SetObserver(table_view_observer); 69 table_view_->SetObserver(table_view_observer);
70 table_view_->SetEnabled(chooser_controller_->NumOptions() > 0); 70 table_view_->SetEnabled(chooser_controller_->NumOptions() > 0);
71 71
72 table_parent_ = table_view_->CreateParentIfNecessary(); 72 table_parent_ = table_view_->CreateParentIfNecessary();
73 AddChildView(table_parent_); 73 AddChildView(table_parent_);
74 74
75 throbber_ = new views::Throbber(); 75 throbber_ = new views::Throbber();
76 throbber_->SetVisible(false); 76 throbber_->SetVisible(false);
77 AddChildView(throbber_); 77 AddChildView(throbber_);
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 ? chooser_controller_->GetOkButtonLabel() 278 ? chooser_controller_->GetOkButtonLabel()
279 : l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_CANCEL_BUTTON_TEXT); 279 : l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_CANCEL_BUTTON_TEXT);
280 } 280 }
281 281
282 bool ChooserContentView::IsDialogButtonEnabled(ui::DialogButton button) const { 282 bool ChooserContentView::IsDialogButtonEnabled(ui::DialogButton button) const {
283 return button != ui::DIALOG_BUTTON_OK || 283 return button != ui::DIALOG_BUTTON_OK ||
284 !table_view_->selection_model().empty(); 284 !table_view_->selection_model().empty();
285 } 285 }
286 286
287 void ChooserContentView::Accept() { 287 void ChooserContentView::Accept() {
288 chooser_controller_->Select(table_view_->selection_model().active()); 288 for (int index : table_view_->selection_model().selected_indices())
289 chooser_controller_->Select(index);
sky 2016/11/22 04:37:35 Isn't Select() a one time type call? I would expec
juncai 2016/11/22 19:07:00 Done.
289 } 290 }
290 291
291 void ChooserContentView::Cancel() { 292 void ChooserContentView::Cancel() {
292 chooser_controller_->Cancel(); 293 chooser_controller_->Cancel();
293 } 294 }
294 295
295 void ChooserContentView::Close() { 296 void ChooserContentView::Close() {
296 chooser_controller_->Close(); 297 chooser_controller_->Close();
297 } 298 }
298 299
299 void ChooserContentView::UpdateTableView() { 300 void ChooserContentView::UpdateTableView() {
300 if (chooser_controller_->NumOptions() == 0) { 301 if (chooser_controller_->NumOptions() == 0) {
301 table_view_->OnModelChanged(); 302 table_view_->OnModelChanged();
302 table_view_->SetEnabled(false); 303 table_view_->SetEnabled(false);
303 } else { 304 } else {
304 table_view_->SetEnabled(true); 305 table_view_->SetEnabled(true);
305 } 306 }
306 } 307 }
307 308
308 void ChooserContentView::SetGetHelpAndReScanLink() { 309 void ChooserContentView::SetGetHelpAndReScanLink() {
309 footnote_link_->SetText(help_and_re_scan_text_); 310 footnote_link_->SetText(help_and_re_scan_text_);
310 footnote_link_->AddStyleRange( 311 footnote_link_->AddStyleRange(
311 help_text_range_, views::StyledLabel::RangeStyleInfo::CreateForLink()); 312 help_text_range_, views::StyledLabel::RangeStyleInfo::CreateForLink());
312 footnote_link_->AddStyleRange( 313 footnote_link_->AddStyleRange(
313 re_scan_text_range_, views::StyledLabel::RangeStyleInfo::CreateForLink()); 314 re_scan_text_range_, views::StyledLabel::RangeStyleInfo::CreateForLink());
314 } 315 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698