diff options
Diffstat (limited to 'third_party/libwebrtc/examples/objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSetupViewController.m')
-rw-r--r-- | third_party/libwebrtc/examples/objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSetupViewController.m | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/third_party/libwebrtc/examples/objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSetupViewController.m b/third_party/libwebrtc/examples/objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSetupViewController.m new file mode 100644 index 0000000000..55438f17d8 --- /dev/null +++ b/third_party/libwebrtc/examples/objc/AppRTCMobile/ios/broadcast_extension/ARDBroadcastSetupViewController.m @@ -0,0 +1,107 @@ +/* + * 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 |