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

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

Issue 2709093006: Adding new shipping address editor view to payment flow. (Closed)
Patch Set: Bot failure fix 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/profile_list_view_controller.h" 5 #include "chrome/browser/ui/views/payments/profile_list_view_controller.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.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"
11 #include "chrome/grit/generated_resources.h"
10 #include "components/payments/content/payment_request_spec.h" 12 #include "components/payments/content/payment_request_spec.h"
11 #include "components/payments/content/payment_request_state.h" 13 #include "components/payments/content/payment_request_state.h"
12 #include "components/strings/grit/components_strings.h" 14 #include "components/strings/grit/components_strings.h"
13 #include "ui/base/l10n/l10n_util.h" 15 #include "ui/base/l10n/l10n_util.h"
16 #include "ui/views/controls/button/label_button.h"
17 #include "ui/views/controls/button/md_text_button.h"
18 #include "ui/views/controls/image_view.h"
19 #include "ui/views/layout/box_layout.h"
20 #include "ui/views/layout/grid_layout.h"
14 21
15 namespace payments { 22 namespace payments {
16 23
17 namespace { 24 namespace {
18 25
26 constexpr int kFirstTagValue = static_cast<int>(
27 payments::PaymentRequestCommonTags::PAYMENT_REQUEST_COMMON_TAG_MAX);
28
29 enum class PaymentMethodViewControllerTags : int {
30 // The tag for the button that triggers the "add address" flow. Starts at
31 // |kFirstTagValue| not to conflict with tags common to all views.
32 ADD_SHIPPING_ADDRESS_BUTTON = kFirstTagValue,
33 ADD_CONTACT_BUTTON,
34 };
35
19 class ProfileItem : public PaymentRequestItemList::Item { 36 class ProfileItem : public PaymentRequestItemList::Item {
20 public: 37 public:
21 // Constructs an object owned by |parent_list|, representing one element in 38 // Constructs an object owned by |parent_list|, representing one element in
22 // the list. |spec| and |state| are the PaymentRequestSpec/State objects that 39 // the list. |spec| and |state| are the PaymentRequestSpec/State objects that
23 // are represented by the current instance of the dialog. |parent_view| points 40 // are represented by the current instance of the dialog. |parent_view| points
24 // to the controller which owns |parent_list|. |profile| is the 41 // to the controller which owns |parent_list|. |profile| is the
25 // AutofillProfile that this specific list item represents. It's a cached 42 // AutofillProfile that this specific list item represents. It's a cached
26 // profile owned by |state|. 43 // profile owned by |state|.
27 ProfileItem(autofill::AutofillProfile* profile, 44 ProfileItem(autofill::AutofillProfile* profile,
28 PaymentRequestSpec* spec, 45 PaymentRequestSpec* spec,
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 } 115 }
99 116
100 std::vector<autofill::AutofillProfile*> GetProfiles() override { 117 std::vector<autofill::AutofillProfile*> GetProfiles() override {
101 return state()->shipping_profiles(); 118 return state()->shipping_profiles();
102 } 119 }
103 120
104 base::string16 GetHeaderString() override { 121 base::string16 GetHeaderString() override {
105 return GetShippingAddressSectionString(spec()->options().shipping_type); 122 return GetShippingAddressSectionString(spec()->options().shipping_type);
106 } 123 }
107 124
125 int GetSecondaryButtonTextId() override {
126 return IDS_AUTOFILL_ADD_ADDRESS_CAPTION;
127 }
128
129 int GetSecondaryButtonTag() override {
130 return static_cast<int>(
131 PaymentMethodViewControllerTags::ADD_SHIPPING_ADDRESS_BUTTON);
132 }
133
134 int GetSecondaryButtonViewId() override {
135 return static_cast<int>(DialogViewID::PAYMENT_METHOD_ADD_SHIPPING_BUTTON);
136 }
137
138 void OnSecondaryButtonPressed() override {
139 dialog()->ShowShippingAddressEditor();
140 }
141
108 private: 142 private:
109 DISALLOW_COPY_AND_ASSIGN(ShippingProfileViewController); 143 DISALLOW_COPY_AND_ASSIGN(ShippingProfileViewController);
110 }; 144 };
111 145
112 class ContactProfileViewController : public ProfileListViewController { 146 class ContactProfileViewController : public ProfileListViewController {
113 public: 147 public:
114 ContactProfileViewController(PaymentRequestSpec* spec, 148 ContactProfileViewController(PaymentRequestSpec* spec,
115 PaymentRequestState* state, 149 PaymentRequestState* state,
116 PaymentRequestDialogView* dialog) 150 PaymentRequestDialogView* dialog)
117 : ProfileListViewController(spec, state, dialog) {} 151 : ProfileListViewController(spec, state, dialog) {}
(...skipping 19 matching lines...) Expand all
137 171
138 std::vector<autofill::AutofillProfile*> GetProfiles() override { 172 std::vector<autofill::AutofillProfile*> GetProfiles() override {
139 return state()->contact_profiles(); 173 return state()->contact_profiles();
140 } 174 }
141 175
142 base::string16 GetHeaderString() override { 176 base::string16 GetHeaderString() override {
143 return l10n_util::GetStringUTF16( 177 return l10n_util::GetStringUTF16(
144 IDS_PAYMENT_REQUEST_CONTACT_INFO_SECTION_NAME); 178 IDS_PAYMENT_REQUEST_CONTACT_INFO_SECTION_NAME);
145 } 179 }
146 180
181 int GetSecondaryButtonTextId() override {
182 return IDS_AUTOFILL_ADD_CONTACT_CAPTION;
183 }
184
185 int GetSecondaryButtonTag() override {
186 return static_cast<int>(
187 PaymentMethodViewControllerTags::ADD_CONTACT_BUTTON);
188 }
189
190 int GetSecondaryButtonViewId() override {
191 return static_cast<int>(DialogViewID::PAYMENT_METHOD_ADD_CONTACT_BUTTON);
192 }
193
194 void OnSecondaryButtonPressed() override {
195 // TODO(crbug.com/704263): Add Contact Editor.
196 }
197
147 private: 198 private:
148 DISALLOW_COPY_AND_ASSIGN(ContactProfileViewController); 199 DISALLOW_COPY_AND_ASSIGN(ContactProfileViewController);
149 }; 200 };
150 201
151 } // namespace 202 } // namespace
152 203
153 // static 204 // static
154 std::unique_ptr<ProfileListViewController> 205 std::unique_ptr<ProfileListViewController>
155 ProfileListViewController::GetShippingProfileViewController( 206 ProfileListViewController::GetShippingProfileViewController(
156 PaymentRequestSpec* spec, 207 PaymentRequestSpec* spec,
(...skipping 29 matching lines...) Expand all
186 &list_, this, dialog(), 237 &list_, this, dialog(),
187 profile == selected_profile)); 238 profile == selected_profile));
188 } 239 }
189 240
190 return CreatePaymentView( 241 return CreatePaymentView(
191 CreateSheetHeaderView( 242 CreateSheetHeaderView(
192 /* show_back_arrow = */ true, GetHeaderString(), this), 243 /* show_back_arrow = */ true, GetHeaderString(), this),
193 list_.CreateListView()); 244 list_.CreateListView());
194 } 245 }
195 246
247 std::unique_ptr<views::View>
248 ProfileListViewController::CreateExtraFooterView() {
249 std::unique_ptr<views::View> extra_view = base::MakeUnique<views::View>();
250
251 extra_view->SetLayoutManager(new views::BoxLayout(
252 views::BoxLayout::kHorizontal, 0, 0, kPaymentRequestButtonSpacing));
253
254 views::LabelButton* button = views::MdTextButton::CreateSecondaryUiButton(
255 this, l10n_util::GetStringUTF16(GetSecondaryButtonTextId()));
256 button->set_tag(GetSecondaryButtonTag());
257 button->set_id(GetSecondaryButtonViewId());
258 extra_view->AddChildView(button);
259
260 return extra_view;
261 }
262
263 void ProfileListViewController::ButtonPressed(views::Button* sender,
264 const ui::Event& event) {
265 if (sender->tag() == GetSecondaryButtonTag())
266 OnSecondaryButtonPressed();
267 else
268 PaymentRequestSheetController::ButtonPressed(sender, event);
269 }
270
196 } // namespace payments 271 } // namespace payments
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698