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

Side by Side Diff: ios/chrome/browser/payments/payment_request_view_controller.mm

Issue 2821043002: [Payment Request] Adds a secondary text label to PaymentsTextCell (Closed)
Patch Set: Created 3 years, 8 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #import "ios/chrome/browser/payments/payment_request_view_controller.h" 5 #import "ios/chrome/browser/payments/payment_request_view_controller.h"
6 6
7 #include "base/mac/foundation_util.h" 7 #include "base/mac/foundation_util.h"
8 8
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/strings/sys_string_conversions.h" 10 #include "base/strings/sys_string_conversions.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "components/autofill/core/browser/autofill_data_util.h" 12 #include "components/autofill/core/browser/autofill_data_util.h"
13 #include "components/autofill/core/browser/autofill_profile.h" 13 #include "components/autofill/core/browser/autofill_profile.h"
14 #include "components/autofill/core/browser/credit_card.h" 14 #include "components/autofill/core/browser/credit_card.h"
15 #include "components/autofill/core/browser/field_types.h" 15 #include "components/autofill/core/browser/field_types.h"
16 #include "components/autofill/core/browser/personal_data_manager.h" 16 #include "components/autofill/core/browser/personal_data_manager.h"
17 #include "components/payments/core/currency_formatter.h" 17 #include "components/payments/core/currency_formatter.h"
18 #include "components/payments/core/strings_util.h" 18 #include "components/payments/core/strings_util.h"
19 #include "components/strings/grit/components_strings.h" 19 #include "components/strings/grit/components_strings.h"
20 #import "ios/chrome/browser/payments/cells/autofill_profile_item.h" 20 #import "ios/chrome/browser/payments/cells/autofill_profile_item.h"
21 #import "ios/chrome/browser/payments/cells/page_info_item.h" 21 #import "ios/chrome/browser/payments/cells/page_info_item.h"
22 #import "ios/chrome/browser/payments/cells/payment_method_item.h" 22 #import "ios/chrome/browser/payments/cells/payment_method_item.h"
23 #import "ios/chrome/browser/payments/cells/payments_text_item.h"
23 #import "ios/chrome/browser/payments/cells/price_item.h" 24 #import "ios/chrome/browser/payments/cells/price_item.h"
24 #include "ios/chrome/browser/payments/payment_request.h" 25 #include "ios/chrome/browser/payments/payment_request.h"
25 #import "ios/chrome/browser/payments/payment_request_util.h" 26 #import "ios/chrome/browser/payments/payment_request_util.h"
26 #import "ios/chrome/browser/payments/payment_request_view_controller_actions.h" 27 #import "ios/chrome/browser/payments/payment_request_view_controller_actions.h"
27 #import "ios/chrome/browser/ui/autofill/cells/status_item.h" 28 #import "ios/chrome/browser/ui/autofill/cells/status_item.h"
28 #import "ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrom e.h" 29 #import "ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrom e.h"
29 #import "ios/chrome/browser/ui/collection_view/cells/collection_view_detail_item .h" 30 #import "ios/chrome/browser/ui/collection_view/cells/collection_view_detail_item .h"
30 #import "ios/chrome/browser/ui/collection_view/cells/collection_view_footer_item .h" 31 #import "ios/chrome/browser/ui/collection_view/cells/collection_view_footer_item .h"
31 #import "ios/chrome/browser/ui/collection_view/cells/collection_view_item.h" 32 #import "ios/chrome/browser/ui/collection_view/cells/collection_view_item.h"
32 #import "ios/chrome/browser/ui/collection_view/cells/collection_view_text_item.h "
33 #import "ios/chrome/browser/ui/collection_view/collection_view_model.h" 33 #import "ios/chrome/browser/ui/collection_view/collection_view_model.h"
34 #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" 34 #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h"
35 #include "ios/chrome/browser/ui/rtl_geometry.h" 35 #include "ios/chrome/browser/ui/rtl_geometry.h"
36 #include "ios/chrome/browser/ui/uikit_ui_util.h" 36 #include "ios/chrome/browser/ui/uikit_ui_util.h"
37 #include "ios/chrome/grit/ios_strings.h" 37 #include "ios/chrome/grit/ios_strings.h"
38 #import "ios/third_party/material_components_ios/src/components/Buttons/src/Mate rialButtons.h" 38 #import "ios/third_party/material_components_ios/src/components/Buttons/src/Mate rialButtons.h"
39 #import "ios/third_party/material_components_ios/src/components/CollectionCells/ src/MaterialCollectionCells.h" 39 #import "ios/third_party/material_components_ios/src/components/CollectionCells/ src/MaterialCollectionCells.h"
40 #import "ios/third_party/material_components_ios/src/components/Typography/src/M aterialTypography.h" 40 #import "ios/third_party/material_components_ios/src/components/Typography/src/M aterialTypography.h"
41 #import "ios/third_party/material_roboto_font_loader_ios/src/src/MaterialRobotoF ontLoader.h" 41 #import "ios/third_party/material_roboto_font_loader_ios/src/src/MaterialRobotoF ontLoader.h"
42 #include "ios/web/public/payments/payment_request.h" 42 #include "ios/web/public/payments/payment_request.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 UIBarButtonItem* _cancelButton; 106 UIBarButtonItem* _cancelButton;
107 MDCButton* _payButton; 107 MDCButton* _payButton;
108 108
109 // The PaymentRequest object having a copy of web::PaymentRequest as provided 109 // The PaymentRequest object having a copy of web::PaymentRequest as provided
110 // by the page invoking the Payment Request API. This is a weak pointer and 110 // by the page invoking the Payment Request API. This is a weak pointer and
111 // should outlive this class. 111 // should outlive this class.
112 PaymentRequest* _paymentRequest; 112 PaymentRequest* _paymentRequest;
113 113
114 __weak PriceItem* _paymentSummaryItem; 114 __weak PriceItem* _paymentSummaryItem;
115 __weak AutofillProfileItem* _selectedShippingAddressItem; 115 __weak AutofillProfileItem* _selectedShippingAddressItem;
116 __weak CollectionViewTextItem* _selectedShippingOptionItem; 116 __weak PaymentsTextItem* _selectedShippingOptionItem;
117 __weak PaymentMethodItem* _selectedPaymentMethodItem; 117 __weak PaymentMethodItem* _selectedPaymentMethodItem;
118 __weak AutofillProfileItem* _selectedContactInfoItem; 118 __weak AutofillProfileItem* _selectedContactInfoItem;
119 } 119 }
120 120
121 @end 121 @end
122 122
123 @implementation PaymentRequestViewController 123 @implementation PaymentRequestViewController
124 124
125 @synthesize pageFavicon = _pageFavicon; 125 @synthesize pageFavicon = _pageFavicon;
126 @synthesize pageTitle = _pageTitle; 126 @synthesize pageTitle = _pageTitle;
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 paymentSummaryItem.accessoryType = 235 paymentSummaryItem.accessoryType =
236 MDCCollectionViewCellAccessoryDisclosureIndicator; 236 MDCCollectionViewCellAccessoryDisclosureIndicator;
237 paymentSummaryItem.accessibilityTraits |= UIAccessibilityTraitButton; 237 paymentSummaryItem.accessibilityTraits |= UIAccessibilityTraitButton;
238 } 238 }
239 [model addItem:paymentSummaryItem 239 [model addItem:paymentSummaryItem
240 toSectionWithIdentifier:SectionIdentifierSummary]; 240 toSectionWithIdentifier:SectionIdentifierSummary];
241 241
242 // Shipping section. 242 // Shipping section.
243 [model addSectionWithIdentifier:SectionIdentifierShipping]; 243 [model addSectionWithIdentifier:SectionIdentifierShipping];
244 244
245 CollectionViewTextItem* shippingTitle = 245 PaymentsTextItem* shippingTitle =
246 [[CollectionViewTextItem alloc] initWithType:ItemTypeShippingTitle]; 246 [[PaymentsTextItem alloc] initWithType:ItemTypeShippingTitle];
247 shippingTitle.text = 247 shippingTitle.text =
248 GetShippingSectionTitle(_paymentRequest->shipping_type()); 248 GetShippingSectionTitle(_paymentRequest->shipping_type());
249 [model setHeader:shippingTitle 249 [model setHeader:shippingTitle
250 forSectionWithIdentifier:SectionIdentifierShipping]; 250 forSectionWithIdentifier:SectionIdentifierShipping];
251 251
252 CollectionViewItem* shippingAddressItem = nil; 252 CollectionViewItem* shippingAddressItem = nil;
253 if (_paymentRequest->selected_shipping_profile()) { 253 if (_paymentRequest->selected_shipping_profile()) {
254 AutofillProfileItem* selectedShippingAddressItem = 254 AutofillProfileItem* selectedShippingAddressItem =
255 [[AutofillProfileItem alloc] initWithType:ItemTypeShippingAddress]; 255 [[AutofillProfileItem alloc] initWithType:ItemTypeShippingAddress];
256 shippingAddressItem = selectedShippingAddressItem; 256 shippingAddressItem = selectedShippingAddressItem;
(...skipping 12 matching lines...) Expand all
269 GetShippingAddressSectionString(_paymentRequest->shipping_type())); 269 GetShippingAddressSectionString(_paymentRequest->shipping_type()));
270 addAddressItem.detailText = [l10n_util::GetNSString(IDS_ADD) 270 addAddressItem.detailText = [l10n_util::GetNSString(IDS_ADD)
271 uppercaseStringWithLocale:[NSLocale currentLocale]]; 271 uppercaseStringWithLocale:[NSLocale currentLocale]];
272 addAddressItem.accessibilityTraits |= UIAccessibilityTraitButton; 272 addAddressItem.accessibilityTraits |= UIAccessibilityTraitButton;
273 } 273 }
274 [model addItem:shippingAddressItem 274 [model addItem:shippingAddressItem
275 toSectionWithIdentifier:SectionIdentifierShipping]; 275 toSectionWithIdentifier:SectionIdentifierShipping];
276 276
277 CollectionViewItem* shippingOptionItem = nil; 277 CollectionViewItem* shippingOptionItem = nil;
278 if (_paymentRequest->selected_shipping_option()) { 278 if (_paymentRequest->selected_shipping_option()) {
279 CollectionViewTextItem* selectedShippingOptionItem = 279 PaymentsTextItem* selectedShippingOptionItem =
280 [[CollectionViewTextItem alloc] initWithType:ItemTypeShippingOption]; 280 [[PaymentsTextItem alloc] initWithType:ItemTypeShippingOption];
281 selectedShippingOptionItem.textFont = [MDCTypography body2Font];
282 selectedShippingOptionItem.textColor = [[MDCPalette greyPalette] tint900];
283 selectedShippingOptionItem.detailTextFont = [MDCTypography body1Font];
284 selectedShippingOptionItem.detailTextColor =
285 [[MDCPalette greyPalette] tint900];
286 shippingOptionItem = selectedShippingOptionItem; 281 shippingOptionItem = selectedShippingOptionItem;
287 282
288 _selectedShippingOptionItem = selectedShippingOptionItem; 283 _selectedShippingOptionItem = selectedShippingOptionItem;
289 [self fillShippingOptionItem:selectedShippingOptionItem 284 [self fillShippingOptionItem:selectedShippingOptionItem
290 withOption:_paymentRequest->selected_shipping_option()]; 285 withOption:_paymentRequest->selected_shipping_option()];
291 selectedShippingOptionItem.accessoryType = 286 selectedShippingOptionItem.accessoryType =
292 MDCCollectionViewCellAccessoryDisclosureIndicator; 287 MDCCollectionViewCellAccessoryDisclosureIndicator;
293 selectedShippingOptionItem.accessibilityTraits |= 288 selectedShippingOptionItem.accessibilityTraits |=
294 UIAccessibilityTraitButton; 289 UIAccessibilityTraitButton;
295 } else { 290 } else {
296 CollectionViewDetailItem* selectShippingOptionItem = 291 CollectionViewDetailItem* selectShippingOptionItem =
297 [[CollectionViewDetailItem alloc] 292 [[CollectionViewDetailItem alloc]
298 initWithType:ItemTypeSelectShippingOption]; 293 initWithType:ItemTypeSelectShippingOption];
299 shippingOptionItem = selectShippingOptionItem; 294 shippingOptionItem = selectShippingOptionItem;
300 selectShippingOptionItem.text = base::SysUTF16ToNSString( 295 selectShippingOptionItem.text = base::SysUTF16ToNSString(
301 GetShippingOptionSectionString(_paymentRequest->shipping_type())); 296 GetShippingOptionSectionString(_paymentRequest->shipping_type()));
302 selectShippingOptionItem.accessoryType = 297 selectShippingOptionItem.accessoryType =
303 MDCCollectionViewCellAccessoryDisclosureIndicator; 298 MDCCollectionViewCellAccessoryDisclosureIndicator;
304 selectShippingOptionItem.accessibilityTraits |= UIAccessibilityTraitButton; 299 selectShippingOptionItem.accessibilityTraits |= UIAccessibilityTraitButton;
305 } 300 }
306 [model addItem:shippingOptionItem 301 [model addItem:shippingOptionItem
307 toSectionWithIdentifier:SectionIdentifierShipping]; 302 toSectionWithIdentifier:SectionIdentifierShipping];
308 303
309 // Payment method section. 304 // Payment method section.
310 [model addSectionWithIdentifier:SectionIdentifierPayment]; 305 [model addSectionWithIdentifier:SectionIdentifierPayment];
311 306
312 CollectionViewItem* paymentMethodItem = nil; 307 CollectionViewItem* paymentMethodItem = nil;
313 if (_paymentRequest->selected_credit_card()) { 308 if (_paymentRequest->selected_credit_card()) {
314 CollectionViewTextItem* paymentTitle = 309 PaymentsTextItem* paymentTitle =
315 [[CollectionViewTextItem alloc] initWithType:ItemTypePaymentTitle]; 310 [[PaymentsTextItem alloc] initWithType:ItemTypePaymentTitle];
316 paymentTitle.text = 311 paymentTitle.text =
317 l10n_util::GetNSString(IDS_PAYMENT_REQUEST_PAYMENT_METHOD_SECTION_NAME); 312 l10n_util::GetNSString(IDS_PAYMENT_REQUEST_PAYMENT_METHOD_SECTION_NAME);
318 [model setHeader:paymentTitle 313 [model setHeader:paymentTitle
319 forSectionWithIdentifier:SectionIdentifierPayment]; 314 forSectionWithIdentifier:SectionIdentifierPayment];
320 315
321 PaymentMethodItem* selectedPaymentMethodItem = 316 PaymentMethodItem* selectedPaymentMethodItem =
322 [[PaymentMethodItem alloc] initWithType:ItemTypePaymentMethod]; 317 [[PaymentMethodItem alloc] initWithType:ItemTypePaymentMethod];
323 paymentMethodItem = selectedPaymentMethodItem; 318 paymentMethodItem = selectedPaymentMethodItem;
324 _selectedPaymentMethodItem = selectedPaymentMethodItem; 319 _selectedPaymentMethodItem = selectedPaymentMethodItem;
325 [self fillPaymentMethodItem:selectedPaymentMethodItem 320 [self fillPaymentMethodItem:selectedPaymentMethodItem
(...skipping 12 matching lines...) Expand all
338 addPaymentMethodItem.accessibilityTraits |= UIAccessibilityTraitButton; 333 addPaymentMethodItem.accessibilityTraits |= UIAccessibilityTraitButton;
339 } 334 }
340 [model addItem:paymentMethodItem 335 [model addItem:paymentMethodItem
341 toSectionWithIdentifier:SectionIdentifierPayment]; 336 toSectionWithIdentifier:SectionIdentifierPayment];
342 337
343 // Contact Info section. 338 // Contact Info section.
344 [model addSectionWithIdentifier:SectionIdentifierContactInfo]; 339 [model addSectionWithIdentifier:SectionIdentifierContactInfo];
345 340
346 CollectionViewItem* contactInfoItem = nil; 341 CollectionViewItem* contactInfoItem = nil;
347 if (_paymentRequest->selected_contact_profile()) { 342 if (_paymentRequest->selected_contact_profile()) {
348 CollectionViewTextItem* contactInfoTitle = 343 PaymentsTextItem* contactInfoTitle =
349 [[CollectionViewTextItem alloc] initWithType:ItemTypeContactInfoTitle]; 344 [[PaymentsTextItem alloc] initWithType:ItemTypeContactInfoTitle];
350 contactInfoTitle.text = 345 contactInfoTitle.text =
351 l10n_util::GetNSString(IDS_PAYMENTS_CONTACT_DETAILS_LABEL); 346 l10n_util::GetNSString(IDS_PAYMENTS_CONTACT_DETAILS_LABEL);
352 [model setHeader:contactInfoTitle 347 [model setHeader:contactInfoTitle
353 forSectionWithIdentifier:SectionIdentifierContactInfo]; 348 forSectionWithIdentifier:SectionIdentifierContactInfo];
354 349
355 AutofillProfileItem* selectedContactInfoItem = 350 AutofillProfileItem* selectedContactInfoItem =
356 [[AutofillProfileItem alloc] initWithType:ItemTypeContactInfo]; 351 [[AutofillProfileItem alloc] initWithType:ItemTypeContactInfo];
357 contactInfoItem = selectedContactInfoItem; 352 contactInfoItem = selectedContactInfoItem;
358 _selectedContactInfoItem = selectedContactInfoItem; 353 _selectedContactInfoItem = selectedContactInfoItem;
359 [self fillContactInfoItem:selectedContactInfoItem 354 [self fillContactInfoItem:selectedContactInfoItem
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 } 459 }
465 460
466 - (void)fillShippingAddressItem:(AutofillProfileItem*)item 461 - (void)fillShippingAddressItem:(AutofillProfileItem*)item
467 withAutofillProfile:(autofill::AutofillProfile*)profile { 462 withAutofillProfile:(autofill::AutofillProfile*)profile {
468 DCHECK(profile); 463 DCHECK(profile);
469 item.name = GetNameLabelFromAutofillProfile(*profile); 464 item.name = GetNameLabelFromAutofillProfile(*profile);
470 item.address = GetShippingAddressLabelFromAutofillProfile(*profile); 465 item.address = GetShippingAddressLabelFromAutofillProfile(*profile);
471 item.phoneNumber = GetPhoneNumberLabelFromAutofillProfile(*profile); 466 item.phoneNumber = GetPhoneNumberLabelFromAutofillProfile(*profile);
472 } 467 }
473 468
474 - (void)fillShippingOptionItem:(CollectionViewTextItem*)item 469 - (void)fillShippingOptionItem:(PaymentsTextItem*)item
475 withOption:(web::PaymentShippingOption*)option { 470 withOption:(web::PaymentShippingOption*)option {
476 item.text = base::SysUTF16ToNSString(option->label); 471 item.text = base::SysUTF16ToNSString(option->label);
477 payments::CurrencyFormatter* currencyFormatter = 472 payments::CurrencyFormatter* currencyFormatter =
478 _paymentRequest->GetOrCreateCurrencyFormatter(); 473 _paymentRequest->GetOrCreateCurrencyFormatter();
479 item.detailText = SysUTF16ToNSString( 474 item.detailText = SysUTF16ToNSString(
480 currencyFormatter->Format(base::UTF16ToASCII(option->amount.value))); 475 currencyFormatter->Format(base::UTF16ToASCII(option->amount.value)));
481 } 476 }
482 477
483 - (void)fillPaymentMethodItem:(PaymentMethodItem*)item 478 - (void)fillPaymentMethodItem:(PaymentMethodItem*)item
484 withCreditCard:(autofill::CreditCard*)creditCard { 479 withCreditCard:(autofill::CreditCard*)creditCard {
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 624
630 - (BOOL)collectionView:(UICollectionView*)collectionView 625 - (BOOL)collectionView:(UICollectionView*)collectionView
631 shouldHideItemBackgroundAtIndexPath:(NSIndexPath*)indexPath { 626 shouldHideItemBackgroundAtIndexPath:(NSIndexPath*)indexPath {
632 // No background on the footer text item. 627 // No background on the footer text item.
633 NSInteger sectionIdentifier = 628 NSInteger sectionIdentifier =
634 [self.collectionViewModel sectionIdentifierForSection:indexPath.section]; 629 [self.collectionViewModel sectionIdentifierForSection:indexPath.section];
635 return sectionIdentifier == SectionIdentifierFooter ? YES : NO; 630 return sectionIdentifier == SectionIdentifierFooter ? YES : NO;
636 } 631 }
637 632
638 @end 633 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698