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

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: Rebase 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/color_utils.h"
11 #include "ui/gfx/paint_vector_icon.h" 12 #include "ui/gfx/paint_vector_icon.h"
13 #include "ui/vector_icons/vector_icons.h"
14 #include "ui/views/controls/button/button.h"
15 #include "ui/views/controls/button/image_button.h"
16 #include "ui/views/controls/button/image_button_factory.h"
12 #include "ui/views/controls/image_view.h" 17 #include "ui/views/controls/image_view.h"
13 #include "ui/views/layout/box_layout.h" 18 #include "ui/views/layout/box_layout.h"
14 #include "ui/views/layout/grid_layout.h" 19 #include "ui/views/layout/grid_layout.h"
15 #include "ui/views/vector_icons.h" 20 #include "ui/views/vector_icons.h"
16 #include "ui/views/view.h" 21 #include "ui/views/view.h"
17 22
18 namespace payments { 23 namespace payments {
19 24
20 namespace { 25 namespace {
21 26
22 const SkColor kCheckmarkColor = 0xFF609265; 27 const SkColor kCheckmarkColor = 0xFF609265;
23 28
24 } // namespace 29 } // namespace
25 30
26 PaymentRequestItemList::Item::Item(PaymentRequestSpec* spec, 31 PaymentRequestItemList::Item::Item(PaymentRequestSpec* spec,
27 PaymentRequestState* state, 32 PaymentRequestState* state,
28 PaymentRequestItemList* list, 33 PaymentRequestItemList* list,
29 bool selected) 34 bool selected,
30 : spec_(spec), state_(state), list_(list), selected_(selected) {} 35 bool show_edit_button)
36 : spec_(spec),
37 state_(state),
38 list_(list),
39 selected_(selected),
40 show_edit_button_(show_edit_button) {}
31 41
32 PaymentRequestItemList::Item::~Item() {} 42 PaymentRequestItemList::Item::~Item() {}
33 43
34 views::View* PaymentRequestItemList::Item::GetItemView() { 44 views::View* PaymentRequestItemList::Item::GetItemView() {
35 if (!item_view_) { 45 if (!item_view_) {
36 item_view_ = CreateItemView(); 46 item_view_ = CreateItemView();
37 item_view_->set_owned_by_client(); 47 item_view_->set_owned_by_client();
38 } 48 }
39 49
40 return item_view_.get(); 50 return item_view_.get();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 views::ColumnSet* columns = layout->AddColumnSet(0); 97 views::ColumnSet* columns = layout->AddColumnSet(0);
88 columns->AddColumn(views::GridLayout::FILL, views::GridLayout::LEADING, 1, 98 columns->AddColumn(views::GridLayout::FILL, views::GridLayout::LEADING, 1,
89 views::GridLayout::USE_PREF, 0, 0); 99 views::GridLayout::USE_PREF, 0, 0);
90 100
91 columns->AddPaddingColumn(1, 0); 101 columns->AddPaddingColumn(1, 0);
92 102
93 // Add a column for the checkmark shown next to the selected profile. 103 // Add a column for the checkmark shown next to the selected profile.
94 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0, 104 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
95 views::GridLayout::USE_PREF, 0, 0); 105 views::GridLayout::USE_PREF, 0, 0);
96 106
97 // Add a column for the extra_view, which comes after the checkmark. 107 // The space between the checkmark, extra view, and edit button.
98 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0, 108 constexpr int kExtraViewSpacing = 16;
99 views::GridLayout::USE_PREF, 0, 0); 109 std::unique_ptr<views::View> extra_view = CreateExtraView();
110 if (extra_view) {
111 columns->AddPaddingColumn(0, kExtraViewSpacing);
112 // Add a column for the extra_view, which comes after the checkmark.
113 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
114 0, views::GridLayout::USE_PREF, 0, 0);
115 }
116
117 constexpr int kEditIconSize = 16;
118 if (show_edit_button_) {
119 columns->AddPaddingColumn(0, kExtraViewSpacing);
120 // Add a column for the edit_button if it exists.
121 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
122 0, views::GridLayout::FIXED, kEditIconSize,
123 kEditIconSize);
124 }
100 125
101 layout->StartRow(0, 0); 126 layout->StartRow(0, 0);
102 content->set_can_process_events_within_subtree(false); 127 content->set_can_process_events_within_subtree(false);
103 layout->AddView(content.release()); 128 layout->AddView(content.release());
104 129
105 checkmark_ = CreateCheckmark(selected()); 130 checkmark_ = CreateCheckmark(selected());
106 layout->AddView(checkmark_.get()); 131 layout->AddView(checkmark_.get());
107 132
108 std::unique_ptr<views::View> extra_view = CreateExtraView();
109 if (extra_view) 133 if (extra_view)
110 layout->AddView(extra_view.release()); 134 layout->AddView(extra_view.release());
111 135
136 if (show_edit_button_) {
137 views::ImageButton* edit_button = views::CreateVectorImageButton(this);
138 const SkColor icon_color =
139 color_utils::DeriveDefaultIconColor(SK_ColorBLACK);
140 edit_button->SetImage(
141 views::Button::STATE_NORMAL,
142 gfx::CreateVectorIcon(ui::kEditIcon, kEditIconSize, icon_color));
143 edit_button->set_ink_drop_base_color(icon_color);
144 edit_button->SetFocusBehavior(views::View::FocusBehavior::ALWAYS);
145 edit_button->set_id(static_cast<int>(DialogViewID::EDIT_ITEM_BUTTON));
146 layout->AddView(edit_button);
147 }
148
112 return std::move(row); 149 return std::move(row);
113 } 150 }
114 151
115 void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender, 152 void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender,
116 const ui::Event& event) { 153 const ui::Event& event) {
117 if (CanBeSelected()) { 154 if (sender->id() == static_cast<int>(DialogViewID::EDIT_ITEM_BUTTON)) {
155 EditButtonPressed();
156 } else if (CanBeSelected()) {
118 list()->SelectItem(this); 157 list()->SelectItem(this);
119 } else { 158 } else {
120 PerformSelectionFallback(); 159 PerformSelectionFallback();
121 } 160 }
122 } 161 }
123 162
124 PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {} 163 PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {}
125 164
126 PaymentRequestItemList::~PaymentRequestItemList() {} 165 PaymentRequestItemList::~PaymentRequestItemList() {}
127 166
(...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 204 // 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 205 // 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. 206 // selected item has been deselected but the new one isn't selected yet.
168 if (selected_item_) 207 if (selected_item_)
169 selected_item_->SetSelected(/*selected=*/false, /*notify=*/true); 208 selected_item_->SetSelected(/*selected=*/false, /*notify=*/true);
170 209
171 selected_item_ = nullptr; 210 selected_item_ = nullptr;
172 } 211 }
173 212
174 } // namespace payments 213 } // namespace payments
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698