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 0cb3ce8787a4746bb3c136eb20ca2ff38dfc3fe3..8b3721cef7fdabb17ac57d1e4a92dc5300f25f16 100644 |
| --- a/chrome/browser/ui/views/payments/payment_request_item_list.cc |
| +++ b/chrome/browser/ui/views/payments/payment_request_item_list.cc |
| @@ -10,7 +10,10 @@ |
| namespace payments { |
| -PaymentRequestItemList::Item::Item() {} |
| +PaymentRequestItemList::Item::Item(PaymentRequest* request, |
| + PaymentRequestItemList* list, |
| + bool selected) |
| + : request_(request), list_(list), selected_(selected) {} |
| PaymentRequestItemList::Item::~Item() {} |
| @@ -23,13 +26,21 @@ views::View* PaymentRequestItemList::Item::GetItemView() { |
| return item_view_.get(); |
| } |
| -PaymentRequestItemList::PaymentRequestItemList() {} |
| +void PaymentRequestItemList::Item::SetSelected(bool selected) { |
| + selected_ = selected; |
| + SelectedStateChanged(); |
| +} |
| + |
| +PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {} |
| PaymentRequestItemList::~PaymentRequestItemList() {} |
| void PaymentRequestItemList::AddItem( |
| std::unique_ptr<PaymentRequestItemList::Item> item) { |
| + DCHECK_EQ(this, item->list()); |
| items_.push_back(std::move(item)); |
| + if (items_.back()->selected()) |
| + SelectItem(items_.back().get()); |
| } |
| std::unique_ptr<views::View> PaymentRequestItemList::CreateListView() { |
| @@ -46,4 +57,23 @@ std::unique_ptr<views::View> PaymentRequestItemList::CreateListView() { |
| return content_view; |
| } |
| +void PaymentRequestItemList::SelectItem(PaymentRequestItemList::Item* item) { |
| + DCHECK_EQ(this, item->list()); |
| + if (selected_item_ == item) |
| + return; |
| + |
| + UnselectSelectedItem(); |
| + |
| + selected_item_ = item; |
| + item->SetSelected(true); |
| +} |
| + |
| +void PaymentRequestItemList::UnselectSelectedItem() { |
| + // It's possible that no item is currently selected, either during list |
| + // creation or in the middle of the selection operation when the previously |
| + // selected item has been deselected but the new one isn't selected yet. |
| + if (selected_item_) |
| + selected_item_->SetSelected(false); |
| +} |
|
please use gerrit instead
2017/02/24 16:40:59
selected_item_ = nullptr?
anthonyvd
2017/02/24 21:49:42
Done.
|
| + |
| } // namespace payments |