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..867278ac82ef80d099f044e4e5395d487feced52 100644 |
| --- a/chrome/browser/ui/views/chooser_content_view.cc |
| +++ b/chrome/browser/ui/views/chooser_content_view.cc |
| @@ -9,6 +9,7 @@ |
| #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/image/image_skia.h" |
| #include "ui/gfx/paint_vector_icon.h" |
| #include "ui/gfx/vector_icons_public.h" |
| @@ -17,7 +18,7 @@ |
| #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" |
| +#include "ui/views/layout/layout_manager.h" |
| namespace { |
| @@ -27,11 +28,48 @@ 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, |
| IDR_SIGNAL_4_BAR}; |
| +class ChooserContentViewLayoutManager : public views::LayoutManager { |
| + public: |
| + ChooserContentViewLayoutManager(views::View* table_parent, |
| + views::View* throbber, |
| + views::View* turn_adapter_off_help) |
| + : table_parent_(table_parent), |
| + throbber_(throbber), |
| + turn_adapter_off_help_(turn_adapter_off_help) {} |
| + |
| + ~ChooserContentViewLayoutManager() override {} |
| + |
| + // views::LayoutManager: |
| + void Layout(views::View* host) override { |
| + table_parent_->SetBoundsRect(host->GetContentsBounds()); |
| + // Set the throbber in the center of the chooser. |
| + throbber_->SetBounds((kChooserWidth - kThrobberDiameter) / 2, |
|
Jeffrey Yasskin
2016/09/26 23:25:07
Do we need to deal with not getting our preferred
juncai
2016/09/28 22:45:42
Done.
|
| + (kChooserHeight - kThrobberDiameter) / 2, |
| + kThrobberDiameter, kThrobberDiameter); |
| + turn_adapter_off_help_->SetPosition( |
| + gfx::Point(kAdapterOffHelpLinkPadding, kAdapterOffHelpLinkPadding)); |
| + } |
| + |
| + // views::LayoutManager: |
| + gfx::Size GetPreferredSize(const views::View* host) const override { |
| + return gfx::Size(kChooserWidth, kChooserHeight); |
| + } |
| + |
| + private: |
| + views::View* table_parent_; |
| + views::View* throbber_; |
| + views::View* turn_adapter_off_help_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ChooserContentViewLayoutManager); |
| +}; |
| + |
| } // namespace |
| ChooserContentView::ChooserContentView( |
| @@ -50,23 +88,33 @@ 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); |
| 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_); |
| + |
| + SetLayoutManager(new ChooserContentViewLayoutManager(table_parent, throbber_, |
|
Jeffrey Yasskin
2016/09/26 23:25:07
It looked to me like sky@ was suggesting to overri
juncai
2016/09/28 22:45:42
ah, I think I misunderstood the comment.
Done.
|
| + 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); |
| } |
| @@ -159,7 +207,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 +244,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, |