| 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 be276570ad0ccfff6253d9e879d3ba364f7ec898..b85a64b9c00d7526323c2d128488dc154cb08294 100644
|
| --- a/chrome/browser/ui/views/payments/payment_request_item_list.cc
|
| +++ b/chrome/browser/ui/views/payments/payment_request_item_list.cc
|
| @@ -5,10 +5,13 @@
|
| #include "chrome/browser/ui/views/payments/payment_request_item_list.h"
|
|
|
| #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h"
|
| +#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/paint_vector_icon.h"
|
| #include "ui/views/controls/image_view.h"
|
| #include "ui/views/layout/box_layout.h"
|
| +#include "ui/views/layout/grid_layout.h"
|
| #include "ui/views/vector_icons.h"
|
| #include "ui/views/view.h"
|
|
|
| @@ -39,6 +42,12 @@ views::View* PaymentRequestItemList::Item::GetItemView() {
|
|
|
| void PaymentRequestItemList::Item::SetSelected(bool selected) {
|
| selected_ = selected;
|
| +
|
| + // This could be called before CreateItemView, so before |checkmark_| is
|
| + // instantiated.
|
| + if (checkmark_)
|
| + checkmark_->SetVisible(selected_);
|
| +
|
| SelectedStateChanged();
|
| }
|
|
|
| @@ -55,6 +64,61 @@ std::unique_ptr<views::ImageView> PaymentRequestItemList::Item::CreateCheckmark(
|
| return checkmark;
|
| }
|
|
|
| +std::unique_ptr<views::View> PaymentRequestItemList::Item::CreateExtraView() {
|
| + return nullptr;
|
| +}
|
| +
|
| +std::unique_ptr<views::View> PaymentRequestItemList::Item::CreateItemView() {
|
| + std::unique_ptr<views::View> content = CreateContentView();
|
| +
|
| + std::unique_ptr<PaymentRequestRowView> row =
|
| + base::MakeUnique<PaymentRequestRowView>(this);
|
| + views::GridLayout* layout = new views::GridLayout(row.get());
|
| + row->SetLayoutManager(layout);
|
| +
|
| + layout->SetInsets(
|
| + kPaymentRequestRowVerticalInsets, kPaymentRequestRowHorizontalInsets,
|
| + kPaymentRequestRowVerticalInsets,
|
| + kPaymentRequestRowHorizontalInsets + kPaymentRequestRowExtraRightInset);
|
| +
|
| + // Add a column for the item's content view.
|
| + views::ColumnSet* columns = layout->AddColumnSet(0);
|
| + columns->AddColumn(views::GridLayout::FILL, views::GridLayout::LEADING, 1,
|
| + views::GridLayout::USE_PREF, 0, 0);
|
| +
|
| + columns->AddPaddingColumn(1, 0);
|
| +
|
| + // Add a column for the checkmark shown next to the selected profile.
|
| + 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);
|
| +
|
| + layout->StartRow(0, 0);
|
| + content->set_can_process_events_within_subtree(false);
|
| + layout->AddView(content.release());
|
| +
|
| + checkmark_ = CreateCheckmark(selected());
|
| + layout->AddView(checkmark_.get());
|
| +
|
| + std::unique_ptr<views::View> extra_view = CreateExtraView();
|
| + if (extra_view)
|
| + layout->AddView(extra_view.release());
|
| +
|
| + return std::move(row);
|
| +}
|
| +
|
| +void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender,
|
| + const ui::Event& event) {
|
| + if (CanBeSelected()) {
|
| + list()->SelectItem(this);
|
| + } else {
|
| + PerformSelectionFallback();
|
| + }
|
| +}
|
| +
|
| PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {}
|
|
|
| PaymentRequestItemList::~PaymentRequestItemList() {}
|
|
|