Chromium Code Reviews| Index: chrome/browser/ui/views/payments/payment_method_view_controller.cc |
| diff --git a/chrome/browser/ui/views/payments/payment_method_view_controller.cc b/chrome/browser/ui/views/payments/payment_method_view_controller.cc |
| index 438237e4ac337794fff59ca26654fe22b46ff1b0..945115adaebbc40549efd1838e78944ce0afb851 100644 |
| --- a/chrome/browser/ui/views/payments/payment_method_view_controller.cc |
| +++ b/chrome/browser/ui/views/payments/payment_method_view_controller.cc |
| @@ -45,7 +45,10 @@ class PaymentMethodListItem : public payments::PaymentRequestItemList::Item, |
| public: |
| // Does not take ownership of |card|, which should not be null and should |
|
please use gerrit instead
2017/02/24 14:56:52
Please update the comment to mention that |list| w
anthonyvd
2017/02/24 16:36:57
Ah, missed that one. Done.
|
| // outlive this object. |
| - explicit PaymentMethodListItem(autofill::CreditCard* card) : card_(card) {} |
| + PaymentMethodListItem(autofill::CreditCard* card, |
| + PaymentRequestItemList* list, |
| + bool selected) |
| + : payments::PaymentRequestItemList::Item(list, selected), card_(card) {} |
| ~PaymentMethodListItem() override {} |
| private: |
| @@ -72,6 +75,8 @@ class PaymentMethodListItem : public payments::PaymentRequestItemList::Item, |
| columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, |
| 0, views::GridLayout::USE_PREF, 0, 0); |
| + columns->AddPaddingColumn(0, kPaymentRequestButtonSpacing); |
| + |
| // A column for the card icon |
| columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, |
| 0, views::GridLayout::USE_PREF, 0, 0); |
| @@ -97,14 +102,19 @@ class PaymentMethodListItem : public payments::PaymentRequestItemList::Item, |
| card_info_container->AddChildView(new views::Label( |
| card_->GetInfo(autofill::AutofillType(autofill::CREDIT_CARD_NAME_FULL), |
| g_browser_process->GetApplicationLocale()))); |
| + // TODO(anthonyvd): Add the "card is incomplete" label once the |
| + // completedness logic is implemented. |
| layout->AddView(card_info_container.release()); |
| - std::unique_ptr<views::ImageView> checkmark = |
| - base::MakeUnique<views::ImageView>(); |
| - checkmark->set_interactive(false); |
| - checkmark->SetImage( |
| + checkmark_ = base::MakeUnique<views::ImageView>(); |
| + checkmark_->set_owned_by_client(); |
| + checkmark_->set_interactive(false); |
| + checkmark_->SetImage( |
| gfx::CreateVectorIcon(views::kMenuCheckIcon, 0xFF609265)); |
| - layout->AddView(checkmark.release()); |
| + layout->AddView(checkmark_.get()); |
| + if (!selected()) { |
|
please use gerrit instead
2017/02/24 14:56:52
nit: No {} for single-line if body.
anthonyvd
2017/02/24 16:36:57
Done.
|
| + checkmark_->SetVisible(false); |
| + } |
| std::unique_ptr<views::ImageView> card_icon_view = |
| CreateCardIconView(card_->type()); |
| @@ -114,10 +124,26 @@ class PaymentMethodListItem : public payments::PaymentRequestItemList::Item, |
| return std::move(row); |
| } |
| + void SelectedStateChanged() override { checkmark_->SetVisible(selected()); } |
| + |
| // views::ButtonListener: |
| - void ButtonPressed(views::Button* sender, const ui::Event& event) override {} |
| + void ButtonPressed(views::Button* sender, const ui::Event& event) override { |
| + if (IsComplete()) { |
| + list()->SelectItem(this); |
| + } else { |
| + // TODO(anthonyvd): Display the editor, pre-populated with the data that |
| + // already exists in |card|. |
| + } |
| + } |
| + |
| + bool IsComplete() const { |
| + // TODO(anthonyvd): Hook this up to the card completedness logic when it's |
| + // implemented in PaymentRequest. |
| + return true; |
| + } |
| autofill::CreditCard* card_; |
| + std::unique_ptr<views::ImageView> checkmark_; |
| DISALLOW_COPY_AND_ASSIGN(PaymentMethodListItem); |
| }; |
| @@ -132,7 +158,11 @@ PaymentMethodViewController::PaymentMethodViewController( |
| request->credit_cards(); |
| for (autofill::CreditCard* card : available_cards) { |
| - payment_method_list_.AddItem(base::MakeUnique<PaymentMethodListItem>(card)); |
| + std::unique_ptr<PaymentMethodListItem> item = |
| + base::MakeUnique<PaymentMethodListItem>( |
| + card, &payment_method_list_, |
| + card == request->selected_credit_card()); |
| + payment_method_list_.AddItem(std::move(item)); |
| } |
| } |