Index: ios/showcase/payments/sc_payments_editor_coordinator.mm |
diff --git a/ios/showcase/payments/sc_payments_editor_coordinator.mm b/ios/showcase/payments/sc_payments_editor_coordinator.mm |
index 519aed59ce40ba0bff4b3cf13aad4a3420d5b99f..8e636e5cb50374e06847425941bb95626e0d5109 100644 |
--- a/ios/showcase/payments/sc_payments_editor_coordinator.mm |
+++ b/ios/showcase/payments/sc_payments_editor_coordinator.mm |
@@ -13,49 +13,103 @@ |
#import "ios/chrome/browser/ui/payments/cells/payments_text_item.h" |
#import "ios/chrome/browser/ui/payments/payment_request_edit_view_controller.h" |
#import "ios/chrome/browser/ui/payments/payment_request_editor_field.h" |
+#import "ios/showcase/common/protocol_alerter.h" |
#if !defined(__has_feature) || !__has_feature(objc_arc) |
#error "This file requires ARC support." |
#endif |
@interface SCPaymentsEditorCoordinator ()< |
- PaymentRequestEditViewControllerDataSource> { |
- PaymentRequestEditViewController* _paymentRequestEditViewController; |
-} |
+ PaymentRequestEditViewControllerDataSource, |
+ PaymentRequestEditViewControllerValidator> |
+ |
+@property(nonatomic, strong) |
+ PaymentRequestEditViewController* paymentRequestEditViewController; |
+ |
+@property(nonatomic, strong) ProtocolAlerter* alerter; |
+ |
@end |
@implementation SCPaymentsEditorCoordinator |
+@synthesize state = _state; |
@synthesize baseViewController = _baseViewController; |
+@synthesize paymentRequestEditViewController = |
+ _paymentRequestEditViewController; |
+@synthesize alerter = _alerter; |
- (void)start { |
- _paymentRequestEditViewController = [[PaymentRequestEditViewController alloc] |
- initWithStyle:CollectionViewControllerStyleAppBar]; |
- [_paymentRequestEditViewController setTitle:@"Add info"]; |
- [_paymentRequestEditViewController setDataSource:self]; |
- [_paymentRequestEditViewController loadModel]; |
- [self.baseViewController pushViewController:_paymentRequestEditViewController |
- animated:YES]; |
-} |
+ self.alerter = [[ProtocolAlerter alloc] initWithProtocols:@[ |
+ @protocol(PaymentRequestEditViewControllerDelegate) |
+ ]]; |
+ self.alerter.baseViewController = self.baseViewController; |
+ self.paymentRequestEditViewController = |
+ [[PaymentRequestEditViewController alloc] |
+ initWithStyle:CollectionViewControllerStyleAppBar]; |
+ [self.paymentRequestEditViewController setTitle:@"Add info"]; |
+ [self.paymentRequestEditViewController setDataSource:self]; |
+ [self.paymentRequestEditViewController |
+ setDelegate:static_cast<id<PaymentRequestEditViewControllerDelegate>>( |
+ self.alerter)]; |
+ [self.paymentRequestEditViewController setValidatorDelegate:self]; |
+ [self.paymentRequestEditViewController loadModel]; |
+ [self.baseViewController |
+ pushViewController:self.paymentRequestEditViewController |
+ animated:YES]; |
+} |
#pragma mark - PaymentRequestEditViewControllerDataSource |
- (NSArray<EditorField*>*)editorFields { |
- return @[ |
- [[EditorField alloc] initWithAutofillUIType:AutofillUITypeUnknown |
- label:@"Name" |
- value:@"John Doe" |
- required:YES], |
- [[EditorField alloc] initWithAutofillUIType:AutofillUITypeUnknown |
- label:@"Address" |
- value:@"" |
- required:YES], |
- [[EditorField alloc] initWithAutofillUIType:AutofillUITypeUnknown |
- label:@"Postal Code" |
- value:@"" |
- required:NO] |
- ]; |
+ EditorField* name = |
+ [[EditorField alloc] initWithAutofillUIType:AutofillUITypeUnknown |
+ fieldType:EditorFieldTypeTextField |
+ label:@"Name" |
+ value:@"John Doe" |
+ required:YES]; |
+ EditorField* country = |
+ [[EditorField alloc] initWithAutofillUIType:AutofillUITypeUnknown |
+ fieldType:EditorFieldTypeSelector |
+ label:@"Country" |
+ value:@"CAN" |
+ required:YES]; |
+ [country setDisplayValue:@"Canada"]; |
+ EditorField* address = |
+ [[EditorField alloc] initWithAutofillUIType:AutofillUITypeUnknown |
+ fieldType:EditorFieldTypeTextField |
+ label:@"Address" |
+ value:@"" |
+ required:YES]; |
+ EditorField* postalCode = |
+ [[EditorField alloc] initWithAutofillUIType:AutofillUITypeUnknown |
+ fieldType:EditorFieldTypeTextField |
+ label:@"Postal Code" |
+ value:@"" |
+ required:NO]; |
+ |
+ return @[ name, country, address, postalCode ]; |
+} |
+ |
+- (CollectionViewItem*)headerItem { |
+ return nil; |
+} |
+ |
+- (BOOL)shouldHideBackgroundForHeaderItem { |
+ return NO; |
+} |
+ |
+#pragma mark - PaymentRequestEditViewControllerValidator |
+ |
+- (NSString*)paymentRequestEditViewController: |
+ (PaymentRequestEditViewController*)controller |
+ validateField:(EditorField*)field { |
+ if (field.value.length) |
+ return nil; |
+ else if (field.isRequired) |
+ return @"Field is required"; |
+ else |
+ return nil; |
} |
@end |