blob: 290fd10ff557d4828c4af0d62cd0d5902d4c26ec [file] [log] [blame]
// 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.
#import "remoting/ios/app/first_launch_view_controller.h"
#import <MaterialComponents/MaterialButtons.h>
#include "remoting/base/string_resources.h"
#import "remoting/ios/app/remoting_theme.h"
#include "ui/base/l10n/l10n_util.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
static const float kLogoSizeMultiplier = 0.381966f;
static const float kLogoYOffset = -10.f;
static const float kButtonHeight = 80.f;
@interface FirstLaunchViewController () {
NSArray<NSLayoutConstraint*>* _compactWidthConstraints;
NSArray<NSLayoutConstraint*>* _compactHeightConstraints;
}
@end
@implementation FirstLaunchViewController
@synthesize delegate = _delegate;
#pragma mark - UIViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIImageView* imageView = [[UIImageView alloc]
initWithImage:[UIImage imageNamed:@"launchscreen_app_logo"]];
imageView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:imageView];
MDCFlatButton* signInButton = [[MDCFlatButton alloc] init];
[signInButton setTitle:l10n_util::GetNSString(IDS_SIGN_IN_BUTTON)
forState:UIControlStateNormal];
[signInButton sizeToFit];
[signInButton addTarget:self
action:@selector(didTapSignIn:)
forControlEvents:UIControlEventTouchUpInside];
[signInButton setTitleColor:RemotingTheme.flatButtonTextColor
forState:UIControlStateNormal];
signInButton.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:signInButton];
self.view.backgroundColor = RemotingTheme.firstLaunchViewBackgroundColor;
[self initConstraints:imageView button:signInButton];
}
- (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection {
[self refreshTraitCollection];
}
#pragma mark - Private
- (void)didTapSignIn:(id)button {
[_delegate presentSignInFlow];
}
- (void)initConstraints:(UIImageView*)imageView button:(UIButton*)signInButton {
// This matches the constraints in LaunchScreen.storyboard.
[imageView setContentHuggingPriority:UILayoutPriorityRequired
forAxis:UILayoutConstraintAxisVertical];
[imageView setContentHuggingPriority:UILayoutPriorityRequired
forAxis:UILayoutConstraintAxisHorizontal];
[imageView
setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
forAxis:UILayoutConstraintAxisVertical];
[imageView
setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
forAxis:UILayoutConstraintAxisHorizontal];
_compactWidthConstraints =
@[ [imageView.widthAnchor constraintEqualToAnchor:self.view.widthAnchor
multiplier:kLogoSizeMultiplier] ];
_compactWidthConstraints[0].priority = UILayoutPriorityDefaultHigh;
_compactHeightConstraints =
@[ [imageView.heightAnchor constraintEqualToAnchor:self.view.heightAnchor
multiplier:kLogoSizeMultiplier] ];
_compactHeightConstraints[0].priority = UILayoutPriorityDefaultHigh;
[NSLayoutConstraint activateConstraints:@[
[imageView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor],
[imageView.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor
constant:kLogoYOffset],
[imageView.widthAnchor constraintEqualToAnchor:imageView.heightAnchor],
[signInButton.leadingAnchor
constraintEqualToAnchor:self.view.leadingAnchor],
[signInButton.trailingAnchor
constraintEqualToAnchor:self.view.trailingAnchor],
[signInButton.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor],
[signInButton.heightAnchor constraintEqualToConstant:kButtonHeight],
]];
[self refreshTraitCollection];
}
- (void)refreshTraitCollection {
if (self.traitCollection.verticalSizeClass ==
UIUserInterfaceSizeClassCompact) {
[NSLayoutConstraint deactivateConstraints:_compactWidthConstraints];
[NSLayoutConstraint activateConstraints:_compactHeightConstraints];
} else if (self.traitCollection.horizontalSizeClass ==
UIUserInterfaceSizeClassCompact &&
self.traitCollection.verticalSizeClass ==
UIUserInterfaceSizeClassRegular) {
[NSLayoutConstraint deactivateConstraints:_compactHeightConstraints];
[NSLayoutConstraint activateConstraints:_compactWidthConstraints];
} else {
[NSLayoutConstraint deactivateConstraints:_compactWidthConstraints];
[NSLayoutConstraint deactivateConstraints:_compactHeightConstraints];
}
}
@end