OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h" | 5 #include "ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/ios/ios_util.h" | 8 #include "base/ios/ios_util.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/mac/foundation_util.h" | 10 #include "base/mac/foundation_util.h" |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 NSForegroundColorAttributeName : [UIColor lightGrayColor] | 195 NSForegroundColorAttributeName : [UIColor lightGrayColor] |
196 } | 196 } |
197 forState:UIControlStateDisabled]; | 197 forState:UIControlStateDisabled]; |
198 [_verifyButton setEnabled:NO]; | 198 [_verifyButton setEnabled:NO]; |
199 self.navigationItem.rightBarButtonItem = _verifyButton; | 199 self.navigationItem.rightBarButtonItem = _verifyButton; |
200 } | 200 } |
201 | 201 |
202 - (void)viewWillLayoutSubviews { | 202 - (void)viewWillLayoutSubviews { |
203 [super viewWillLayoutSubviews]; | 203 [super viewWillLayoutSubviews]; |
204 NSIndexPath* CVCIndexPath = | 204 NSIndexPath* CVCIndexPath = |
205 [self.collectionViewModel indexPathForItem:_CVCItem | 205 [self.collectionViewModel indexPathForItem:_CVCItem]; |
206 inSectionWithIdentifier:SectionIdentifierMain]; | |
207 CVCCell* CVC = base::mac::ObjCCastStrict<CVCCell>( | 206 CVCCell* CVC = base::mac::ObjCCastStrict<CVCCell>( |
208 [self.collectionView cellForItemAtIndexPath:CVCIndexPath]); | 207 [self.collectionView cellForItemAtIndexPath:CVCIndexPath]); |
209 [self focusInputIfNeeded:CVC]; | 208 [self focusInputIfNeeded:CVC]; |
210 } | 209 } |
211 | 210 |
212 #pragma mark - CollectionViewController | 211 #pragma mark - CollectionViewController |
213 | 212 |
214 - (void)loadModel { | 213 - (void)loadModel { |
215 [super loadModel]; | 214 [super loadModel]; |
216 CollectionViewModel* model = self.collectionViewModel; | 215 CollectionViewModel* model = self.collectionViewModel; |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 // Remove all the present items to replace them with the status item. | 301 // Remove all the present items to replace them with the status item. |
303 [self.collectionViewModel | 302 [self.collectionViewModel |
304 removeSectionWithIdentifier:SectionIdentifierMain]; | 303 removeSectionWithIdentifier:SectionIdentifierMain]; |
305 [self.collectionViewModel addSectionWithIdentifier:SectionIdentifierMain]; | 304 [self.collectionViewModel addSectionWithIdentifier:SectionIdentifierMain]; |
306 [self.collectionViewModel addItem:_statusItem | 305 [self.collectionViewModel addItem:_statusItem |
307 toSectionWithIdentifier:SectionIdentifierMain]; | 306 toSectionWithIdentifier:SectionIdentifierMain]; |
308 [self.collectionView reloadData]; | 307 [self.collectionView reloadData]; |
309 } else { | 308 } else { |
310 _statusItem.text = text; | 309 _statusItem.text = text; |
311 _statusItem.state = state; | 310 _statusItem.state = state; |
312 [self reconfigureCellsForItems:@[ _statusItem ] | 311 [self reconfigureCellsForItems:@[ _statusItem ]]; |
313 inSectionWithIdentifier:SectionIdentifierMain]; | |
314 [self.collectionViewLayout invalidateLayout]; | 312 [self.collectionViewLayout invalidateLayout]; |
315 } | 313 } |
316 } | 314 } |
317 | 315 |
318 - (CGFloat)statusCellHeight { | 316 - (CGFloat)statusCellHeight { |
319 const CGFloat collectionViewWidth = | 317 const CGFloat collectionViewWidth = |
320 CGRectGetWidth(self.collectionView.bounds); | 318 CGRectGetWidth(self.collectionView.bounds); |
321 | 319 |
322 // The status cell replaces the previous content of the collection. So it is | 320 // The status cell replaces the previous content of the collection. So it is |
323 // sized based on what appears when not loading. | 321 // sized based on what appears when not loading. |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 | 396 |
399 if ([self inputExpirationIsValid:item]) { | 397 if ([self inputExpirationIsValid:item]) { |
400 item.showDateInputError = NO; | 398 item.showDateInputError = NO; |
401 item.errorMessage = @""; | 399 item.errorMessage = @""; |
402 } else { | 400 } else { |
403 item.showDateInputError = NO; | 401 item.showDateInputError = NO; |
404 item.errorMessage = l10n_util::GetNSString( | 402 item.errorMessage = l10n_util::GetNSString( |
405 IDS_AUTOFILL_CARD_UNMASK_INVALID_EXPIRATION_DATE); | 403 IDS_AUTOFILL_CARD_UNMASK_INVALID_EXPIRATION_DATE); |
406 } | 404 } |
407 | 405 |
408 [self reconfigureCellsForItems:@[ item ] | 406 [self reconfigureCellsForItems:@[ item ]]; |
409 inSectionWithIdentifier:SectionIdentifierMain]; | |
410 [self.collectionViewLayout invalidateLayout]; | 407 [self.collectionViewLayout invalidateLayout]; |
411 } | 408 } |
412 | 409 |
413 - (void)focusInputIfNeeded:(CVCCell*)CVC { | 410 - (void)focusInputIfNeeded:(CVCCell*)CVC { |
414 // Focus the first visible input, unless the orientation is landscape. In | 411 // Focus the first visible input, unless the orientation is landscape. In |
415 // landscape, the keyboard covers up the storage checkbox shown below this | 412 // landscape, the keyboard covers up the storage checkbox shown below this |
416 // view and the user might never see it. | 413 // view and the user might never see it. |
417 if (UIInterfaceOrientationIsPortrait( | 414 if (UIInterfaceOrientationIsPortrait( |
418 [UIApplication sharedApplication].statusBarOrientation)) { | 415 [UIApplication sharedApplication].statusBarOrientation)) { |
419 // Also check whether any of the inputs are already the first responder and | 416 // Also check whether any of the inputs are already the first responder and |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
482 SysUTF16ToNSString(_bridge->GetController()->GetInstructionsMessage()); | 479 SysUTF16ToNSString(_bridge->GetController()->GetInstructionsMessage()); |
483 _CVCItem.monthText = @""; | 480 _CVCItem.monthText = @""; |
484 _CVCItem.yearText = @""; | 481 _CVCItem.yearText = @""; |
485 _CVCItem.CVCText = @""; | 482 _CVCItem.CVCText = @""; |
486 _CVCItem.errorMessage = @""; | 483 _CVCItem.errorMessage = @""; |
487 _CVCItem.showDateInput = YES; | 484 _CVCItem.showDateInput = YES; |
488 _CVCItem.showNewCardButton = NO; | 485 _CVCItem.showNewCardButton = NO; |
489 _CVCItem.showDateInputError = NO; | 486 _CVCItem.showDateInputError = NO; |
490 _CVCItem.showCVCInputError = NO; | 487 _CVCItem.showCVCInputError = NO; |
491 | 488 |
492 [self reconfigureCellsForItems:@[ _CVCItem ] | 489 [self reconfigureCellsForItems:@[ _CVCItem ]]; |
493 inSectionWithIdentifier:SectionIdentifierMain]; | |
494 [self.collectionViewLayout invalidateLayout]; | 490 [self.collectionViewLayout invalidateLayout]; |
495 | 491 |
496 [self inputsDidChange:_CVCItem]; | 492 [self inputsDidChange:_CVCItem]; |
497 } | 493 } |
498 | 494 |
499 #pragma mark - UITextField Events | 495 #pragma mark - UITextField Events |
500 | 496 |
501 - (void)monthInputDidChange:(UITextField*)textField { | 497 - (void)monthInputDidChange:(UITextField*)textField { |
502 _CVCItem.monthText = textField.text; | 498 _CVCItem.monthText = textField.text; |
503 [self inputsDidChange:_CVCItem]; | 499 [self inputsDidChange:_CVCItem]; |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
588 - (void)collectionView:(UICollectionView*)collectionView | 584 - (void)collectionView:(UICollectionView*)collectionView |
589 willDisplayCell:(UICollectionViewCell*)cell | 585 willDisplayCell:(UICollectionViewCell*)cell |
590 forItemAtIndexPath:(NSIndexPath*)indexPath { | 586 forItemAtIndexPath:(NSIndexPath*)indexPath { |
591 CVCCell* CVC = base::mac::ObjCCast<CVCCell>(cell); | 587 CVCCell* CVC = base::mac::ObjCCast<CVCCell>(cell); |
592 if (CVC) { | 588 if (CVC) { |
593 [self focusInputIfNeeded:CVC]; | 589 [self focusInputIfNeeded:CVC]; |
594 } | 590 } |
595 } | 591 } |
596 | 592 |
597 @end | 593 @end |
OLD | NEW |