Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/payments/payment_request_item_list.h" | 5 #include "chrome/browser/ui/views/payments/payment_request_item_list.h" |
| 6 | 6 |
| 7 #include "chrome/browser/ui/views/payments/payment_request_dialog_view.h" | |
| 7 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" | 8 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" |
| 8 #include "chrome/browser/ui/views/payments/payment_request_row_view.h" | 9 #include "chrome/browser/ui/views/payments/payment_request_row_view.h" |
| 9 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" | 10 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" |
| 10 #include "components/payments/content/payment_request_state.h" | 11 #include "components/payments/content/payment_request_state.h" |
| 11 #include "ui/gfx/paint_vector_icon.h" | 12 #include "ui/gfx/paint_vector_icon.h" |
| 12 #include "ui/views/controls/image_view.h" | 13 #include "ui/views/controls/image_view.h" |
| 13 #include "ui/views/layout/box_layout.h" | 14 #include "ui/views/layout/box_layout.h" |
| 14 #include "ui/views/layout/grid_layout.h" | 15 #include "ui/views/layout/grid_layout.h" |
| 15 #include "ui/views/vector_icons.h" | 16 #include "ui/views/vector_icons.h" |
| 16 #include "ui/views/view.h" | 17 #include "ui/views/view.h" |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 106 std::unique_ptr<views::View> extra_view = CreateExtraView(); | 107 std::unique_ptr<views::View> extra_view = CreateExtraView(); |
| 107 if (extra_view) | 108 if (extra_view) |
| 108 layout->AddView(extra_view.release()); | 109 layout->AddView(extra_view.release()); |
| 109 | 110 |
| 110 return std::move(row); | 111 return std::move(row); |
| 111 } | 112 } |
| 112 | 113 |
| 113 void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender, | 114 void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender, |
| 114 const ui::Event& event) { | 115 const ui::Event& event) { |
| 115 if (CanBeSelected()) { | 116 if (CanBeSelected()) { |
| 116 list()->SelectItem(this); | 117 list()->SelectItem(this, /*go_back=*/true); |
|
Mathieu
2017/03/21 13:56:59
Do you think we could do
if (CanBeSelected()) {
anthonyvd
2017/03/21 14:56:06
I changed the code to call GoBack in subclasses im
| |
| 117 } else { | 118 } else { |
| 118 PerformSelectionFallback(); | 119 PerformSelectionFallback(); |
| 119 } | 120 } |
| 120 } | 121 } |
| 121 | 122 |
| 122 PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {} | 123 PaymentRequestItemList::PaymentRequestItemList(PaymentRequestDialogView* dialog) |
| 124 : selected_item_(nullptr), dialog_(dialog) {} | |
| 123 | 125 |
| 124 PaymentRequestItemList::~PaymentRequestItemList() {} | 126 PaymentRequestItemList::~PaymentRequestItemList() {} |
| 125 | 127 |
| 126 void PaymentRequestItemList::AddItem( | 128 void PaymentRequestItemList::AddItem( |
| 127 std::unique_ptr<PaymentRequestItemList::Item> item) { | 129 std::unique_ptr<PaymentRequestItemList::Item> item) { |
| 128 DCHECK_EQ(this, item->list()); | 130 DCHECK_EQ(this, item->list()); |
| 129 items_.push_back(std::move(item)); | 131 items_.push_back(std::move(item)); |
| 130 if (items_.back()->selected()) | 132 if (items_.back()->selected()) |
| 131 SelectItem(items_.back().get()); | 133 SelectItem(items_.back().get(), /*go_back=*/false); |
| 132 } | 134 } |
| 133 | 135 |
| 134 std::unique_ptr<views::View> PaymentRequestItemList::CreateListView() { | 136 std::unique_ptr<views::View> PaymentRequestItemList::CreateListView() { |
| 135 std::unique_ptr<views::View> content_view = base::MakeUnique<views::View>(); | 137 std::unique_ptr<views::View> content_view = base::MakeUnique<views::View>(); |
| 136 | 138 |
| 137 views::BoxLayout* layout = new views::BoxLayout( | 139 views::BoxLayout* layout = new views::BoxLayout( |
| 138 views::BoxLayout::kVertical, 0, kPaymentRequestRowVerticalInsets, 0); | 140 views::BoxLayout::kVertical, 0, kPaymentRequestRowVerticalInsets, 0); |
| 139 content_view->SetLayoutManager(layout); | 141 content_view->SetLayoutManager(layout); |
| 140 | 142 |
| 141 for (auto& item : items_) { | 143 for (auto& item : items_) { |
| 142 content_view->AddChildView(item->GetItemView()); | 144 content_view->AddChildView(item->GetItemView()); |
| 143 } | 145 } |
| 144 | 146 |
| 145 return content_view; | 147 return content_view; |
| 146 } | 148 } |
| 147 | 149 |
| 148 void PaymentRequestItemList::SelectItem(PaymentRequestItemList::Item* item) { | 150 void PaymentRequestItemList::SelectItem(PaymentRequestItemList::Item* item, |
| 151 bool go_back) { | |
| 149 DCHECK_EQ(this, item->list()); | 152 DCHECK_EQ(this, item->list()); |
| 150 if (selected_item_ == item) | 153 if (selected_item_ == item) |
| 151 return; | 154 return; |
| 152 | 155 |
| 153 UnselectSelectedItem(); | 156 UnselectSelectedItem(); |
| 154 | 157 |
| 155 selected_item_ = item; | 158 selected_item_ = item; |
| 156 item->SetSelected(true); | 159 item->SetSelected(true); |
| 160 if (go_back) | |
| 161 dialog_->GoBack(); | |
| 157 } | 162 } |
| 158 | 163 |
| 159 void PaymentRequestItemList::UnselectSelectedItem() { | 164 void PaymentRequestItemList::UnselectSelectedItem() { |
| 160 // It's possible that no item is currently selected, either during list | 165 // It's possible that no item is currently selected, either during list |
| 161 // creation or in the middle of the selection operation when the previously | 166 // creation or in the middle of the selection operation when the previously |
| 162 // selected item has been deselected but the new one isn't selected yet. | 167 // selected item has been deselected but the new one isn't selected yet. |
| 163 if (selected_item_) | 168 if (selected_item_) |
| 164 selected_item_->SetSelected(false); | 169 selected_item_->SetSelected(false); |
| 165 | 170 |
| 166 selected_item_ = nullptr; | 171 selected_item_ = nullptr; |
| 167 } | 172 } |
| 168 | 173 |
| 169 } // namespace payments | 174 } // namespace payments |
| OLD | NEW |