OLD | NEW |
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 #import "ios/showcase/payments/sc_payments_editor_coordinator.h" | 5 #import "ios/showcase/payments/sc_payments_editor_coordinator.h" |
6 | 6 |
7 #import "base/mac/foundation_util.h" | 7 #import "base/mac/foundation_util.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #import "ios/chrome/browser/ui/autofill/autofill_ui_type.h" | 9 #import "ios/chrome/browser/ui/autofill/autofill_ui_type.h" |
10 #import "ios/chrome/browser/ui/autofill/autofill_ui_type_util.h" | 10 #import "ios/chrome/browser/ui/autofill/autofill_ui_type_util.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 | 21 |
22 @interface SCPaymentsEditorCoordinator ()< | 22 @interface SCPaymentsEditorCoordinator ()< |
23 PaymentRequestEditViewControllerDataSource, | 23 PaymentRequestEditViewControllerDataSource, |
24 PaymentRequestEditViewControllerValidator> | 24 PaymentRequestEditViewControllerValidator> |
25 | 25 |
26 @property(nonatomic, strong) | 26 @property(nonatomic, strong) |
27 PaymentRequestEditViewController* paymentRequestEditViewController; | 27 PaymentRequestEditViewController* paymentRequestEditViewController; |
28 | 28 |
29 @property(nonatomic, strong) ProtocolAlerter* alerter; | 29 @property(nonatomic, strong) ProtocolAlerter* alerter; |
30 | 30 |
| 31 @property(nonatomic, strong) EditorField* province; |
| 32 |
31 @end | 33 @end |
32 | 34 |
33 @implementation SCPaymentsEditorCoordinator | 35 @implementation SCPaymentsEditorCoordinator |
34 | 36 |
35 @synthesize state = _state; | 37 @synthesize state = _state; |
36 @synthesize baseViewController = _baseViewController; | 38 @synthesize baseViewController = _baseViewController; |
37 @synthesize paymentRequestEditViewController = | 39 @synthesize paymentRequestEditViewController = |
38 _paymentRequestEditViewController; | 40 _paymentRequestEditViewController; |
39 @synthesize alerter = _alerter; | 41 @synthesize alerter = _alerter; |
| 42 @synthesize province = _province; |
40 | 43 |
41 - (void)start { | 44 - (void)start { |
42 self.alerter = [[ProtocolAlerter alloc] initWithProtocols:@[ | 45 self.alerter = [[ProtocolAlerter alloc] initWithProtocols:@[ |
43 @protocol(PaymentRequestEditViewControllerDelegate) | 46 @protocol(PaymentRequestEditViewControllerDelegate) |
44 ]]; | 47 ]]; |
45 self.alerter.baseViewController = self.baseViewController; | 48 self.alerter.baseViewController = self.baseViewController; |
46 | 49 |
47 self.paymentRequestEditViewController = | 50 self.paymentRequestEditViewController = |
48 [[PaymentRequestEditViewController alloc] | 51 [[PaymentRequestEditViewController alloc] |
49 initWithStyle:CollectionViewControllerStyleAppBar]; | 52 initWithStyle:CollectionViewControllerStyleAppBar]; |
50 [self.paymentRequestEditViewController setTitle:@"Add info"]; | 53 [self.paymentRequestEditViewController setTitle:@"Add info"]; |
51 [self.paymentRequestEditViewController setEditorFields:[self editorFields]]; | 54 [self.paymentRequestEditViewController setEditorFields:[self editorFields]]; |
52 [self.paymentRequestEditViewController setDataSource:self]; | 55 [self.paymentRequestEditViewController setDataSource:self]; |
53 [self.paymentRequestEditViewController | 56 [self.paymentRequestEditViewController |
54 setDelegate:static_cast<id<PaymentRequestEditViewControllerDelegate>>( | 57 setDelegate:static_cast<id<PaymentRequestEditViewControllerDelegate>>( |
55 self.alerter)]; | 58 self.alerter)]; |
56 [self.paymentRequestEditViewController setValidatorDelegate:self]; | 59 [self.paymentRequestEditViewController setValidatorDelegate:self]; |
57 [self.paymentRequestEditViewController loadModel]; | 60 [self.paymentRequestEditViewController loadModel]; |
| 61 // Set the options for the province field after the model is loaded. |
| 62 NSArray<NSString*>* options = @[ @"Ontario", @"Quebec" ]; |
| 63 self.province.value = options[1]; |
| 64 self.province.enabled = YES; |
| 65 [self.paymentRequestEditViewController setOptions:options |
| 66 forEditorField:self.province]; |
58 [self.baseViewController | 67 [self.baseViewController |
59 pushViewController:self.paymentRequestEditViewController | 68 pushViewController:self.paymentRequestEditViewController |
60 animated:YES]; | 69 animated:YES]; |
61 } | 70 } |
62 | 71 |
63 #pragma mark - Helper methods | 72 #pragma mark - Helper methods |
64 | 73 |
65 - (NSArray<EditorField*>*)editorFields { | 74 - (NSArray<EditorField*>*)editorFields { |
66 EditorField* name = | 75 EditorField* name = |
67 [[EditorField alloc] initWithAutofillUIType:AutofillUITypeProfileFullName | 76 [[EditorField alloc] initWithAutofillUIType:AutofillUITypeProfileFullName |
68 fieldType:EditorFieldTypeTextField | 77 fieldType:EditorFieldTypeTextField |
69 label:@"Name" | 78 label:@"Name" |
70 value:@"John Doe" | 79 value:@"John Doe" |
71 required:YES]; | 80 required:YES]; |
72 EditorField* country = [[EditorField alloc] | 81 EditorField* country = [[EditorField alloc] |
73 initWithAutofillUIType:AutofillUITypeProfileHomeAddressCountry | 82 initWithAutofillUIType:AutofillUITypeProfileHomeAddressCountry |
74 fieldType:EditorFieldTypeSelector | 83 fieldType:EditorFieldTypeSelector |
75 label:@"Country" | 84 label:@"Country" |
76 value:@"CAN" | 85 value:@"CAN" |
77 required:YES]; | 86 required:YES]; |
78 [country setDisplayValue:@"Canada"]; | 87 [country setDisplayValue:@"Canada"]; |
| 88 self.province = [[EditorField alloc] |
| 89 initWithAutofillUIType:AutofillUITypeProfileHomeAddressState |
| 90 fieldType:EditorFieldTypeTextField |
| 91 label:@"Province" |
| 92 value:@"Loading..." |
| 93 required:YES]; |
| 94 self.province.enabled = NO; |
79 EditorField* address = [[EditorField alloc] | 95 EditorField* address = [[EditorField alloc] |
80 initWithAutofillUIType:AutofillUITypeProfileHomeAddressStreet | 96 initWithAutofillUIType:AutofillUITypeProfileHomeAddressStreet |
81 fieldType:EditorFieldTypeTextField | 97 fieldType:EditorFieldTypeTextField |
82 label:@"Address" | 98 label:@"Address" |
83 value:@"" | 99 value:@"" |
84 required:YES]; | 100 required:YES]; |
85 EditorField* postalCode = [[EditorField alloc] | 101 EditorField* postalCode = [[EditorField alloc] |
86 initWithAutofillUIType:AutofillUITypeProfileHomeAddressZip | 102 initWithAutofillUIType:AutofillUITypeProfileHomeAddressZip |
87 fieldType:EditorFieldTypeTextField | 103 fieldType:EditorFieldTypeTextField |
88 label:@"Postal Code" | 104 label:@"Postal Code" |
89 value:@"" | 105 value:@"" |
90 required:NO]; | 106 required:NO]; |
| 107 EditorField* save = [[EditorField alloc] |
| 108 initWithAutofillUIType:AutofillUITypeCreditCardSaveToChrome |
| 109 fieldType:EditorFieldTypeSwitch |
| 110 label:@"Save" |
| 111 value:@"YES" |
| 112 required:NO]; |
91 | 113 |
92 return @[ name, country, address, postalCode ]; | 114 return @[ name, country, self.province, address, postalCode, save ]; |
93 } | 115 } |
94 | 116 |
95 #pragma mark - PaymentRequestEditViewControllerDataSource | 117 #pragma mark - PaymentRequestEditViewControllerDataSource |
96 | 118 |
97 - (CollectionViewItem*)headerItem { | 119 - (CollectionViewItem*)headerItem { |
98 return nil; | 120 return nil; |
99 } | 121 } |
100 | 122 |
101 - (BOOL)shouldHideBackgroundForHeaderItem { | 123 - (BOOL)shouldHideBackgroundForHeaderItem { |
102 return NO; | 124 return NO; |
103 } | 125 } |
104 | 126 |
105 - (UIImage*)iconIdentifyingEditorField:(EditorField*)field { | 127 - (UIImage*)iconIdentifyingEditorField:(EditorField*)field { |
106 return nil; | 128 return nil; |
107 } | 129 } |
108 | 130 |
109 #pragma mark - PaymentRequestEditViewControllerValidator | 131 #pragma mark - PaymentRequestEditViewControllerValidator |
110 | 132 |
111 - (NSString*)paymentRequestEditViewController: | 133 - (NSString*)paymentRequestEditViewController: |
112 (PaymentRequestEditViewController*)controller | 134 (PaymentRequestEditViewController*)controller |
113 validateField:(EditorField*)field { | 135 validateField:(EditorField*)field { |
114 if (field.value.length) | 136 return (!field.value.length && field.isRequired) ? @"Field is required" : nil; |
115 return nil; | |
116 else if (field.isRequired) | |
117 return @"Field is required"; | |
118 else | |
119 return nil; | |
120 } | 137 } |
121 | 138 |
122 @end | 139 @end |
OLD | NEW |