Source code

Revision control

Copy as Markdown

Other Tools

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