Chromium Code Reviews| Index: chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc |
| diff --git a/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc b/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc |
| index 191bfc83d196d3c17833008b1e43a61cf9a60aaa..b4275d50134952614e73da3d1dbabe0e7360e854 100644 |
| --- a/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc |
| +++ b/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc |
| @@ -10,9 +10,16 @@ |
| #include "ui/base/resource/resource_bundle.h" |
| #include "ui/views/controls/button/label_button.h" |
| #include "ui/views/controls/label.h" |
| +#include "ui/views/controls/link.h" |
| #include "ui/views/layout/grid_layout.h" |
| #include "ui/views/layout/layout_constants.h" |
| +namespace { |
| + |
| +const int kListPadding = 10; |
| + |
| +} |
| + |
| ToolbarActionsBarBubbleViews::ToolbarActionsBarBubbleViews( |
| views::View* anchor_view, |
| std::unique_ptr<ToolbarActionsBarBubbleDelegate> delegate) |
| @@ -21,6 +28,8 @@ ToolbarActionsBarBubbleViews::ToolbarActionsBarBubbleViews( |
| delegate_(std::move(delegate)), |
| heading_label_(nullptr), |
| content_label_(nullptr), |
| + item_list_(nullptr), |
| + learn_more_button_(nullptr), |
| dismiss_button_(nullptr), |
| action_button_(nullptr), |
| acknowledged_(false) { |
| @@ -42,20 +51,23 @@ void ToolbarActionsBarBubbleViews::Init() { |
| enum ColumnSetId { |
| HEADER_AND_BODY_COLUMN_SET = 0, |
| + LIST_COLUMN_SET, |
| BUTTON_STRIP_COLUMN_SET, |
| }; |
| views::ColumnSet* header_and_body_cs = |
| layout->AddColumnSet(HEADER_AND_BODY_COLUMN_SET); |
| - header_and_body_cs->AddColumn(views::GridLayout::TRAILING, |
| + header_and_body_cs->AddColumn(views::GridLayout::LEADING, |
| views::GridLayout::LEADING, 1, |
| views::GridLayout::USE_PREF, 0, 0); |
| views::ColumnSet* buttons_cs = layout->AddColumnSet(BUTTON_STRIP_COLUMN_SET); |
| + buttons_cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, |
| + 0, views::GridLayout::USE_PREF, 0, 0); |
| buttons_cs->AddPaddingColumn(1, 0); |
| - buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::LEADING, |
| + buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, |
| 0, views::GridLayout::USE_PREF, 0, 0); |
| buttons_cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing); |
| - buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::LEADING, |
| + buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, |
| 0, views::GridLayout::USE_PREF, 0, 0); |
| // Add a header. |
| @@ -78,9 +90,37 @@ void ToolbarActionsBarBubbleViews::Init() { |
| content_label_->SizeToFit(width); |
| content_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| layout->AddView(content_label_); |
| + |
| + base::string16 item_list = delegate_->GetItemListText(); |
| + if (!item_list.empty()) { |
|
Evan Stade
2016/04/12 00:56:58
if https://codereview.chromium.org/1877143002/ lan
|
| + views::ColumnSet* list_cs = layout->AddColumnSet(LIST_COLUMN_SET); |
| + list_cs->AddPaddingColumn(0, kListPadding); |
| + list_cs->AddColumn(views::GridLayout::LEADING, |
| + views::GridLayout::CENTER, |
| + 0, |
| + views::GridLayout::USE_PREF, |
| + 0, 0); |
| + |
| + layout->StartRowWithPadding(0, LIST_COLUMN_SET, 0, 0); |
| + item_list_ = new views::Label(item_list); |
| + item_list_->SetMultiLine(true); |
| + item_list_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| + item_list_->SizeToFit(width); |
| + layout->AddView(item_list_); |
| + } |
| + |
| layout->AddPaddingRow(0, views::kLabelToControlVerticalSpacing); |
| layout->StartRow(0, BUTTON_STRIP_COLUMN_SET); |
| + base::string16 learn_more_text = delegate_->GetLearnMoreButtonText(); |
| + if (!learn_more_text.empty()) { |
| + learn_more_button_ = new views::Link(learn_more_text); |
| + learn_more_button_->set_listener(this); |
| + layout->AddView(learn_more_button_); |
| + } else { |
| + layout->SkipColumns(1); |
| + } |
| + |
| base::string16 dismiss_button_text = delegate_->GetDismissButtonText(); |
| if (!dismiss_button_text.empty()) { |
| dismiss_button_ = new views::LabelButton(this, dismiss_button_text); |
| @@ -112,7 +152,20 @@ void ToolbarActionsBarBubbleViews::OnWidgetDestroying(views::Widget* widget) { |
| void ToolbarActionsBarBubbleViews::ButtonPressed(views::Button* sender, |
| const ui::Event& event) { |
| - delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE); |
| + if (sender == action_button_) { |
| + delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE); |
| + } else { |
| + DCHECK_EQ(dismiss_button_, sender); |
| + delegate_->OnBubbleClosed( |
| + ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION); |
| + } |
| + acknowledged_ = true; |
| + GetWidget()->Close(); |
| +} |
| + |
| +void ToolbarActionsBarBubbleViews::LinkClicked(views::Link* link, |
| + int event_flags) { |
| + delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_LEARN_MORE); |
| acknowledged_ = true; |
| GetWidget()->Close(); |
| } |