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

Unified Diff: ios/chrome/browser/ui/settings/import_data_collection_view_controller.mm

Issue 2589583003: Upstream Chrome on iOS source code [7/11]. (Closed)
Patch Set: Created 4 years 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 side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/settings/import_data_collection_view_controller.mm
diff --git a/ios/chrome/browser/ui/settings/import_data_collection_view_controller.mm b/ios/chrome/browser/ui/settings/import_data_collection_view_controller.mm
new file mode 100644
index 0000000000000000000000000000000000000000..79f370475ec20edef383e342d71aa4b0a3f86c75
--- /dev/null
+++ b/ios/chrome/browser/ui/settings/import_data_collection_view_controller.mm
@@ -0,0 +1,195 @@
+// Copyright 2015 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/chrome/browser/ui/settings/import_data_collection_view_controller.h"
+
+#import "base/ios/weak_nsobject.h"
+#include "base/logging.h"
+#import "base/mac/foundation_util.h"
+#import "base/mac/scoped_nsobject.h"
+#include "base/strings/sys_string_conversions.h"
+#import "ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_detail_item.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_item.h"
+#import "ios/chrome/browser/ui/collection_view/collection_view_model.h"
+#import "ios/chrome/browser/ui/settings/cells/card_multiline_item.h"
+#import "ios/chrome/browser/ui/settings/cells/import_data_multiline_detail_cell.h"
+#include "ios/chrome/grit/ios_strings.h"
+#import "ios/third_party/material_components_ios/src/components/CollectionCells/src/MaterialCollectionCells.h"
+#import "ios/third_party/material_components_ios/src/components/Collections/src/MaterialCollections.h"
+#include "ui/base/l10n/l10n_util_mac.h"
+
+// The accessibility identifier of the Import Data cell.
+NSString* const kImportDataImportCellId = @"kImportDataImportCellId";
+// The accessibility identifier of the Keep Data Separate cell.
+NSString* const kImportDataKeepSeparateCellId =
+ @"kImportDataKeepSeparateCellId";
+
+namespace {
+
+typedef NS_ENUM(NSInteger, SectionIdentifier) {
+ SectionIdentifierDisclaimer = kSectionIdentifierEnumZero,
+ SectionIdentifierOptions,
+};
+
+typedef NS_ENUM(NSInteger, ItemType) {
+ ItemTypeFooter = kItemTypeEnumZero,
+ ItemTypeOptionImportData,
+ ItemTypeOptionKeepDataSeparate,
+};
+
+} // namespace
+
+@implementation ImportDataCollectionViewController {
+ base::WeakNSProtocol<id<ImportDataControllerDelegate>> _delegate;
+ base::scoped_nsobject<NSString> _fromEmail;
+ base::scoped_nsobject<NSString> _toEmail;
+ BOOL _isSignedIn;
+ ShouldClearData _shouldClearData;
+ base::scoped_nsobject<CollectionViewDetailItem> _importDataItem;
+ base::scoped_nsobject<CollectionViewDetailItem> _keepDataSeparateItem;
+}
+
+#pragma mark Initialization
+
+- (instancetype)initWithDelegate:(id<ImportDataControllerDelegate>)delegate
+ fromEmail:(NSString*)fromEmail
+ toEmail:(NSString*)toEmail
+ isSignedIn:(BOOL)isSignedIn {
+ DCHECK(fromEmail);
+ DCHECK(toEmail);
+ self = [super initWithStyle:CollectionViewControllerStyleAppBar];
+ if (self) {
+ _delegate.reset(delegate);
+ _fromEmail.reset([fromEmail copy]);
+ _toEmail.reset([toEmail copy]);
+ _isSignedIn = isSignedIn;
+ _shouldClearData = isSignedIn ? SHOULD_CLEAR_DATA_CLEAR_DATA
+ : SHOULD_CLEAR_DATA_MERGE_DATA;
+ self.title = l10n_util::GetNSString(IDS_IOS_OPTIONS_IMPORT_DATA_TITLE);
+ [self setShouldHideDoneButton:YES];
+ self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc]
+ initWithTitle:l10n_util::GetNSString(
+ IDS_IOS_OPTIONS_IMPORT_DATA_CONTINUE_BUTTON)
+ style:UIBarButtonItemStyleDone
+ target:self
+ action:@selector(didTapContinue)] autorelease];
+ [self loadModel];
+ }
+ return self;
+}
+
+#pragma mark SettingsRootCollectionViewController
+
+- (void)loadModel {
+ [super loadModel];
+ CollectionViewModel* model = self.collectionViewModel;
+
+ [model addSectionWithIdentifier:SectionIdentifierDisclaimer];
+ [model addItem:[self descriptionItem]
+ toSectionWithIdentifier:SectionIdentifierDisclaimer];
+
+ [model addSectionWithIdentifier:SectionIdentifierOptions];
+ _importDataItem.reset([[self importDataItem] retain]);
+ [model addItem:_importDataItem
+ toSectionWithIdentifier:SectionIdentifierOptions];
+ _keepDataSeparateItem.reset([[self keepDataSeparateItem] retain]);
+ [model addItem:_keepDataSeparateItem
+ toSectionWithIdentifier:SectionIdentifierOptions];
+}
+
+#pragma mark Items
+
+- (CollectionViewItem*)descriptionItem {
+ CardMultilineItem* item =
+ [[[CardMultilineItem alloc] initWithType:ItemTypeFooter] autorelease];
+ item.text = l10n_util::GetNSStringF(IDS_IOS_OPTIONS_IMPORT_DATA_HEADER,
+ base::SysNSStringToUTF16(_fromEmail));
+ return item;
+}
+
+- (CollectionViewDetailItem*)importDataItem {
+ CollectionViewDetailItem* item = [[[CollectionViewDetailItem alloc]
+ initWithType:ItemTypeOptionImportData] autorelease];
+ item.cellClass = [ImportDataMultilineDetailCell class];
+ item.text = l10n_util::GetNSString(IDS_IOS_OPTIONS_IMPORT_DATA_IMPORT_TITLE);
+ item.detailText =
+ l10n_util::GetNSStringF(IDS_IOS_OPTIONS_IMPORT_DATA_IMPORT_SUBTITLE,
+ base::SysNSStringToUTF16(_toEmail));
+ item.accessoryType = _isSignedIn ? MDCCollectionViewCellAccessoryNone
+ : MDCCollectionViewCellAccessoryCheckmark;
+ item.accessibilityIdentifier = kImportDataImportCellId;
+ return item;
+}
+
+- (CollectionViewDetailItem*)keepDataSeparateItem {
+ CollectionViewDetailItem* item = [[[CollectionViewDetailItem alloc]
+ initWithType:ItemTypeOptionKeepDataSeparate] autorelease];
+ item.cellClass = [ImportDataMultilineDetailCell class];
+ item.text = l10n_util::GetNSString(IDS_IOS_OPTIONS_IMPORT_DATA_KEEP_TITLE);
+ if (_isSignedIn) {
+ item.detailText = l10n_util::GetNSStringF(
+ IDS_IOS_OPTIONS_IMPORT_DATA_KEEP_SUBTITLE_SWITCH,
+ base::SysNSStringToUTF16(_fromEmail));
+ } else {
+ item.detailText = l10n_util::GetNSString(
+ IDS_IOS_OPTIONS_IMPORT_DATA_KEEP_SUBTITLE_SIGNIN);
+ }
+ item.accessoryType = _isSignedIn ? MDCCollectionViewCellAccessoryCheckmark
+ : MDCCollectionViewCellAccessoryNone;
+ item.accessibilityIdentifier = kImportDataKeepSeparateCellId;
+ return item;
+}
+
+#pragma mark MDCCollectionViewStylingDelegate
+
+- (CGFloat)collectionView:(UICollectionView*)collectionView
+ cellHeightAtIndexPath:(NSIndexPath*)indexPath {
+ CollectionViewItem* item =
+ [self.collectionViewModel itemAtIndexPath:indexPath];
+ CGFloat cardWidth = CGRectGetWidth(collectionView.bounds) -
+ 2 * MDCCollectionViewCellStyleCardSectionInset;
+ return
+ [MDCCollectionViewCell cr_preferredHeightForWidth:cardWidth forItem:item];
+}
+
+#pragma mark UICollectionViewDelegate
+
+- (void)collectionView:(UICollectionView*)collectionView
+ didSelectItemAtIndexPath:(NSIndexPath*)indexPath {
+ [super collectionView:collectionView didSelectItemAtIndexPath:indexPath];
+ NSInteger sectionIdentifier =
+ [self.collectionViewModel sectionIdentifierForSection:indexPath.section];
+
+ if (sectionIdentifier == SectionIdentifierOptions) {
+ // Store the user choice.
+ NSInteger itemType =
+ [self.collectionViewModel itemTypeForIndexPath:indexPath];
+ _shouldClearData = (itemType == ItemTypeOptionImportData)
+ ? SHOULD_CLEAR_DATA_MERGE_DATA
+ : SHOULD_CLEAR_DATA_CLEAR_DATA;
+ [self updateUI];
+ }
+}
+
+#pragma mark Private methods
+
+// Updates the UI based on the value of |_shouldClearData|.
+- (void)updateUI {
+ BOOL importDataSelected = _shouldClearData == SHOULD_CLEAR_DATA_MERGE_DATA;
+ _importDataItem.get().accessoryType =
+ importDataSelected ? MDCCollectionViewCellAccessoryCheckmark
+ : MDCCollectionViewCellAccessoryNone;
+ _keepDataSeparateItem.get().accessoryType =
+ importDataSelected ? MDCCollectionViewCellAccessoryNone
+ : MDCCollectionViewCellAccessoryCheckmark;
+ [self reconfigureCellsForItems:@[ _importDataItem, _keepDataSeparateItem ]
+ inSectionWithIdentifier:SectionIdentifierOptions];
+}
+
+- (void)didTapContinue {
+ [_delegate didChooseClearDataPolicy:self shouldClearData:_shouldClearData];
+}
+
+@end

Powered by Google App Engine
This is Rietveld 408576698