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 be276570ad0ccfff6253d9e879d3ba364f7ec898..43efea07c1bb6705d98e5a02a748ee7255c014aa 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 listing the profile information. |
|
tmartino
2017/03/16 17:42:01
nit: This class is not associated with a profile
anthonyvd
2017/03/20 13:24:59
Good catch, done!
|
| + 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() {} |