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

Side by Side Diff: ios/chrome/browser/ui/payments/address_edit_coordinator.mm

Issue 2893353002: [Payment Request] Address edit view controller (Part 2) (Closed)
Patch Set: Initial Created 3 years, 7 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 #import "ios/chrome/browser/ui/payments/address_edit_coordinator.h" 5 #import "ios/chrome/browser/ui/payments/address_edit_coordinator.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "components/autofill/core/browser/autofill_profile.h" 8 #include "components/autofill/core/browser/autofill_profile.h"
9 #include "components/strings/grit/components_strings.h" 9 #include "components/strings/grit/components_strings.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"
11 #import "ios/chrome/browser/ui/payments/address_edit_mediator.h" 11 #import "ios/chrome/browser/ui/payments/address_edit_mediator.h"
12 #import "ios/chrome/browser/ui/payments/payment_request_editor_field.h" 12 #import "ios/chrome/browser/ui/payments/payment_request_editor_field.h"
13 #include "ui/base/l10n/l10n_util.h" 13 #include "ui/base/l10n/l10n_util.h"
14 14
15 #if !defined(__has_feature) || !__has_feature(objc_arc) 15 #if !defined(__has_feature) || !__has_feature(objc_arc)
16 #error "This file requires ARC support." 16 #error "This file requires ARC support."
17 #endif 17 #endif
18 18
19 namespace { 19 namespace {
20 using ::AutofillUITypeFromAutofillType; 20 using ::AutofillUITypeFromAutofillType;
21 using ::AutofillTypeFromAutofillUIType; 21 using ::AutofillTypeFromAutofillUIType;
22 } // namespace 22 } // namespace
23 23
24 @interface AddressEditCoordinator () 24 @interface AddressEditCoordinator ()
25 25
26 @property(nonatomic, strong)
27 CountrySelectionCoordinator* countrySelectionCoordinator;
28
26 @property(nonatomic, strong) AddressEditViewController* viewController; 29 @property(nonatomic, strong) AddressEditViewController* viewController;
27 30
28 @property(nonatomic, strong) AddressEditMediator* mediator; 31 @property(nonatomic, strong) AddressEditMediator* mediator;
29 32
30 @end 33 @end
31 34
32 @implementation AddressEditCoordinator 35 @implementation AddressEditCoordinator
33 36
34 @synthesize address = _address; 37 @synthesize address = _address;
35 @synthesize paymentRequest = _paymentRequest; 38 @synthesize paymentRequest = _paymentRequest;
36 @synthesize delegate = _delegate; 39 @synthesize delegate = _delegate;
40 @synthesize countrySelectionCoordinator = _countrySelectionCoordinator;
37 @synthesize viewController = _viewController; 41 @synthesize viewController = _viewController;
38 @synthesize mediator = _mediator; 42 @synthesize mediator = _mediator;
39 43
40 - (void)start { 44 - (void)start {
41 self.viewController = [[AddressEditViewController alloc] init]; 45 self.viewController = [[AddressEditViewController alloc] init];
42 // TODO(crbug.com/602666): Title varies depending on what field is missing. 46 // TODO(crbug.com/602666): Title varies depending on what field is missing.
43 // e.g., Add Email vs. Add Phone Number. 47 // e.g., Add Email vs. Add Phone Number.
44 NSString* title = self.address 48 NSString* title = self.address
45 ? l10n_util::GetNSString(IDS_PAYMENTS_EDIT_ADDRESS) 49 ? l10n_util::GetNSString(IDS_PAYMENTS_EDIT_ADDRESS)
46 : l10n_util::GetNSString(IDS_PAYMENTS_ADD_ADDRESS); 50 : l10n_util::GetNSString(IDS_PAYMENTS_ADD_ADDRESS);
47 [self.viewController setTitle:title]; 51 [self.viewController setTitle:title];
48 [self.viewController setDelegate:self]; 52 [self.viewController setDelegate:self];
49 [self.viewController setValidatorDelegate:self]; 53 [self.viewController setValidatorDelegate:self];
50 self.mediator = 54 self.mediator =
51 [[AddressEditMediator alloc] initWithPaymentRequest:self.paymentRequest 55 [[AddressEditMediator alloc] initWithPaymentRequest:self.paymentRequest
52 address:self.address]; 56 address:self.address];
57 [self.mediator setConsumer:self.viewController];
53 [self.viewController setDataSource:self.mediator]; 58 [self.viewController setDataSource:self.mediator];
54 [self.viewController loadModel]; 59 [self.viewController loadModel];
55 60
56 DCHECK(self.baseViewController.navigationController); 61 DCHECK(self.baseViewController.navigationController);
57 [[self baseViewController].navigationController 62 [[self baseViewController].navigationController
58 pushViewController:self.viewController 63 pushViewController:self.viewController
59 animated:YES]; 64 animated:YES];
60 } 65 }
61 66
62 - (void)stop { 67 - (void)stop {
63 [self.viewController.navigationController popViewControllerAnimated:YES]; 68 [self.viewController.navigationController popViewControllerAnimated:YES];
69 [self.countrySelectionCoordinator stop];
70 self.countrySelectionCoordinator = nil;
64 self.viewController = nil; 71 self.viewController = nil;
65 } 72 }
66 73
67 #pragma mark - PaymentRequestEditViewControllerValidator 74 #pragma mark - PaymentRequestEditViewControllerValidator
68 75
69 - (NSString*)paymentRequestEditViewController: 76 - (NSString*)paymentRequestEditViewController:
70 (PaymentRequestEditViewController*)controller 77 (PaymentRequestEditViewController*)controller
71 validateField:(EditorField*)field { 78 validateField:(EditorField*)field {
72 // TODO(crbug.com/602666): Validation. 79 // TODO(crbug.com/602666): Validation.
73 return nil; 80 return nil;
74 } 81 }
75 82
76 #pragma mark - AddressEditViewControllerDelegate 83 #pragma mark - AddressEditViewControllerDelegate
77 84
78 - (void)paymentRequestEditViewController: 85 - (void)paymentRequestEditViewController:
79 (PaymentRequestEditViewController*)controller 86 (PaymentRequestEditViewController*)controller
80 didSelectField:(EditorField*)field { 87 didSelectField:(EditorField*)field {
81 if (field.autofillUIType == AutofillUITypeProfileHomeAddressCountry) { 88 if (field.autofillUIType == AutofillUITypeProfileHomeAddressCountry) {
82 // TODO(crbug.com/602666): Change the fields according to the selection. 89 self.countrySelectionCoordinator = [[CountrySelectionCoordinator alloc]
90 initWithBaseViewController:self.viewController];
91 [self.countrySelectionCoordinator setCountries:self.mediator.countries];
92 [self.countrySelectionCoordinator
93 setSelectedCountryCode:self.mediator.selectedCountryCode];
94 [self.countrySelectionCoordinator setDelegate:self];
95 [self.countrySelectionCoordinator start];
83 } 96 }
84 } 97 }
85 98
86 - (void)addressEditViewController:(AddressEditViewController*)controller 99 - (void)addressEditViewController:(AddressEditViewController*)controller
87 didFinishEditingFields:(NSArray<EditorField*>*)fields { 100 didFinishEditingFields:(NSArray<EditorField*>*)fields {
88 // TODO(crbug.com/602666): Create or edit an address as appropriate. 101 // TODO(crbug.com/602666): Create or edit an address as appropriate.
89 [self.delegate addressEditCoordinator:self 102 [self.delegate addressEditCoordinator:self
90 didFinishEditingAddress:self.address]; 103 didFinishEditingAddress:self.address];
91 } 104 }
92 105
93 - (void)addressEditViewControllerDidCancel: 106 - (void)addressEditViewControllerDidCancel:
94 (AddressEditViewController*)controller { 107 (AddressEditViewController*)controller {
95 [self.delegate addressEditCoordinatorDidCancel:self]; 108 [self.delegate addressEditCoordinatorDidCancel:self];
96 } 109 }
97 110
111 #pragma mark - CountrySelectionCoordinatorDelegate
112
113 - (void)countrySelectionCoordinator:(CountrySelectionCoordinator*)coordinator
114 didSelectCountryWithCode:(NSString*)countryCode {
115 if (self.mediator.selectedCountryCode != countryCode) {
116 [self.mediator setSelectedCountryCode:countryCode];
117 [self.viewController loadModel];
118 [self.viewController.collectionView reloadData];
119 }
120 [self.countrySelectionCoordinator stop];
121 self.countrySelectionCoordinator = nil;
122 }
123
98 @end 124 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698