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

Side by Side Diff: ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.mm

Issue 2761263003: Allow CollectionViewModel/Controller queries without SectionIdentifier (Closed)
Patch Set: Cleanup 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 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 #import "ios/chrome/browser/ui/settings/sync_settings_collection_view_controller .h" 5 #import "ios/chrome/browser/ui/settings/sync_settings_collection_view_controller .h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/mac/foundation_util.h" 10 #include "base/mac/foundation_util.h"
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 } 716 }
717 717
718 - (void)updateCollectionViewInternal { 718 - (void)updateCollectionViewInternal {
719 NSIndexPath* indexPath = [self.collectionViewModel 719 NSIndexPath* indexPath = [self.collectionViewModel
720 indexPathForItemType:ItemTypeSyncSwitch 720 indexPathForItemType:ItemTypeSyncSwitch
721 sectionIdentifier:SectionIdentifierEnableSync]; 721 sectionIdentifier:SectionIdentifierEnableSync];
722 722
723 SyncSwitchItem* syncItem = base::mac::ObjCCastStrict<SyncSwitchItem>( 723 SyncSwitchItem* syncItem = base::mac::ObjCCastStrict<SyncSwitchItem>(
724 [self.collectionViewModel itemAtIndexPath:indexPath]); 724 [self.collectionViewModel itemAtIndexPath:indexPath]);
725 syncItem.on = _syncSetupService->IsSyncEnabled(); 725 syncItem.on = _syncSetupService->IsSyncEnabled();
726 [self reconfigureCellsForItems:@[ syncItem ] 726 [self reconfigureCellsForItems:@[ syncItem ]];
727 inSectionWithIdentifier:SectionIdentifierEnableSync];
728 727
729 // Update Sync Accounts section. 728 // Update Sync Accounts section.
730 if ([self hasAccountsSection]) { 729 if ([self hasAccountsSection]) {
731 NSInteger section = [self.collectionViewModel 730 NSInteger section = [self.collectionViewModel
732 sectionForSectionIdentifier:SectionIdentifierSyncAccounts]; 731 sectionForSectionIdentifier:SectionIdentifierSyncAccounts];
733 NSInteger itemsCount = 732 NSInteger itemsCount =
734 [self.collectionViewModel numberOfItemsInSection:section]; 733 [self.collectionViewModel numberOfItemsInSection:section];
735 NSMutableArray* accountsToReconfigure = 734 NSMutableArray* accountsToReconfigure =
736 [[[NSMutableArray alloc] init] autorelease]; 735 [[[NSMutableArray alloc] init] autorelease];
737 for (NSInteger item = 0; item < itemsCount; ++item) { 736 for (NSInteger item = 0; item < itemsCount; ++item) {
738 NSIndexPath* indexPath = [self.collectionViewModel 737 NSIndexPath* indexPath = [self.collectionViewModel
739 indexPathForItemType:ItemTypeAccount 738 indexPathForItemType:ItemTypeAccount
740 sectionIdentifier:SectionIdentifierSyncAccounts 739 sectionIdentifier:SectionIdentifierSyncAccounts
741 atIndex:item]; 740 atIndex:item];
742 CollectionViewAccountItem* accountItem = 741 CollectionViewAccountItem* accountItem =
743 base::mac::ObjCCastStrict<CollectionViewAccountItem>( 742 base::mac::ObjCCastStrict<CollectionViewAccountItem>(
744 [self.collectionViewModel itemAtIndexPath:indexPath]); 743 [self.collectionViewModel itemAtIndexPath:indexPath]);
745 accountItem.enabled = _syncSetupService->IsSyncEnabled(); 744 accountItem.enabled = _syncSetupService->IsSyncEnabled();
746 [accountsToReconfigure addObject:accountItem]; 745 [accountsToReconfigure addObject:accountItem];
747 } 746 }
748 [self reconfigureCellsForItems:accountsToReconfigure 747 [self reconfigureCellsForItems:accountsToReconfigure];
749 inSectionWithIdentifier:SectionIdentifierSyncAccounts];
750 } 748 }
751 749
752 // Update Sync Services section. 750 // Update Sync Services section.
753 indexPath = [self.collectionViewModel 751 indexPath = [self.collectionViewModel
754 indexPathForItemType:ItemTypeSyncEverything 752 indexPathForItemType:ItemTypeSyncEverything
755 sectionIdentifier:SectionIdentifierSyncServices]; 753 sectionIdentifier:SectionIdentifierSyncServices];
756 SyncSwitchItem* syncEverythingItem = 754 SyncSwitchItem* syncEverythingItem =
757 base::mac::ObjCCastStrict<SyncSwitchItem>( 755 base::mac::ObjCCastStrict<SyncSwitchItem>(
758 [self.collectionViewModel itemAtIndexPath:indexPath]); 756 [self.collectionViewModel itemAtIndexPath:indexPath]);
759 syncEverythingItem.on = _syncSetupService->IsSyncingAllDataTypes(); 757 syncEverythingItem.on = _syncSetupService->IsSyncingAllDataTypes();
760 syncEverythingItem.enabled = [self shouldSyncEverythingItemBeEnabled]; 758 syncEverythingItem.enabled = [self shouldSyncEverythingItemBeEnabled];
761 [self reconfigureCellsForItems:@[ syncEverythingItem ] 759 [self reconfigureCellsForItems:@[ syncEverythingItem ]];
762 inSectionWithIdentifier:SectionIdentifierSyncServices];
763 760
764 NSInteger section = [self.collectionViewModel 761 NSInteger section = [self.collectionViewModel
765 sectionForSectionIdentifier:SectionIdentifierSyncServices]; 762 sectionForSectionIdentifier:SectionIdentifierSyncServices];
766 NSInteger itemsCount = 763 NSInteger itemsCount =
767 [self.collectionViewModel numberOfItemsInSection:section]; 764 [self.collectionViewModel numberOfItemsInSection:section];
768 // Syncable data types cells are offset by the Sync Everything cell. 765 // Syncable data types cells are offset by the Sync Everything cell.
769 NSMutableArray* switchsToReconfigure = 766 NSMutableArray* switchsToReconfigure =
770 [[[NSMutableArray alloc] init] autorelease]; 767 [[[NSMutableArray alloc] init] autorelease];
771 for (NSInteger item = 1; item < itemsCount; ++item) { 768 for (NSInteger item = 1; item < itemsCount; ++item) {
772 NSUInteger index = item - 1; 769 NSUInteger index = item - 1;
773 NSIndexPath* indexPath = [self.collectionViewModel 770 NSIndexPath* indexPath = [self.collectionViewModel
774 indexPathForItemType:ItemTypeSyncableDataType 771 indexPathForItemType:ItemTypeSyncableDataType
775 sectionIdentifier:SectionIdentifierSyncServices 772 sectionIdentifier:SectionIdentifierSyncServices
776 atIndex:index]; 773 atIndex:index];
777 SyncSwitchItem* syncSwitchItem = base::mac::ObjCCastStrict<SyncSwitchItem>( 774 SyncSwitchItem* syncSwitchItem = base::mac::ObjCCastStrict<SyncSwitchItem>(
778 [self.collectionViewModel itemAtIndexPath:indexPath]); 775 [self.collectionViewModel itemAtIndexPath:indexPath]);
779 SyncSetupService::SyncableDatatype dataType = 776 SyncSetupService::SyncableDatatype dataType =
780 (SyncSetupService::SyncableDatatype)syncSwitchItem.dataType; 777 (SyncSetupService::SyncableDatatype)syncSwitchItem.dataType;
781 syncer::ModelType modelType = _syncSetupService->GetModelType(dataType); 778 syncer::ModelType modelType = _syncSetupService->GetModelType(dataType);
782 syncSwitchItem.on = _syncSetupService->IsDataTypeEnabled(modelType); 779 syncSwitchItem.on = _syncSetupService->IsDataTypeEnabled(modelType);
783 syncSwitchItem.enabled = [self shouldSyncableItemsBeEnabled]; 780 syncSwitchItem.enabled = [self shouldSyncableItemsBeEnabled];
784 [switchsToReconfigure addObject:syncSwitchItem]; 781 [switchsToReconfigure addObject:syncSwitchItem];
785 } 782 }
786 [self reconfigureCellsForItems:switchsToReconfigure 783 [self reconfigureCellsForItems:switchsToReconfigure];
787 inSectionWithIdentifier:SectionIdentifierSyncServices];
788 784
789 // Update Encryption cell. 785 // Update Encryption cell.
790 [self updateEncryptionCell]; 786 [self updateEncryptionCell];
791 787
792 // Add/Remove the Sync Error. This is the only update that can change index 788 // Add/Remove the Sync Error. This is the only update that can change index
793 // paths. It is done last because self.collectionViewModel isn't aware of 789 // paths. It is done last because self.collectionViewModel isn't aware of
794 // the performBatchUpdates:completion: order of update/remove/delete. 790 // the performBatchUpdates:completion: order of update/remove/delete.
795 [self updateSyncError]; 791 [self updateSyncError];
796 } 792 }
797 793
(...skipping 22 matching lines...) Expand all
820 816
821 - (void)updateEncryptionCell { 817 - (void)updateEncryptionCell {
822 BOOL shouldDisplayEncryptionError = [self shouldDisplayEncryptionError]; 818 BOOL shouldDisplayEncryptionError = [self shouldDisplayEncryptionError];
823 NSIndexPath* indexPath = [self.collectionViewModel 819 NSIndexPath* indexPath = [self.collectionViewModel
824 indexPathForItemType:ItemTypeEncryption 820 indexPathForItemType:ItemTypeEncryption
825 sectionIdentifier:SectionIdentifierEncryptionAndFooter]; 821 sectionIdentifier:SectionIdentifierEncryptionAndFooter];
826 TextAndErrorItem* item = base::mac::ObjCCastStrict<TextAndErrorItem>( 822 TextAndErrorItem* item = base::mac::ObjCCastStrict<TextAndErrorItem>(
827 [self.collectionViewModel itemAtIndexPath:indexPath]); 823 [self.collectionViewModel itemAtIndexPath:indexPath]);
828 item.shouldDisplayError = shouldDisplayEncryptionError; 824 item.shouldDisplayError = shouldDisplayEncryptionError;
829 item.enabled = [self shouldEncryptionItemBeEnabled]; 825 item.enabled = [self shouldEncryptionItemBeEnabled];
830 [self reconfigureCellsForItems:@[ item ] 826 [self reconfigureCellsForItems:@[ item ]];
831 inSectionWithIdentifier:SectionIdentifierEncryptionAndFooter];
832 } 827 }
833 828
834 - (void)updateAccountItem:(CollectionViewAccountItem*)item 829 - (void)updateAccountItem:(CollectionViewAccountItem*)item
835 withIdentity:(ChromeIdentity*)identity { 830 withIdentity:(ChromeIdentity*)identity {
836 item.image = [_avatarCache resizedAvatarForIdentity:identity]; 831 item.image = [_avatarCache resizedAvatarForIdentity:identity];
837 item.text = identity.userEmail; 832 item.text = identity.userEmail;
838 item.chromeIdentity = identity; 833 item.chromeIdentity = identity;
839 } 834 }
840 835
841 #pragma mark Helpers 836 #pragma mark Helpers
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
958 [_authenticationFlow cancelAndDismiss]; 953 [_authenticationFlow cancelAndDismiss];
959 } 954 }
960 955
961 #pragma mark - ChromeIdentityServiceObserver 956 #pragma mark - ChromeIdentityServiceObserver
962 957
963 - (void)onProfileUpdate:(ChromeIdentity*)identity { 958 - (void)onProfileUpdate:(ChromeIdentity*)identity {
964 CollectionViewAccountItem* item = 959 CollectionViewAccountItem* item =
965 base::mac::ObjCCastStrict<CollectionViewAccountItem>( 960 base::mac::ObjCCastStrict<CollectionViewAccountItem>(
966 [_identityMap objectForKey:identity.gaiaID]); 961 [_identityMap objectForKey:identity.gaiaID]);
967 [self updateAccountItem:item withIdentity:identity]; 962 [self updateAccountItem:item withIdentity:identity];
968 [self reconfigureCellsForItems:@[ item ] 963 [self reconfigureCellsForItems:@[ item ]];
969 inSectionWithIdentifier:SectionIdentifierSyncAccounts];
970 } 964 }
971 965
972 - (void)onChromeIdentityServiceWillBeDestroyed { 966 - (void)onChromeIdentityServiceWillBeDestroyed {
973 _identityServiceObserver.reset(); 967 _identityServiceObserver.reset();
974 } 968 }
975 969
976 @end 970 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698