Chromium Code Reviews| Index: chrome/browser/ui/views/chooser_content_view.cc |
| diff --git a/chrome/browser/ui/views/chooser_content_view.cc b/chrome/browser/ui/views/chooser_content_view.cc |
| index c4b1ab03922943b32c8225ff36334fe5e45e1a0e..4db2c6b1a89a66de5c31219a30e4dbbd7ce7fa81 100644 |
| --- a/chrome/browser/ui/views/chooser_content_view.cc |
| +++ b/chrome/browser/ui/views/chooser_content_view.cc |
| @@ -9,6 +9,8 @@ |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/base/resource/resource_bundle.h" |
| #include "ui/gfx/color_palette.h" |
| +#include "ui/gfx/geometry/point.h" |
| +#include "ui/gfx/geometry/rect.h" |
| #include "ui/gfx/image/image_skia.h" |
| #include "ui/gfx/paint_vector_icon.h" |
| #include "ui/gfx/vector_icons_public.h" |
| @@ -17,7 +19,6 @@ |
| #include "ui/views/controls/styled_label.h" |
| #include "ui/views/controls/table/table_view.h" |
| #include "ui/views/controls/throbber.h" |
| -#include "ui/views/layout/fill_layout.h" |
| namespace { |
| @@ -27,6 +28,8 @@ const int kChooserHeight = 220; |
| const int kThrobberDiameter = 24; |
| +const int kAdapterOffHelpLinkPadding = 5; |
| + |
| // The lookup table for signal strength level image. |
| const int kSignalStrengthLevelImageIds[5] = {IDR_SIGNAL_0_BAR, IDR_SIGNAL_1_BAR, |
| IDR_SIGNAL_2_BAR, IDR_SIGNAL_3_BAR, |
| @@ -50,23 +53,30 @@ ChooserContentView::ChooserContentView( |
| table_view_->SetObserver(table_view_observer); |
| table_view_->SetEnabled(chooser_controller_->NumOptions() > 0); |
| - SetLayoutManager(new views::FillLayout()); |
| - views::View* table_parent = table_view_->CreateParentIfNecessary(); |
| - AddChildView(table_parent); |
| + table_parent_ = table_view_->CreateParentIfNecessary(); |
| + AddChildView(table_parent_); |
| throbber_ = new views::Throbber(); |
| - // Set the throbber in the center of the chooser. |
| - throbber_->SetBounds((kChooserWidth - kThrobberDiameter) / 2, |
| - (kChooserHeight - kThrobberDiameter) / 2, |
| - kThrobberDiameter, kThrobberDiameter); |
| throbber_->SetVisible(false); |
| AddChildView(throbber_); |
| + |
| + turn_adapter_off_help_ = new views::Link( |
| + l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_TURN_ADAPTER_OFF)); |
| + turn_adapter_off_help_->SetHandlesTooltips(false); |
| + turn_adapter_off_help_->SetUnderline(false); |
| + turn_adapter_off_help_->SetMultiLine(true); |
| + turn_adapter_off_help_->SizeToFit(kChooserWidth); |
| + turn_adapter_off_help_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| + turn_adapter_off_help_->set_listener(this); |
| + turn_adapter_off_help_->SetVisible(false); |
| + AddChildView(turn_adapter_off_help_); |
| } |
| ChooserContentView::~ChooserContentView() { |
| chooser_controller_->set_view(nullptr); |
| table_view_->SetObserver(nullptr); |
| table_view_->SetModel(nullptr); |
| + turn_adapter_off_help_->set_listener(nullptr); |
| if (discovery_state_) |
| discovery_state_->set_listener(nullptr); |
| } |
| @@ -75,6 +85,17 @@ gfx::Size ChooserContentView::GetPreferredSize() const { |
| return gfx::Size(kChooserWidth, kChooserHeight); |
| } |
| +void ChooserContentView::Layout() { |
|
Jeffrey Yasskin
2016/09/28 23:12:23
This is great, thanks!
|
| + gfx::Rect rect(GetContentsBounds()); |
| + table_parent_->SetBoundsRect(rect); |
| + // Set the throbber in the center of the chooser. |
| + throbber_->SetBounds((rect.width() - kThrobberDiameter) / 2, |
| + (rect.height() - kThrobberDiameter) / 2, |
| + kThrobberDiameter, kThrobberDiameter); |
| + turn_adapter_off_help_->SetPosition( |
| + gfx::Point(kAdapterOffHelpLinkPadding, kAdapterOffHelpLinkPadding)); |
|
sky
2016/09/29 03:32:31
It's certainly ok to roll your own layout like thi
juncai
2016/09/29 21:14:57
Done.
|
| +} |
| + |
| int ChooserContentView::RowCount() { |
| // When there are no devices, the table contains a message saying there |
| // are no devices, so the number of rows is always at least 1. |
| @@ -159,7 +180,8 @@ void ChooserContentView::OnAdapterEnabledChanged(bool enabled) { |
| // of a previously selected row. |
| table_view_->Select(-1); |
| UpdateTableView(); |
| - table_view_->SetVisible(true); |
| + table_view_->SetVisible(enabled); |
| + turn_adapter_off_help_->SetVisible(!enabled); |
| throbber_->Stop(); |
| throbber_->SetVisible(false); |
| @@ -195,7 +217,12 @@ void ChooserContentView::OnRefreshStateChanged(bool refreshing) { |
| } |
| void ChooserContentView::LinkClicked(views::Link* source, int event_flags) { |
| - chooser_controller_->RefreshOptions(); |
| + if (source == discovery_state_) |
| + chooser_controller_->RefreshOptions(); |
| + else if (source == turn_adapter_off_help_) |
| + chooser_controller_->OpenAdapterOffHelpUrl(); |
| + else |
| + NOTREACHED(); |
| } |
| void ChooserContentView::StyledLabelLinkClicked(views::StyledLabel* label, |