Chromium Code Reviews| 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 cef163242e9fdfa808184dc5bbd4a3782cd40a5f..d6884b838a627a535355d52613a3a7043548876b 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,29 @@ 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); |
| + constexpr int kExtraViewSpacing = 10; |
|
mathp
2017/05/08 14:50:28
Nit: I would add a comment such as
// This is th
anthonyvd
2017/05/08 15:02:10
Done.
|
| + 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_) { |
| + edit_button_.reset(views::CreateVectorImageButton(this)); |
| + edit_button_->set_owned_by_client(); |
| + views::SetImageFromVectorIcon(edit_button_.get(), ui::kEditPencilIcon); |
| + constexpr int kEditPencilIcon = 16; |
| + edit_button_->SetSize(gfx::Size(kEditPencilIcon, kEditPencilIcon)); |
| + edit_button_->SetFocusBehavior(views::View::FocusBehavior::ALWAYS); |
| + edit_button_->set_id(static_cast<int>(DialogViewID::EDIT_ITEM_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::USE_PREF, 0, 0); |
| + } |
| layout->StartRow(0, 0); |
| content->set_can_process_events_within_subtree(false); |
| @@ -105,16 +133,20 @@ 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 (edit_button_) |
| + layout->AddView(edit_button_.get()); |
| + |
| return std::move(row); |
| } |
| void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender, |
| const ui::Event& event) { |
| - if (CanBeSelected()) { |
| + if (sender == edit_button_.get()) { |
| + EditButtonPressed(); |
| + } else if (CanBeSelected()) { |
| list()->SelectItem(this); |
| } else { |
| PerformSelectionFallback(); |