| Index: remoting/ios/app/host_setup_view_controller.mm
|
| diff --git a/remoting/ios/app/host_setup_view_controller.mm b/remoting/ios/app/host_setup_view_controller.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..046eff444b6a2f34a503592171db3476169f9dcf
|
| --- /dev/null
|
| +++ b/remoting/ios/app/host_setup_view_controller.mm
|
| @@ -0,0 +1,123 @@
|
| +// Copyright 2017 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.
|
| +
|
| +#if !defined(__has_feature) || !__has_feature(objc_arc)
|
| +#error "This file requires ARC support."
|
| +#endif
|
| +
|
| +#import "remoting/ios/app/host_setup_view_controller.h"
|
| +
|
| +#import "ios/third_party/material_components_ios/src/components/ShadowElevations/src/MaterialShadowElevations.h"
|
| +#import "ios/third_party/material_components_ios/src/components/ShadowLayer/src/MaterialShadowLayer.h"
|
| +#import "remoting/ios/app/host_setup_footer_view.h"
|
| +#import "remoting/ios/app/host_setup_header_view.h"
|
| +#import "remoting/ios/app/host_setup_view_cell.h"
|
| +#import "remoting/ios/app/remoting_theme.h"
|
| +
|
| +static NSString* const kReusableIdentifierItem = @"remotingSetupStepVCItem";
|
| +
|
| +// TODO(yuweih): i18n
|
| +// Clang doesn't allow string literal concatenation in string array but
|
| +// `git cl format` will break down long lines into multiple string literals.
|
| +// This is to disable the warning until we move these to a better place.
|
| +#pragma clang diagnostic push
|
| +#pragma clang diagnostic ignored "-Wobjc-string-concatenation"
|
| +static NSArray<NSString*>* const kSetupSteps = @[
|
| + @"Go to the computer that you want to remotely access",
|
| + @"Visit google.com/remotedesktop from your Chrome browser",
|
| + @"Install the Chrome Remote Desktop software and follow the instructions to "
|
| + "complete the setup",
|
| + @"After your remote device is setup, you can access it directly from this "
|
| + "page",
|
| +];
|
| +#pragma clang diagnostic pop
|
| +
|
| +static const CGFloat kHeaderHeight = 80.f;
|
| +static const CGFloat kFooterHeight = 80.f;
|
| +
|
| +@implementation HostSetupViewController
|
| +
|
| +@synthesize scrollViewDelegate = _scrollViewDelegate;
|
| +
|
| +- (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout*)layout {
|
| + self = [super initWithCollectionViewLayout:layout];
|
| + if (self) {
|
| + self.collectionView.backgroundColor = UIColor.clearColor;
|
| + [self.collectionView registerClass:[HostSetupViewCell class]
|
| + forCellWithReuseIdentifier:kReusableIdentifierItem];
|
| +
|
| + [self.collectionView registerClass:[HostSetupHeaderView class]
|
| + forSupplementaryViewOfKind:UICollectionElementKindSectionHeader
|
| + withReuseIdentifier:UICollectionElementKindSectionHeader];
|
| +
|
| + [self.collectionView registerClass:[HostSetupFooterView class]
|
| + forSupplementaryViewOfKind:UICollectionElementKindSectionFooter
|
| + withReuseIdentifier:UICollectionElementKindSectionFooter];
|
| + }
|
| + return self;
|
| +}
|
| +
|
| +#pragma mark - UIViewController
|
| +
|
| +- (void)viewDidLoad {
|
| + [super viewDidLoad];
|
| + self.styler.cellStyle = MDCCollectionViewCellStyleGrouped;
|
| + self.styler.cellLayoutType = MDCCollectionViewCellLayoutTypeList;
|
| + self.styler.shouldHideSeparators = YES;
|
| +}
|
| +
|
| +#pragma mark - UICollectionViewDataSource
|
| +
|
| +- (NSInteger)collectionView:(UICollectionView*)collectionView
|
| + numberOfItemsInSection:(NSInteger)section {
|
| + return kSetupSteps.count;
|
| +}
|
| +
|
| +- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView
|
| + cellForItemAtIndexPath:(NSIndexPath*)indexPath {
|
| + HostSetupViewCell* cell = [collectionView
|
| + dequeueReusableCellWithReuseIdentifier:kReusableIdentifierItem
|
| + forIndexPath:indexPath];
|
| + [cell setContentText:kSetupSteps[indexPath.item] number:indexPath.item + 1];
|
| + return cell;
|
| +}
|
| +
|
| +- (UICollectionReusableView*)collectionView:(UICollectionView*)collectionView
|
| + viewForSupplementaryElementOfKind:(NSString*)kind
|
| + atIndexPath:(NSIndexPath*)indexPath {
|
| + return [collectionView dequeueReusableSupplementaryViewOfKind:kind
|
| + withReuseIdentifier:kind
|
| + forIndexPath:indexPath];
|
| +}
|
| +
|
| +#pragma mark - MDCCollectionViewStylingDelegate
|
| +
|
| +- (CGFloat)collectionView:(UICollectionView*)collectionView
|
| + cellHeightAtIndexPath:(NSIndexPath*)indexPath {
|
| + return MDCCellDefaultThreeLineHeight;
|
| +}
|
| +
|
| +#pragma mark - UICollectionViewDelegateFlowLayout
|
| +
|
| +- (CGSize)collectionView:(UICollectionView*)collectionView
|
| + layout:
|
| + (UICollectionViewLayout*)collectionViewLayout
|
| + referenceSizeForHeaderInSection:(NSInteger)section {
|
| + return CGSizeMake(collectionView.bounds.size.width, kHeaderHeight);
|
| +}
|
| +
|
| +- (CGSize)collectionView:(UICollectionView*)collectionView
|
| + layout:
|
| + (UICollectionViewLayout*)collectionViewLayout
|
| + referenceSizeForFooterInSection:(NSInteger)section {
|
| + return CGSizeMake(collectionView.bounds.size.width, kFooterHeight);
|
| +}
|
| +
|
| +#pragma mark - UIScrollViewDelegate
|
| +
|
| +- (void)scrollViewDidScroll:(UIScrollView*)scrollView {
|
| + [_scrollViewDelegate scrollViewDidScroll:scrollView];
|
| +}
|
| +
|
| +@end
|
|
|