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

Unified Diff: chrome/browser/ui/views/payments/payment_request_item_list.cc

Issue 2872623002: [Web Payments] Add "pencil" edit button to lists. (Closed)
Patch Set: Don't own the edit button Created 3 years, 7 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/payments/payment_request_item_list.cc
diff --git a/chrome/browser/ui/views/payments/payment_request_item_list.cc b/chrome/browser/ui/views/payments/payment_request_item_list.cc
index 0cef61ec6bc84ac48121b7c06491cd67c830604a..820fdecfe57515c5916f6fa3bdd0f1ce43dc650a 100644
--- a/chrome/browser/ui/views/payments/payment_request_item_list.cc
+++ b/chrome/browser/ui/views/payments/payment_request_item_list.cc
@@ -9,6 +9,9 @@
#include "chrome/browser/ui/views/payments/payment_request_views_util.h"
#include "components/payments/content/payment_request_state.h"
#include "ui/gfx/paint_vector_icon.h"
+#include "ui/vector_icons/vector_icons.h"
+#include "ui/views/controls/button/image_button.h"
+#include "ui/views/controls/button/image_button_factory.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/layout/grid_layout.h"
@@ -26,8 +29,13 @@ const SkColor kCheckmarkColor = 0xFF609265;
PaymentRequestItemList::Item::Item(PaymentRequestSpec* spec,
PaymentRequestState* state,
PaymentRequestItemList* list,
- bool selected)
- : spec_(spec), state_(state), list_(list), selected_(selected) {}
+ bool selected,
+ bool show_edit_button)
+ : spec_(spec),
+ state_(state),
+ list_(list),
+ selected_(selected),
+ show_edit_button_(show_edit_button) {}
PaymentRequestItemList::Item::~Item() {}
@@ -94,9 +102,24 @@ std::unique_ptr<views::View> PaymentRequestItemList::Item::CreateItemView() {
columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
views::GridLayout::USE_PREF, 0, 0);
- // Add a column for the extra_view, which comes after the checkmark.
- columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
- views::GridLayout::USE_PREF, 0, 0);
+ // The space between the checkmark, extra view, and edit button.
+ constexpr int kExtraViewSpacing = 16;
+ std::unique_ptr<views::View> extra_view = CreateExtraView();
+ if (extra_view) {
+ columns->AddPaddingColumn(0, kExtraViewSpacing);
+ // Add a column for the extra_view, which comes after the checkmark.
+ columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
+ 0, views::GridLayout::USE_PREF, 0, 0);
+ }
+
+ if (show_edit_button_) {
+ columns->AddPaddingColumn(0, kExtraViewSpacing);
+ // Add a column for the edit_button if it exists.
+ constexpr int kEditIconSize = 16;
+ columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
+ 0, views::GridLayout::FIXED, kEditIconSize,
+ kEditIconSize);
+ }
layout->StartRow(0, 0);
content->set_can_process_events_within_subtree(false);
@@ -105,16 +128,26 @@ std::unique_ptr<views::View> PaymentRequestItemList::Item::CreateItemView() {
checkmark_ = CreateCheckmark(selected());
layout->AddView(checkmark_.get());
- std::unique_ptr<views::View> extra_view = CreateExtraView();
if (extra_view)
layout->AddView(extra_view.release());
+ if (show_edit_button_) {
+ views::ImageButton* edit_button = views::CreateVectorImageButton(this);
+ edit_button->set_owned_by_client();
+ views::SetImageFromVectorIcon(edit_button, ui::kEditIcon);
+ edit_button->SetFocusBehavior(views::View::FocusBehavior::ALWAYS);
+ edit_button->set_id(static_cast<int>(DialogViewID::EDIT_ITEM_BUTTON));
+ layout->AddView(edit_button);
+ }
+
return std::move(row);
}
void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender,
const ui::Event& event) {
- if (CanBeSelected()) {
+ if (sender->id() == static_cast<int>(DialogViewID::EDIT_ITEM_BUTTON)) {
Evan Stade 2017/05/12 18:48:07 nit: are both of these casts necessary? (here and
anthonyvd 2017/05/12 20:16:48 Yeah, since DialogViewID is an enum class not cast
Evan Stade 2017/05/15 17:14:55 what error do you get for the other one? Because c
anthonyvd 2017/05/15 17:27:40 error: cannot initialize a parameter of type 'int'
+ EditButtonPressed();
+ } else if (CanBeSelected()) {
list()->SelectItem(this);
} else {
PerformSelectionFallback();

Powered by Google App Engine
This is Rietveld 408576698