/* * 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