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

Unified Diff: chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc

Issue 1877143002: Convert ToolbarActionsBarBubbleViews to BubbleDialogDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
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 b27c51536c72207ba8caafcd591b45b81d9c4e0a..a5530f685d9a8b8aab8b0a09e9e4b261498fac42 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
@@ -11,7 +11,7 @@
#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/box_layout.h"
#include "ui/views/layout/layout_constants.h"
namespace {
@@ -21,16 +21,11 @@ const int kListPadding = 10;
ToolbarActionsBarBubbleViews::ToolbarActionsBarBubbleViews(
views::View* anchor_view,
std::unique_ptr<ToolbarActionsBarBubbleDelegate> delegate)
- : views::BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
- anchor_view_(anchor_view),
+ : views::BubbleDialogDelegateView(anchor_view,
+ views::BubbleBorder::TOP_RIGHT),
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) {
+ learn_more_button_(nullptr) {
set_close_on_deactivate(delegate_->ShouldCloseOnDeactivate());
}
@@ -41,129 +36,82 @@ void ToolbarActionsBarBubbleViews::Show() {
GetWidget()->Show();
}
+views::View* ToolbarActionsBarBubbleViews::CreateExtraView() {
+ base::string16 text = delegate_->GetLearnMoreButtonText();
+ if (text.empty())
+ return nullptr;
+
+ learn_more_button_ = new views::Link(text);
+ learn_more_button_->set_listener(this);
+ return learn_more_button_;
+}
+
+base::string16 ToolbarActionsBarBubbleViews::GetWindowTitle() const {
+ return delegate_->GetHeadingText();
+}
+
+bool ToolbarActionsBarBubbleViews::Cancel() {
+ delegate_->OnBubbleClosed(
+ ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION);
+ return true;
+}
+
+bool ToolbarActionsBarBubbleViews::Accept() {
+ delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE);
+ return true;
+}
+
+bool ToolbarActionsBarBubbleViews::Close() {
+ if (delegate_) {
+ delegate_->OnBubbleClosed(
+ ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_DEACTIVATION);
+ }
+ return true;
+}
+
void ToolbarActionsBarBubbleViews::Init() {
- views::GridLayout* layout = new views::GridLayout(this);
- layout->SetInsets(views::kPanelVertMargin, views::kPanelHorizMargin,
- views::kPanelVertMargin, views::kPanelHorizMargin);
- SetLayoutManager(layout);
-
- 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::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::CENTER,
- 0, views::GridLayout::USE_PREF, 0, 0);
- buttons_cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing);
- buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
- 0, views::GridLayout::USE_PREF, 0, 0);
-
- // Add a header.
- layout->StartRow(0, HEADER_AND_BODY_COLUMN_SET);
- heading_label_ = new views::Label(delegate_->GetHeadingText());
- heading_label_->SetFontList(
- ui::ResourceBundle::GetSharedInstance().GetFontList(
- ui::ResourceBundle::MediumFont));
- heading_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
- layout->AddView(heading_label_);
- layout->AddPaddingRow(0, views::kLabelToControlVerticalSpacing);
- int width = views::Widget::GetLocalizedContentsWidth(
- IDS_EXTENSION_TOOLBAR_REDESIGN_NOTIFICATION_BUBBLE_WIDTH_CHARS);
+ SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0,
+ views::kRelatedControlVerticalSpacing));
// Add the content string.
- layout->StartRow(0, HEADER_AND_BODY_COLUMN_SET);
- content_label_ = new views::Label(
- delegate_->GetBodyText(anchor_view_->id() == VIEW_ID_BROWSER_ACTION));
- content_label_->SetMultiLine(true);
- content_label_->SizeToFit(width);
- content_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
- layout->AddView(content_label_);
+ views::Label* content_label = new views::Label(
+ delegate_->GetBodyText(GetAnchorView()->id() == VIEW_ID_BROWSER_ACTION));
+ content_label->SetMultiLine(true);
+ int width = views::Widget::GetLocalizedContentsWidth(
+ IDS_EXTENSION_TOOLBAR_REDESIGN_NOTIFICATION_BUBBLE_WIDTH_CHARS);
+ content_label->SizeToFit(width);
+ content_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+ AddChildView(content_label);
base::string16 item_list = delegate_->GetItemListText();
if (!item_list.empty()) {
- 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_->SetBorder(
+ views::Border::CreateEmptyBorder(0, kListPadding, 0, 0));
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);
- dismiss_button_->SetStyle(views::Button::STYLE_BUTTON);
- layout->AddView(dismiss_button_, 1, 1, views::GridLayout::TRAILING,
- views::GridLayout::FILL);
- } else {
- layout->SkipColumns(1);
+ item_list_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+ AddChildView(item_list_);
}
-
- action_button_ =
- new views::LabelButton(this, delegate_->GetActionButtonText());
- action_button_->SetStyle(views::Button::STYLE_BUTTON);
- layout->AddView(action_button_, 1, 1, views::GridLayout::TRAILING,
- views::GridLayout::FILL);
}
-void ToolbarActionsBarBubbleViews::OnWidgetDestroying(views::Widget* widget) {
- BubbleDelegateView::OnWidgetDestroying(widget);
- if (!acknowledged_) {
- ToolbarActionsBarBubbleDelegate::CloseAction close_action =
- close_reason() == CloseReason::DEACTIVATION
- ? ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_DEACTIVATION
- : ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION;
- delegate_->OnBubbleClosed(close_action);
- acknowledged_ = true;
- }
+int ToolbarActionsBarBubbleViews::GetDialogButtons() const {
+ int buttons = ui::DIALOG_BUTTON_OK;
+ if (!delegate_->GetDismissButtonText().empty())
+ buttons |= ui::DIALOG_BUTTON_CANCEL;
+ return buttons;
}
-void ToolbarActionsBarBubbleViews::ButtonPressed(views::Button* sender,
- const ui::Event& event) {
- 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();
+base::string16 ToolbarActionsBarBubbleViews::GetDialogButtonLabel(
+ ui::DialogButton button) const {
+ return button == ui::DIALOG_BUTTON_OK ? delegate_->GetActionButtonText()
+ : delegate_->GetDismissButtonText();
}
void ToolbarActionsBarBubbleViews::LinkClicked(views::Link* link,
int event_flags) {
delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_LEARN_MORE);
- acknowledged_ = true;
+ // Reset delegate so we don't send extra OnBubbleClosed()s.
+ delegate_.reset();
GetWidget()->Close();
}

Powered by Google App Engine
This is Rietveld 408576698