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/chrome/browser/payments/credit_card_edit_view_controller.h" | 5 #import "ios/chrome/browser/payments/credit_card_edit_view_controller.h" |
6 | 6 |
7 #import "base/mac/foundation_util.h" | 7 #import "base/mac/foundation_util.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "components/strings/grit/components_strings.h" | 9 #include "components/strings/grit/components_strings.h" |
10 #import "ios/chrome/browser/payments/payment_request_edit_view_controller+intern
al.h" | 10 #import "ios/chrome/browser/payments/payment_request_edit_view_controller+intern
al.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 #if !defined(__has_feature) || !__has_feature(objc_arc) | 25 #if !defined(__has_feature) || !__has_feature(objc_arc) |
26 #error "This file requires ARC support." | 26 #error "This file requires ARC support." |
27 #endif | 27 #endif |
28 | 28 |
29 namespace { | 29 namespace { |
30 | 30 |
31 NSString* const kCreditCardEditCollectionViewId = | 31 NSString* const kCreditCardEditCollectionViewId = |
32 @"kCreditCardEditCollectionViewId"; | 32 @"kCreditCardEditCollectionViewId"; |
33 | 33 |
34 typedef NS_ENUM(NSInteger, SectionIdentifier) { | 34 typedef NS_ENUM(NSInteger, SectionIdentifier) { |
35 SectionIdentifierCardSummary = kSectionIdentifierEnumStart, | 35 SectionIdentifierAcceptedMethods = kSectionIdentifierEnumStart, |
| 36 SectionIdentifierCardSummary, |
36 SectionIdentifierBillingAddress, | 37 SectionIdentifierBillingAddress, |
37 SectionIdentifierSaveCard, | 38 SectionIdentifierSaveCard, |
38 }; | 39 }; |
39 | 40 |
40 typedef NS_ENUM(NSInteger, ItemType) { | 41 typedef NS_ENUM(NSInteger, ItemType) { |
41 ItemTypeCardSummary = kItemTypeEnumStart, | 42 ItemTypeAcceptedMethods = kItemTypeEnumStart, |
| 43 ItemTypeCardSummary, |
42 ItemTypeBillingAddress, | 44 ItemTypeBillingAddress, |
43 ItemTypeSaveCard, | 45 ItemTypeSaveCard, |
44 }; | 46 }; |
45 | 47 |
46 } // namespace | 48 } // namespace |
47 | 49 |
48 @interface CreditCardEditViewController () { | 50 @interface CreditCardEditViewController () { |
49 NSArray<EditorField*>* _fields; | 51 NSArray<EditorField*>* _fields; |
50 | 52 |
51 // Indicates whether the credit card being created should be saved locally. | 53 // Indicates whether the credit card being created should be saved locally. |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 | 166 |
165 // Server card summary section. | 167 // Server card summary section. |
166 CollectionViewItem* serverCardSummaryItem = | 168 CollectionViewItem* serverCardSummaryItem = |
167 [_dataSource serverCardSummaryItem]; | 169 [_dataSource serverCardSummaryItem]; |
168 if (serverCardSummaryItem) { | 170 if (serverCardSummaryItem) { |
169 [model addSectionWithIdentifier:SectionIdentifierCardSummary]; | 171 [model addSectionWithIdentifier:SectionIdentifierCardSummary]; |
170 serverCardSummaryItem.type = ItemTypeCardSummary; | 172 serverCardSummaryItem.type = ItemTypeCardSummary; |
171 [model addItem:serverCardSummaryItem | 173 [model addItem:serverCardSummaryItem |
172 toSectionWithIdentifier:SectionIdentifierCardSummary]; | 174 toSectionWithIdentifier:SectionIdentifierCardSummary]; |
173 } | 175 } |
| 176 |
| 177 // Accepted payment methods section. |
| 178 CollectionViewItem* acceptedMethodsItem = |
| 179 [_dataSource acceptedPaymentMethodsItem]; |
| 180 if (acceptedMethodsItem) { |
| 181 [model addSectionWithIdentifier:SectionIdentifierAcceptedMethods]; |
| 182 acceptedMethodsItem.type = ItemTypeAcceptedMethods; |
| 183 [model addItem:acceptedMethodsItem |
| 184 toSectionWithIdentifier:SectionIdentifierAcceptedMethods]; |
| 185 } |
174 } | 186 } |
175 | 187 |
176 - (void)loadFooterItems { | 188 - (void)loadFooterItems { |
177 CollectionViewModel* model = self.collectionViewModel; | 189 CollectionViewModel* model = self.collectionViewModel; |
178 | 190 |
179 // Billing Address section. | 191 // Billing Address section. |
180 [model addSectionWithIdentifier:SectionIdentifierBillingAddress]; | 192 [model addSectionWithIdentifier:SectionIdentifierBillingAddress]; |
181 CollectionViewDetailItem* billingAddressItem = | 193 CollectionViewDetailItem* billingAddressItem = |
182 [[CollectionViewDetailItem alloc] initWithType:ItemTypeBillingAddress]; | 194 [[CollectionViewDetailItem alloc] initWithType:ItemTypeBillingAddress]; |
183 billingAddressItem.text = [NSString | 195 billingAddressItem.text = [NSString |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 | 290 |
279 #pragma mark UICollectionViewDelegate | 291 #pragma mark UICollectionViewDelegate |
280 | 292 |
281 - (void)collectionView:(UICollectionView*)collectionView | 293 - (void)collectionView:(UICollectionView*)collectionView |
282 didSelectItemAtIndexPath:(NSIndexPath*)indexPath { | 294 didSelectItemAtIndexPath:(NSIndexPath*)indexPath { |
283 [super collectionView:collectionView didSelectItemAtIndexPath:indexPath]; | 295 [super collectionView:collectionView didSelectItemAtIndexPath:indexPath]; |
284 | 296 |
285 CollectionViewItem* item = | 297 CollectionViewItem* item = |
286 [self.collectionViewModel itemAtIndexPath:indexPath]; | 298 [self.collectionViewModel itemAtIndexPath:indexPath]; |
287 switch (item.type) { | 299 switch (item.type) { |
| 300 case ItemTypeAcceptedMethods: |
288 case ItemTypeCardSummary: | 301 case ItemTypeCardSummary: |
289 case ItemTypeSaveCard: | 302 case ItemTypeSaveCard: |
290 break; | 303 break; |
291 case ItemTypeBillingAddress: { | 304 case ItemTypeBillingAddress: { |
292 // TODO(crbug.com/602666): Display a list of billing addresses. | 305 // TODO(crbug.com/602666): Display a list of billing addresses. |
293 break; | 306 break; |
294 } | 307 } |
295 default: | 308 default: |
296 break; | 309 break; |
297 } | 310 } |
298 } | 311 } |
299 | 312 |
300 #pragma mark MDCCollectionViewStylingDelegate | 313 #pragma mark MDCCollectionViewStylingDelegate |
301 | 314 |
302 - (CGFloat)collectionView:(UICollectionView*)collectionView | 315 - (CGFloat)collectionView:(UICollectionView*)collectionView |
303 cellHeightAtIndexPath:(NSIndexPath*)indexPath { | 316 cellHeightAtIndexPath:(NSIndexPath*)indexPath { |
304 CollectionViewItem* item = | 317 CollectionViewItem* item = |
305 [self.collectionViewModel itemAtIndexPath:indexPath]; | 318 [self.collectionViewModel itemAtIndexPath:indexPath]; |
306 switch (item.type) { | 319 switch (item.type) { |
307 case ItemTypeBillingAddress: | 320 case ItemTypeBillingAddress: |
308 return MDCCellDefaultOneLineHeight; | 321 return MDCCellDefaultOneLineHeight; |
| 322 case ItemTypeAcceptedMethods: |
309 case ItemTypeCardSummary: | 323 case ItemTypeCardSummary: |
310 case ItemTypeSaveCard: | 324 case ItemTypeSaveCard: |
311 return [MDCCollectionViewCell | 325 return [MDCCollectionViewCell |
312 cr_preferredHeightForWidth:CGRectGetWidth(collectionView.bounds) | 326 cr_preferredHeightForWidth:CGRectGetWidth(collectionView.bounds) |
313 forItem:item]; | 327 forItem:item]; |
314 default: | 328 default: |
315 return | 329 return |
316 [super collectionView:collectionView cellHeightAtIndexPath:indexPath]; | 330 [super collectionView:collectionView cellHeightAtIndexPath:indexPath]; |
317 } | 331 } |
318 } | 332 } |
319 | 333 |
320 - (BOOL)collectionView:(UICollectionView*)collectionView | 334 - (BOOL)collectionView:(UICollectionView*)collectionView |
321 hidesInkViewAtIndexPath:(NSIndexPath*)indexPath { | 335 hidesInkViewAtIndexPath:(NSIndexPath*)indexPath { |
322 NSInteger type = [self.collectionViewModel itemTypeForIndexPath:indexPath]; | 336 NSInteger type = [self.collectionViewModel itemTypeForIndexPath:indexPath]; |
323 switch (type) { | 337 switch (type) { |
| 338 case ItemTypeAcceptedMethods: |
324 case ItemTypeCardSummary: | 339 case ItemTypeCardSummary: |
325 case ItemTypeSaveCard: | 340 case ItemTypeSaveCard: |
326 return YES; | 341 return YES; |
327 default: | 342 default: |
328 return [super collectionView:collectionView | 343 return [super collectionView:collectionView |
329 hidesInkViewAtIndexPath:indexPath]; | 344 hidesInkViewAtIndexPath:indexPath]; |
330 } | 345 } |
331 } | 346 } |
332 | 347 |
| 348 - (BOOL)collectionView:(UICollectionView*)collectionView |
| 349 shouldHideItemBackgroundAtIndexPath:(NSIndexPath*)indexPath { |
| 350 NSInteger type = [self.collectionViewModel itemTypeForIndexPath:indexPath]; |
| 351 switch (type) { |
| 352 case ItemTypeAcceptedMethods: |
| 353 return YES; |
| 354 default: |
| 355 return [super collectionView:collectionView |
| 356 shouldHideItemBackgroundAtIndexPath:indexPath]; |
| 357 } |
| 358 } |
| 359 |
333 #pragma mark Switch Actions | 360 #pragma mark Switch Actions |
334 | 361 |
335 - (void)saveCardSwitchToggled:(UISwitch*)sender { | 362 - (void)saveCardSwitchToggled:(UISwitch*)sender { |
336 _saveCreditCard = sender.isOn; | 363 _saveCreditCard = sender.isOn; |
337 } | 364 } |
338 | 365 |
339 @end | 366 @end |
OLD | NEW |