| /* |
| * Copyright 2018 The WebRTC Project Authors. All rights reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #import "ARDBroadcastSetupViewController.h" |
| |
| @implementation ARDBroadcastSetupViewController { |
| UITextField *_roomNameField; |
| } |
| |
| - (void)loadView { |
| UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; |
| view.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.7]; |
| |
| UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Icon-180"]]; |
| imageView.translatesAutoresizingMaskIntoConstraints = NO; |
| [view addSubview:imageView]; |
| |
| _roomNameField = [[UITextField alloc] initWithFrame:CGRectZero]; |
| _roomNameField.borderStyle = UITextBorderStyleRoundedRect; |
| _roomNameField.font = [UIFont systemFontOfSize:14.0]; |
| _roomNameField.translatesAutoresizingMaskIntoConstraints = NO; |
| _roomNameField.placeholder = @"Room name"; |
| _roomNameField.returnKeyType = UIReturnKeyDone; |
| _roomNameField.delegate = self; |
| [view addSubview:_roomNameField]; |
| |
| UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeSystem]; |
| doneButton.translatesAutoresizingMaskIntoConstraints = NO; |
| doneButton.titleLabel.font = [UIFont systemFontOfSize:20.0]; |
| [doneButton setTitle:@"Done" forState:UIControlStateNormal]; |
| [doneButton addTarget:self |
| action:@selector(userDidFinishSetup) |
| forControlEvents:UIControlEventTouchUpInside]; |
| [view addSubview:doneButton]; |
| |
| UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeSystem]; |
| cancelButton.translatesAutoresizingMaskIntoConstraints = NO; |
| cancelButton.titleLabel.font = [UIFont systemFontOfSize:20.0]; |
| [cancelButton setTitle:@"Cancel" forState:UIControlStateNormal]; |
| [cancelButton addTarget:self |
| action:@selector(userDidCancelSetup) |
| forControlEvents:UIControlEventTouchUpInside]; |
| [view addSubview:cancelButton]; |
| |
| UILayoutGuide *margin = view.layoutMarginsGuide; |
| [imageView.widthAnchor constraintEqualToConstant:60.0].active = YES; |
| [imageView.heightAnchor constraintEqualToConstant:60.0].active = YES; |
| [imageView.topAnchor constraintEqualToAnchor:margin.topAnchor constant:20].active = YES; |
| [imageView.centerXAnchor constraintEqualToAnchor:view.centerXAnchor].active = YES; |
| |
| [_roomNameField.leadingAnchor constraintEqualToAnchor:margin.leadingAnchor].active = YES; |
| [_roomNameField.topAnchor constraintEqualToAnchor:imageView.bottomAnchor constant:20].active = |
| YES; |
| [_roomNameField.trailingAnchor constraintEqualToAnchor:margin.trailingAnchor].active = YES; |
| |
| [doneButton.leadingAnchor constraintEqualToAnchor:margin.leadingAnchor].active = YES; |
| [doneButton.bottomAnchor constraintEqualToAnchor:margin.bottomAnchor constant:-20].active = YES; |
| |
| [cancelButton.trailingAnchor constraintEqualToAnchor:margin.trailingAnchor].active = YES; |
| [cancelButton.bottomAnchor constraintEqualToAnchor:margin.bottomAnchor constant:-20].active = YES; |
| |
| UITapGestureRecognizer *tgr = |
| [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)]; |
| [view addGestureRecognizer:tgr]; |
| |
| self.view = view; |
| } |
| |
| - (IBAction)didTap:(id)sender { |
| [self.view endEditing:YES]; |
| } |
| |
| - (void)userDidFinishSetup { |
| // URL of the resource where broadcast can be viewed that will be returned to the application |
| NSURL *broadcastURL = [NSURL |
| URLWithString:[NSString stringWithFormat:@"https://appr.tc/r/%@", _roomNameField.text]]; |
| |
| // Dictionary with setup information that will be provided to broadcast extension when broadcast |
| // is started |
| NSDictionary *setupInfo = @{@"roomName" : _roomNameField.text}; |
| |
| // Tell ReplayKit that the extension is finished setting up and can begin broadcasting |
| [self.extensionContext completeRequestWithBroadcastURL:broadcastURL setupInfo:setupInfo]; |
| } |
| |
| - (void)userDidCancelSetup { |
| // Tell ReplayKit that the extension was cancelled by the user |
| [self.extensionContext cancelRequestWithError:[NSError errorWithDomain:@"com.google.AppRTCMobile" |
| code:-1 |
| userInfo:nil]]; |
| } |
| |
| #pragma mark - UITextFieldDelegate |
| |
| - (BOOL)textFieldShouldReturn:(UITextField *)textField { |
| [self userDidFinishSetup]; |
| return YES; |
| } |
| |
| @end |