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

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: Rebase 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..00dd4ce70a0ea7f524c81b5d619cbb6535452e44 100644
--- a/chrome/browser/ui/views/payments/payment_request_item_list.cc
+++ b/chrome/browser/ui/views/payments/payment_request_item_list.cc
@@ -8,7 +8,12 @@
#include "chrome/browser/ui/views/payments/payment_request_row_view.h"
#include "chrome/browser/ui/views/payments/payment_request_views_util.h"
#include "components/payments/content/payment_request_state.h"
+#include "ui/gfx/color_utils.h"
#include "ui/gfx/paint_vector_icon.h"
+#include "ui/vector_icons/vector_icons.h"
+#include "ui/views/controls/button/button.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 +31,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 +104,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);
+ }
+
+ constexpr int kEditIconSize = 16;
+ if (show_edit_button_) {
+ columns->AddPaddingColumn(0, kExtraViewSpacing);
+ // Add a column for the edit_button if it exists.
+ 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 +130,30 @@ 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);
+ const SkColor icon_color =
+ color_utils::DeriveDefaultIconColor(SK_ColorBLACK);
+ edit_button->SetImage(
+ views::Button::STATE_NORMAL,
+ gfx::CreateVectorIcon(ui::kEditIcon, kEditIconSize, icon_color));
+ edit_button->set_ink_drop_base_color(icon_color);
+ 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)) {
+ EditButtonPressed();
+ } else if (CanBeSelected()) {
list()->SelectItem(this);
} else {
PerformSelectionFallback();

Powered by Google App Engine
This is Rietveld 408576698