blob: 55438f17d871875338814c527b956703836fb649 [file] [log] [blame]
Anders Carlsson358f2e02018-06-04 10:24:37 +02001/*
2 * Copyright 2018 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#import "ARDBroadcastSetupViewController.h"
12
13@implementation ARDBroadcastSetupViewController {
14 UITextField *_roomNameField;
15}
16
17- (void)loadView {
18 UIView *view = [[UIView alloc] initWithFrame:CGRectZero];
19 view.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.7];
20
21 UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Icon-180"]];
22 imageView.translatesAutoresizingMaskIntoConstraints = NO;
23 [view addSubview:imageView];
24
25 _roomNameField = [[UITextField alloc] initWithFrame:CGRectZero];
26 _roomNameField.borderStyle = UITextBorderStyleRoundedRect;
27 _roomNameField.font = [UIFont systemFontOfSize:14.0];
28 _roomNameField.translatesAutoresizingMaskIntoConstraints = NO;
29 _roomNameField.placeholder = @"Room name";
30 _roomNameField.returnKeyType = UIReturnKeyDone;
31 _roomNameField.delegate = self;
32 [view addSubview:_roomNameField];
33
34 UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeSystem];
35 doneButton.translatesAutoresizingMaskIntoConstraints = NO;
36 doneButton.titleLabel.font = [UIFont systemFontOfSize:20.0];
37 [doneButton setTitle:@"Done" forState:UIControlStateNormal];
38 [doneButton addTarget:self
39 action:@selector(userDidFinishSetup)
40 forControlEvents:UIControlEventTouchUpInside];
41 [view addSubview:doneButton];
42
43 UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeSystem];
44 cancelButton.translatesAutoresizingMaskIntoConstraints = NO;
45 cancelButton.titleLabel.font = [UIFont systemFontOfSize:20.0];
46 [cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
47 [cancelButton addTarget:self
48 action:@selector(userDidCancelSetup)
49 forControlEvents:UIControlEventTouchUpInside];
50 [view addSubview:cancelButton];
51
52 UILayoutGuide *margin = view.layoutMarginsGuide;
53 [imageView.widthAnchor constraintEqualToConstant:60.0].active = YES;
54 [imageView.heightAnchor constraintEqualToConstant:60.0].active = YES;
55 [imageView.topAnchor constraintEqualToAnchor:margin.topAnchor constant:20].active = YES;
56 [imageView.centerXAnchor constraintEqualToAnchor:view.centerXAnchor].active = YES;
57
58 [_roomNameField.leadingAnchor constraintEqualToAnchor:margin.leadingAnchor].active = YES;
59 [_roomNameField.topAnchor constraintEqualToAnchor:imageView.bottomAnchor constant:20].active =
60 YES;
61 [_roomNameField.trailingAnchor constraintEqualToAnchor:margin.trailingAnchor].active = YES;
62
63 [doneButton.leadingAnchor constraintEqualToAnchor:margin.leadingAnchor].active = YES;
64 [doneButton.bottomAnchor constraintEqualToAnchor:margin.bottomAnchor constant:-20].active = YES;
65
66 [cancelButton.trailingAnchor constraintEqualToAnchor:margin.trailingAnchor].active = YES;
67 [cancelButton.bottomAnchor constraintEqualToAnchor:margin.bottomAnchor constant:-20].active = YES;
68
69 UITapGestureRecognizer *tgr =
70 [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)];
71 [view addGestureRecognizer:tgr];
72
73 self.view = view;
74}
75
76- (IBAction)didTap:(id)sender {
77 [self.view endEditing:YES];
78}
79
80- (void)userDidFinishSetup {
81 // URL of the resource where broadcast can be viewed that will be returned to the application
82 NSURL *broadcastURL = [NSURL
83 URLWithString:[NSString stringWithFormat:@"https://appr.tc/r/%@", _roomNameField.text]];
84
85 // Dictionary with setup information that will be provided to broadcast extension when broadcast
86 // is started
87 NSDictionary *setupInfo = @{@"roomName" : _roomNameField.text};
88
89 // Tell ReplayKit that the extension is finished setting up and can begin broadcasting
90 [self.extensionContext completeRequestWithBroadcastURL:broadcastURL setupInfo:setupInfo];
91}
92
93- (void)userDidCancelSetup {
94 // Tell ReplayKit that the extension was cancelled by the user
95 [self.extensionContext cancelRequestWithError:[NSError errorWithDomain:@"com.google.AppRTCMobile"
96 code:-1
97 userInfo:nil]];
98}
99
100#pragma mark - UITextFieldDelegate
101
102- (BOOL)textFieldShouldReturn:(UITextField *)textField {
103 [self userDidFinishSetup];
104 return YES;
105}
106
107@end