Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Side by Side Diff: chrome/browser/ui/views/payments/payment_request_item_list.cc

Issue 2759253002: [Web Payments] Implement item selection in lists. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698