| OLD | NEW |
| (Empty) |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #if !defined(__has_feature) || !__has_feature(objc_arc) | |
| 6 #error "This file requires ARC support." | |
| 7 #endif | |
| 8 | |
| 9 #import "remoting/client/ios/app/pin_entry_view_controller.h" | |
| 10 | |
| 11 #import "ios/third_party/material_components_ios/src/components/Buttons/src/Mate
rialButtons.h" | |
| 12 #import "ios/third_party/material_components_ios/src/components/NavigationBar/sr
c/MaterialNavigationBar.h" | |
| 13 | |
| 14 static const CGFloat kHostCardIconSize = 45.f; | |
| 15 | |
| 16 @interface PinEntryViewController () { | |
| 17 PinEntryModalCallback _callback; | |
| 18 MDCNavigationBar* _navBar; | |
| 19 } | |
| 20 @end | |
| 21 | |
| 22 @implementation PinEntryViewController | |
| 23 | |
| 24 - (id)initWithCallback:(PinEntryModalCallback)callback { | |
| 25 self = [super init]; | |
| 26 if (self) { | |
| 27 _callback = callback; | |
| 28 } | |
| 29 return self; | |
| 30 } | |
| 31 | |
| 32 #pragma mark - UIViewController | |
| 33 | |
| 34 - (void)viewDidLoad { | |
| 35 [super viewDidLoad]; | |
| 36 self.view.backgroundColor = [UIColor whiteColor]; | |
| 37 | |
| 38 // TODO(nicholss): Localize this file. | |
| 39 self.navigationItem.rightBarButtonItem = | |
| 40 [[UIBarButtonItem alloc] initWithTitle:@"CANCEL" | |
| 41 style:UIBarButtonItemStylePlain | |
| 42 target:self | |
| 43 action:@selector(didTapCancel:)]; | |
| 44 | |
| 45 _navBar = [[MDCNavigationBar alloc] initWithFrame:CGRectZero]; | |
| 46 [_navBar observeNavigationItem:self.navigationItem]; | |
| 47 | |
| 48 [_navBar setBackgroundColor:[UIColor blackColor]]; | |
| 49 MDCNavigationBarTextColorAccessibilityMutator* mutator = | |
| 50 [[MDCNavigationBarTextColorAccessibilityMutator alloc] init]; | |
| 51 [mutator mutate:_navBar]; | |
| 52 | |
| 53 [self.view addSubview:_navBar]; | |
| 54 _navBar.translatesAutoresizingMaskIntoConstraints = NO; | |
| 55 | |
| 56 UIView* entryView = [[UIView alloc] initWithFrame:CGRectZero]; | |
| 57 | |
| 58 [self.view addSubview:entryView]; | |
| 59 entryView.translatesAutoresizingMaskIntoConstraints = NO; | |
| 60 | |
| 61 UIImageView* imageView = [[UIImageView alloc] | |
| 62 initWithFrame:CGRectMake(0, 0, kHostCardIconSize, kHostCardIconSize)]; | |
| 63 imageView.contentMode = UIViewContentModeCenter; | |
| 64 imageView.alpha = 0.87f; | |
| 65 imageView.backgroundColor = UIColor.lightGrayColor; | |
| 66 imageView.layer.cornerRadius = kHostCardIconSize / 2.f; | |
| 67 imageView.layer.masksToBounds = YES; | |
| 68 imageView.translatesAutoresizingMaskIntoConstraints = NO; | |
| 69 [self.view addSubview:imageView]; | |
| 70 | |
| 71 UILabel* titleLabel = [[UILabel alloc] initWithFrame:CGRectZero]; | |
| 72 titleLabel.textColor = [UIColor colorWithWhite:0 alpha:0.87f]; | |
| 73 titleLabel.text = @"Host XXX"; | |
| 74 titleLabel.translatesAutoresizingMaskIntoConstraints = NO; | |
| 75 [self.view addSubview:titleLabel]; | |
| 76 [titleLabel sizeToFit]; | |
| 77 | |
| 78 MDCRaisedButton* pinButton = [[MDCRaisedButton alloc] init]; | |
| 79 [pinButton setTitle:@"->" forState:UIControlStateNormal]; | |
| 80 [pinButton sizeToFit]; | |
| 81 [pinButton addTarget:self | |
| 82 action:@selector(didTapPinEntry:) | |
| 83 forControlEvents:UIControlEventTouchUpInside]; | |
| 84 pinButton.translatesAutoresizingMaskIntoConstraints = NO; | |
| 85 [entryView addSubview:pinButton]; | |
| 86 | |
| 87 UITextField* pinEntry = | |
| 88 [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 10)]; | |
| 89 pinEntry.textAlignment = NSTextAlignmentCenter; | |
| 90 pinEntry.secureTextEntry = YES; | |
| 91 pinEntry.autoresizingMask = UIViewAutoresizingFlexibleWidth; | |
| 92 pinEntry.keyboardType = UIKeyboardTypeNumberPad; | |
| 93 pinEntry.attributedPlaceholder = | |
| 94 [[NSAttributedString alloc] initWithString:@"Enter PIN"]; | |
| 95 [entryView addSubview:pinEntry]; | |
| 96 pinEntry.translatesAutoresizingMaskIntoConstraints = NO; | |
| 97 [pinEntry sizeToFit]; | |
| 98 | |
| 99 NSDictionary* views = @{ | |
| 100 @"entryView" : entryView, | |
| 101 @"navBar" : _navBar, | |
| 102 @"imageView" : imageView, | |
| 103 @"titleLabel" : titleLabel, | |
| 104 @"pinEntry" : pinEntry, | |
| 105 @"pinButton" : pinButton | |
| 106 }; | |
| 107 | |
| 108 NSDictionary* metrics = @{ | |
| 109 @"imageEdge" : @150.0, | |
| 110 @"padding" : @15.0, | |
| 111 @"imageSize" : @45.0, | |
| 112 @"buttonSize" : @70.0 | |
| 113 }; | |
| 114 | |
| 115 [self.view addConstraints:[NSLayoutConstraint | |
| 116 constraintsWithVisualFormat:@"|[navBar]|" | |
| 117 options:0 | |
| 118 metrics:metrics | |
| 119 views:views]]; | |
| 120 [self.view addConstraints: | |
| 121 [NSLayoutConstraint | |
| 122 constraintsWithVisualFormat:@"|-[imageView(==imageSize)]-|" | |
| 123 options:0 | |
| 124 metrics:metrics | |
| 125 views:views]]; | |
| 126 | |
| 127 [self.view addConstraints: | |
| 128 [NSLayoutConstraint | |
| 129 constraintsWithVisualFormat:@"|-[titleLabel]-|" | |
| 130 options:NSLayoutFormatAlignAllCenterX | |
| 131 metrics:metrics | |
| 132 views:views]]; | |
| 133 [self.view addConstraints:[NSLayoutConstraint | |
| 134 constraintsWithVisualFormat:@"|[entryView]|" | |
| 135 options:0 | |
| 136 metrics:metrics | |
| 137 views:views]]; | |
| 138 NSString* vViewConstraint = | |
| 139 @"V:|[navBar]-[imageView(==imageSize)]-[titleLabel]-[entryView]|"; | |
| 140 [self.view addConstraints:[NSLayoutConstraint | |
| 141 constraintsWithVisualFormat:vViewConstraint | |
| 142 options:0 | |
| 143 metrics:metrics | |
| 144 views:views]]; | |
| 145 | |
| 146 [entryView addConstraints: | |
| 147 [NSLayoutConstraint | |
| 148 constraintsWithVisualFormat: | |
| 149 @"|-[pinEntry]-[pinButton(==buttonSize)]-|" | |
| 150 options:NSLayoutFormatAlignAllCenterY | |
| 151 metrics:metrics | |
| 152 views:views]]; | |
| 153 [entryView addConstraints: | |
| 154 [NSLayoutConstraint | |
| 155 constraintsWithVisualFormat:@"V:|->=padding-[pinButton]" | |
| 156 options:0 | |
| 157 metrics:metrics | |
| 158 views:views]]; | |
| 159 [entryView | |
| 160 addConstraints:[NSLayoutConstraint | |
| 161 constraintsWithVisualFormat:@"V:|->=padding-[pinEntry]" | |
| 162 options:0 | |
| 163 metrics:metrics | |
| 164 views:views]]; | |
| 165 [entryView layoutIfNeeded]; | |
| 166 } | |
| 167 | |
| 168 - (void)viewWillAppear:(BOOL)animated { | |
| 169 [super viewWillAppear:animated]; | |
| 170 | |
| 171 [self.navigationController setNavigationBarHidden:YES animated:animated]; | |
| 172 } | |
| 173 | |
| 174 #pragma mark - Private | |
| 175 | |
| 176 - (void)didTapPinEntry:(id)sender { | |
| 177 NSLog(@"%@ was tapped.", NSStringFromClass([sender class])); | |
| 178 } | |
| 179 | |
| 180 - (void)didTapCancel:(id)sender { | |
| 181 NSLog(@"%@ was tapped.", NSStringFromClass([sender class])); | |
| 182 } | |
| 183 | |
| 184 @end | |
| OLD | NEW |