blob: 1b5621e24662154be9f3e528a590809776e6e6ed [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/showcase/payments/sc_payments_editor_coordinator.h"
#import "base/mac/foundation_util.h"
#include "base/strings/utf_string_conversions.h"
#import "ios/chrome/browser/ui/autofill/autofill_ui_type.h"
#import "ios/chrome/browser/ui/autofill/autofill_ui_type_util.h"
#import "ios/chrome/browser/ui/autofill/cells/autofill_edit_item.h"
#import "ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.h"
#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,
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 {
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 setEditorFields:[self editorFields]];
[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 - Helper methods
- (NSArray<EditorField*>*)editorFields {
EditorField* name =
[[EditorField alloc] initWithAutofillUIType:AutofillUITypeProfileFullName
fieldType:EditorFieldTypeTextField
label:@"Name"
value:@"John Doe"
required:YES];
EditorField* country = [[EditorField alloc]
initWithAutofillUIType:AutofillUITypeProfileHomeAddressCountry
fieldType:EditorFieldTypeSelector
label:@"Country"
value:@"CAN"
required:YES];
[country setDisplayValue:@"Canada"];
EditorField* address = [[EditorField alloc]
initWithAutofillUIType:AutofillUITypeProfileHomeAddressStreet
fieldType:EditorFieldTypeTextField
label:@"Address"
value:@""
required:YES];
EditorField* postalCode = [[EditorField alloc]
initWithAutofillUIType:AutofillUITypeProfileHomeAddressZip
fieldType:EditorFieldTypeTextField
label:@"Postal Code"
value:@""
required:NO];
return @[ name, country, address, postalCode ];
}
#pragma mark - PaymentRequestEditViewControllerDataSource
- (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