Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Unified Diff: webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m

Issue 1334003002: Loopback mode for AppRTCDemo on iOS. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Add call options header and start call button Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m
diff --git a/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m b/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m
index 295b59c5541e38852f61e320a48add4aade16e14..ad2a5ef85c003b4c7190d30f6bc9b53753264683 100644
--- a/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m
+++ b/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m
@@ -18,6 +18,7 @@ static CGFloat const kStatusBarHeight = 20;
static CGFloat const kRoomTextButtonSize = 40;
static CGFloat const kRoomTextFieldHeight = 40;
static CGFloat const kRoomTextFieldMargin = 8;
+static CGFloat const kCallControlMargin = 8;
static CGFloat const kAppLabelHeight = 20;
@class ARDRoomTextField;
@@ -29,6 +30,7 @@ static CGFloat const kAppLabelHeight = 20;
// Helper view that contains a text field and a clear button.
@interface ARDRoomTextField : UIView <UITextFieldDelegate>
@property(nonatomic, weak) id<ARDRoomTextFieldDelegate> delegate;
+@property(nonatomic, readonly) NSString *roomText;
@end
@implementation ARDRoomTextField {
@@ -88,6 +90,10 @@ static CGFloat const kAppLabelHeight = 20;
return size;
}
+- (NSString *)roomText {
+ return _roomText.text;
+}
+
#pragma mark - UITextFieldDelegate
- (void)textFieldDidEndEditing:(UITextField *)textField {
@@ -125,6 +131,12 @@ static CGFloat const kAppLabelHeight = 20;
@implementation ARDMainView {
UILabel *_appLabel;
ARDRoomTextField *_roomText;
+ UILabel *_callOptionsLabel;
+ UISwitch *_audioOnlySwitch;
+ UILabel *_audioOnlyLabel;
+ UISwitch *_loopbackSwitch;
+ UILabel *_loopbackLabel;
+ UIButton *_startCallButton;
}
@synthesize delegate = _delegate;
@@ -142,6 +154,50 @@ static CGFloat const kAppLabelHeight = 20;
_roomText.delegate = self;
[self addSubview:_roomText];
+ UIFont *controlFont = [UIFont fontWithName:@"Roboto" size:20];
+ UIColor *controlFontColor = [UIColor colorWithWhite:0 alpha:.6];
+
+ _callOptionsLabel = [[UILabel alloc] initWithFrame:CGRectZero];
+ _callOptionsLabel.text = @"Call Options";
+ _callOptionsLabel.font = controlFont;
+ _callOptionsLabel.textColor = controlFontColor;
+ [_callOptionsLabel sizeToFit];
+ [self addSubview:_callOptionsLabel];
+
+ _audioOnlySwitch = [[UISwitch alloc] initWithFrame:CGRectZero];
+ [_audioOnlySwitch sizeToFit];
+ [self addSubview:_audioOnlySwitch];
+
+ _audioOnlyLabel = [[UILabel alloc] initWithFrame:CGRectZero];
+ _audioOnlyLabel.text = @"Audio only";
+ _audioOnlyLabel.font = controlFont;
+ _audioOnlyLabel.textColor = controlFontColor;
+ [_audioOnlyLabel sizeToFit];
+ [self addSubview:_audioOnlyLabel];
+
+ _loopbackSwitch = [[UISwitch alloc] initWithFrame:CGRectZero];
+ [_loopbackSwitch sizeToFit];
+ [self addSubview:_loopbackSwitch];
+
+ _loopbackLabel = [[UILabel alloc] initWithFrame:CGRectZero];
+ _loopbackLabel.text = @"Loopback mode";
+ _loopbackLabel.font = controlFont;
+ _loopbackLabel.textColor = controlFontColor;
+ [_loopbackLabel sizeToFit];
+ [self addSubview:_loopbackLabel];
+
+ _startCallButton = [[UIButton alloc] initWithFrame:CGRectZero];
tkchin_webrtc 2015/10/01 20:11:01 nits: make it look like a button: _startCallB
Chuck 2015/10/02 14:27:08 Done.
+ [_startCallButton setTitle:@"Start call"
+ forState:UIControlStateNormal];
+ _startCallButton.titleLabel.font = controlFont;
+ [_startCallButton setTitleColor:controlFontColor
+ forState:UIControlStateNormal];
+ [_startCallButton sizeToFit];
+ [_startCallButton addTarget:self
+ action:@selector(onStartCall:)
+ forControlEvents:UIControlEventTouchUpInside];
+ [self addSubview:_startCallButton];
+
self.backgroundColor = [UIColor whiteColor];
}
return self;
@@ -156,13 +212,69 @@ static CGFloat const kAppLabelHeight = 20;
roomTextWidth,
roomTextHeight);
_appLabel.center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
+
+ CGFloat callOptionsLabelTop =
+ CGRectGetMaxY(_roomText.frame) + kCallControlMargin * 4;
+ _callOptionsLabel.frame = CGRectMake(kCallControlMargin,
+ callOptionsLabelTop,
+ _callOptionsLabel.frame.size.width,
+ _callOptionsLabel.frame.size.height);
+
+ CGFloat audioOnlyTop =
+ CGRectGetMaxY(_callOptionsLabel.frame) + kCallControlMargin * 2;
+ CGRect audioOnlyRect = CGRectMake(kCallControlMargin * 3,
+ audioOnlyTop,
tkchin_webrtc 2015/10/01 20:11:01 align args
Chuck 2015/10/02 14:27:08 Done.
+ _audioOnlySwitch.frame.size.width,
+ _audioOnlySwitch.frame.size.height);
+ _audioOnlySwitch.frame = audioOnlyRect;
+ CGFloat audioOnlyLabelCenterX = CGRectGetMaxX(audioOnlyRect) +
+ kCallControlMargin + _audioOnlyLabel.frame.size.width / 2;
+ _audioOnlyLabel.center = CGPointMake(audioOnlyLabelCenterX,
+ CGRectGetMidY(audioOnlyRect));
+
+ CGFloat loopbackModeTop =
+ CGRectGetMaxY(_audioOnlySwitch.frame) + kCallControlMargin;
+ CGRect loopbackModeRect = CGRectMake(kCallControlMargin * 3,
+ loopbackModeTop,
+ _loopbackSwitch.frame.size.width,
+ _loopbackSwitch.frame.size.height);
+ _loopbackSwitch.frame = loopbackModeRect;
+ CGFloat loopbackModeLabelCenterX = CGRectGetMaxX(loopbackModeRect) +
+ kCallControlMargin + _loopbackLabel.frame.size.width / 2;
+ _loopbackLabel.center = CGPointMake(loopbackModeLabelCenterX,
+ CGRectGetMidY(loopbackModeRect));
+
+ CGFloat startCallTop =
+ CGRectGetMaxY(loopbackModeRect) + kCallControlMargin * 3;
+ _startCallButton.frame = CGRectMake(kCallControlMargin * 4,
tkchin_webrtc 2015/10/01 20:11:01 nit: align button to left, and align args. _sta
Chuck 2015/10/02 14:27:08 Done.
+ startCallTop,
+ _startCallButton.frame.size.width,
+ _startCallButton.frame.size.height);
}
#pragma mark - ARDRoomTextFieldDelegate
- (void)roomTextField:(ARDRoomTextField *)roomTextField
didInputRoom:(NSString *)room {
- [_delegate mainView:self didInputRoom:room];
+ [_delegate mainView:self
+ didInputRoom:room
+ isLoopback:NO
+ isAudioOnly:_audioOnlySwitch.isOn];
+}
+
+#pragma mark - Private
+
+- (void)onStartCall:(id)sender {
+ NSString *room = _roomText.roomText;
+ // If this is a loopback call, allow a generated room name.
+ if (!room.length && _loopbackSwitch.isOn) {
+ room = [[NSUUID UUID] UUIDString];
+ }
+ room = [room stringByReplacingOccurrencesOfString:@"-" withString:@""];
+ [_delegate mainView:self
+ didInputRoom:room
+ isLoopback:_loopbackSwitch.isOn
+ isAudioOnly:_audioOnlySwitch.isOn];
}
@end

Powered by Google App Engine
This is Rietveld 408576698