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

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

Issue 2872623002: [Web Payments] Add "pencil" edit button to lists. (Closed)
Patch Set: Address comments. Created 3 years, 7 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_ids.h" 7 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h"
8 #include "chrome/browser/ui/views/payments/payment_request_row_view.h" 8 #include "chrome/browser/ui/views/payments/payment_request_row_view.h"
9 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" 9 #include "chrome/browser/ui/views/payments/payment_request_views_util.h"
10 #include "components/payments/content/payment_request_state.h" 10 #include "components/payments/content/payment_request_state.h"
11 #include "ui/gfx/paint_vector_icon.h" 11 #include "ui/gfx/paint_vector_icon.h"
12 #include "ui/vector_icons/vector_icons.h"
13 #include "ui/views/controls/button/image_button.h"
14 #include "ui/views/controls/button/image_button_factory.h"
12 #include "ui/views/controls/image_view.h" 15 #include "ui/views/controls/image_view.h"
13 #include "ui/views/layout/box_layout.h" 16 #include "ui/views/layout/box_layout.h"
14 #include "ui/views/layout/grid_layout.h" 17 #include "ui/views/layout/grid_layout.h"
15 #include "ui/views/vector_icons.h" 18 #include "ui/views/vector_icons.h"
16 #include "ui/views/view.h" 19 #include "ui/views/view.h"
17 20
18 namespace payments { 21 namespace payments {
19 22
20 namespace { 23 namespace {
21 24
22 const SkColor kCheckmarkColor = 0xFF609265; 25 const SkColor kCheckmarkColor = 0xFF609265;
23 26
24 } // namespace 27 } // namespace
25 28
26 PaymentRequestItemList::Item::Item(PaymentRequestSpec* spec, 29 PaymentRequestItemList::Item::Item(PaymentRequestSpec* spec,
27 PaymentRequestState* state, 30 PaymentRequestState* state,
28 PaymentRequestItemList* list, 31 PaymentRequestItemList* list,
29 bool selected) 32 bool selected,
30 : spec_(spec), state_(state), list_(list), selected_(selected) {} 33 bool show_edit_button)
34 : spec_(spec),
35 state_(state),
36 list_(list),
37 selected_(selected),
38 show_edit_button_(show_edit_button) {}
31 39
32 PaymentRequestItemList::Item::~Item() {} 40 PaymentRequestItemList::Item::~Item() {}
33 41
34 views::View* PaymentRequestItemList::Item::GetItemView() { 42 views::View* PaymentRequestItemList::Item::GetItemView() {
35 if (!item_view_) { 43 if (!item_view_) {
36 item_view_ = CreateItemView(); 44 item_view_ = CreateItemView();
37 item_view_->set_owned_by_client(); 45 item_view_->set_owned_by_client();
38 } 46 }
39 47
40 return item_view_.get(); 48 return item_view_.get();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 views::ColumnSet* columns = layout->AddColumnSet(0); 95 views::ColumnSet* columns = layout->AddColumnSet(0);
88 columns->AddColumn(views::GridLayout::FILL, views::GridLayout::LEADING, 1, 96 columns->AddColumn(views::GridLayout::FILL, views::GridLayout::LEADING, 1,
89 views::GridLayout::USE_PREF, 0, 0); 97 views::GridLayout::USE_PREF, 0, 0);
90 98
91 columns->AddPaddingColumn(1, 0); 99 columns->AddPaddingColumn(1, 0);
92 100
93 // Add a column for the checkmark shown next to the selected profile. 101 // Add a column for the checkmark shown next to the selected profile.
94 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0, 102 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
95 views::GridLayout::USE_PREF, 0, 0); 103 views::GridLayout::USE_PREF, 0, 0);
96 104
97 // Add a column for the extra_view, which comes after the checkmark. 105 constexpr int kExtraViewSpacing = 10;
mathp 2017/05/08 14:50:28 Nit: I would add a comment such as // This is th
anthonyvd 2017/05/08 15:02:10 Done.
98 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0, 106 std::unique_ptr<views::View> extra_view = CreateExtraView();
99 views::GridLayout::USE_PREF, 0, 0); 107 if (extra_view) {
108 columns->AddPaddingColumn(0, kExtraViewSpacing);
109 // Add a column for the extra_view, which comes after the checkmark.
110 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
111 0, views::GridLayout::USE_PREF, 0, 0);
112 }
113
114 if (show_edit_button_) {
115 edit_button_.reset(views::CreateVectorImageButton(this));
116 edit_button_->set_owned_by_client();
117 views::SetImageFromVectorIcon(edit_button_.get(), ui::kEditPencilIcon);
118 constexpr int kEditPencilIcon = 16;
119 edit_button_->SetSize(gfx::Size(kEditPencilIcon, kEditPencilIcon));
120 edit_button_->SetFocusBehavior(views::View::FocusBehavior::ALWAYS);
121 edit_button_->set_id(static_cast<int>(DialogViewID::EDIT_ITEM_BUTTON));
122
123 columns->AddPaddingColumn(0, kExtraViewSpacing);
124 // Add a column for the edit_button if it exists.
125 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
126 0, views::GridLayout::USE_PREF, 0, 0);
127 }
100 128
101 layout->StartRow(0, 0); 129 layout->StartRow(0, 0);
102 content->set_can_process_events_within_subtree(false); 130 content->set_can_process_events_within_subtree(false);
103 layout->AddView(content.release()); 131 layout->AddView(content.release());
104 132
105 checkmark_ = CreateCheckmark(selected()); 133 checkmark_ = CreateCheckmark(selected());
106 layout->AddView(checkmark_.get()); 134 layout->AddView(checkmark_.get());
107 135
108 std::unique_ptr<views::View> extra_view = CreateExtraView();
109 if (extra_view) 136 if (extra_view)
110 layout->AddView(extra_view.release()); 137 layout->AddView(extra_view.release());
111 138
139 if (edit_button_)
140 layout->AddView(edit_button_.get());
141
112 return std::move(row); 142 return std::move(row);
113 } 143 }
114 144
115 void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender, 145 void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender,
116 const ui::Event& event) { 146 const ui::Event& event) {
117 if (CanBeSelected()) { 147 if (sender == edit_button_.get()) {
148 EditButtonPressed();
149 } else if (CanBeSelected()) {
118 list()->SelectItem(this); 150 list()->SelectItem(this);
119 } else { 151 } else {
120 PerformSelectionFallback(); 152 PerformSelectionFallback();
121 } 153 }
122 } 154 }
123 155
124 PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {} 156 PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {}
125 157
126 PaymentRequestItemList::~PaymentRequestItemList() {} 158 PaymentRequestItemList::~PaymentRequestItemList() {}
127 159
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 // It's possible that no item is currently selected, either during list 197 // It's possible that no item is currently selected, either during list
166 // creation or in the middle of the selection operation when the previously 198 // creation or in the middle of the selection operation when the previously
167 // selected item has been deselected but the new one isn't selected yet. 199 // selected item has been deselected but the new one isn't selected yet.
168 if (selected_item_) 200 if (selected_item_)
169 selected_item_->SetSelected(/*selected=*/false, /*notify=*/true); 201 selected_item_->SetSelected(/*selected=*/false, /*notify=*/true);
170 202
171 selected_item_ = nullptr; 203 selected_item_ = nullptr;
172 } 204 }
173 205
174 } // namespace payments 206 } // namespace payments
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698