Updating the AppRTCMobile iOS UI.

Bigger buttons, fewer taps makes it less tedious to test loopback calls
locally. See webrtc:9240 for details.

Bug: webrtc:9240
Change-Id: I0dfcbc6020f27f284eae25903b2bdc1f272221b6
Reviewed-on: https://webrtc-review.googlesource.com/74583
Commit-Queue: Peter Hanspers <peterhanspers@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23137}
This commit is contained in:
Peter Hanspers
2018-05-07 11:04:24 +02:00
committed by Commit Bot
parent 1ffb3747bd
commit 823f9135f8

View File

@ -29,7 +29,7 @@ static CGFloat const kCallControlMargin = 8;
if (self = [super initWithFrame:frame]) { if (self = [super initWithFrame:frame]) {
_roomText = [[UITextField alloc] initWithFrame:CGRectZero]; _roomText = [[UITextField alloc] initWithFrame:CGRectZero];
_roomText.borderStyle = UITextBorderStyleNone; _roomText.borderStyle = UITextBorderStyleNone;
_roomText.font = [UIFont fontWithName:@"Roboto" size:12]; _roomText.font = [UIFont systemFontOfSize:12];
_roomText.placeholder = @"Room name"; _roomText.placeholder = @"Room name";
_roomText.autocorrectionType = UITextAutocorrectionTypeNo; _roomText.autocorrectionType = UITextAutocorrectionTypeNo;
_roomText.autocapitalizationType = UITextAutocapitalizationTypeNone; _roomText.autocapitalizationType = UITextAutocapitalizationTypeNone;
@ -73,10 +73,8 @@ static CGFloat const kCallControlMargin = 8;
@implementation ARDMainView { @implementation ARDMainView {
ARDRoomTextField *_roomText; ARDRoomTextField *_roomText;
UILabel *_callOptionsLabel; UIButton *_startRegularCallButton;
UISwitch *_loopbackSwitch; UIButton *_startLoopbackCallButton;
UILabel *_loopbackLabel;
UIButton *_startCallButton;
UIButton *_audioLoopButton; UIButton *_audioLoopButton;
} }
@ -88,40 +86,38 @@ static CGFloat const kCallControlMargin = 8;
_roomText = [[ARDRoomTextField alloc] initWithFrame:CGRectZero]; _roomText = [[ARDRoomTextField alloc] initWithFrame:CGRectZero];
[self addSubview:_roomText]; [self addSubview:_roomText];
UIFont *controlFont = [UIFont fontWithName:@"Roboto" size:20]; UIFont *controlFont = [UIFont boldSystemFontOfSize:18.0];
UIColor *controlFontColor = [UIColor colorWithWhite:0 alpha:.6]; UIColor *controlFontColor = [UIColor whiteColor];
_callOptionsLabel = [[UILabel alloc] initWithFrame:CGRectZero]; _startRegularCallButton = [UIButton buttonWithType:UIButtonTypeSystem];
_callOptionsLabel.text = @"Call Options"; _startRegularCallButton.titleLabel.font = controlFont;
_callOptionsLabel.font = controlFont; [_startRegularCallButton setTitleColor:controlFontColor forState:UIControlStateNormal];
_callOptionsLabel.textColor = controlFontColor; _startRegularCallButton.backgroundColor
[_callOptionsLabel sizeToFit]; = [UIColor colorWithRed:66.0/255.0 green:200.0/255.0 blue:90.0/255.0 alpha:1.0];
[self addSubview:_callOptionsLabel]; [_startRegularCallButton setTitle:@"Call room" forState:UIControlStateNormal];
[_startRegularCallButton addTarget:self
_loopbackSwitch = [[UISwitch alloc] initWithFrame:CGRectZero]; action:@selector(onStartRegularCall:)
[_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 buttonWithType:UIButtonTypeSystem];
[_startCallButton setTitle:@"Start call"
forState:UIControlStateNormal];
_startCallButton.titleLabel.font = controlFont;
[_startCallButton sizeToFit];
[_startCallButton addTarget:self
action:@selector(onStartCall:)
forControlEvents:UIControlEventTouchUpInside]; forControlEvents:UIControlEventTouchUpInside];
[self addSubview:_startCallButton]; [self addSubview:_startRegularCallButton];
_startLoopbackCallButton = [UIButton buttonWithType:UIButtonTypeSystem];
_startLoopbackCallButton.titleLabel.font = controlFont;
[_startLoopbackCallButton setTitleColor:controlFontColor forState:UIControlStateNormal];
_startLoopbackCallButton.backgroundColor =
[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0];
[_startLoopbackCallButton setTitle:@"Loopback call" forState:UIControlStateNormal];
[_startLoopbackCallButton addTarget:self
action:@selector(onStartLoopbackCall:)
forControlEvents:UIControlEventTouchUpInside];
[self addSubview:_startLoopbackCallButton];
// Used to test what happens to sounds when calls are in progress. // Used to test what happens to sounds when calls are in progress.
_audioLoopButton = [UIButton buttonWithType:UIButtonTypeSystem]; _audioLoopButton = [UIButton buttonWithType:UIButtonTypeSystem];
_audioLoopButton.titleLabel.font = controlFont; _audioLoopButton.titleLabel.font = controlFont;
[_audioLoopButton setTitleColor:controlFontColor forState:UIControlStateNormal];
_audioLoopButton.backgroundColor =
[UIColor colorWithRed:1.0 green:149.0/255.0 blue:0.0 alpha:1.0];
[self updateAudioLoopButton]; [self updateAudioLoopButton];
[_audioLoopButton addTarget:self [_audioLoopButton addTarget:self
action:@selector(onToggleAudioLoop:) action:@selector(onToggleAudioLoop:)
@ -146,51 +142,42 @@ static CGFloat const kCallControlMargin = 8;
CGFloat roomTextWidth = bounds.size.width - 2 * kRoomTextFieldMargin; CGFloat roomTextWidth = bounds.size.width - 2 * kRoomTextFieldMargin;
CGFloat roomTextHeight = [_roomText sizeThatFits:bounds.size].height; CGFloat roomTextHeight = [_roomText sizeThatFits:bounds.size].height;
_roomText.frame = _roomText.frame =
CGRectMake(kRoomTextFieldMargin, kRoomTextFieldMargin, roomTextWidth, roomTextHeight); CGRectMake(kRoomTextFieldMargin, kRoomTextFieldMargin, roomTextWidth,
roomTextHeight);
CGFloat callOptionsLabelTop = CGFloat buttonHeight =
CGRectGetMaxY(_roomText.frame) + kCallControlMargin * 4; (CGRectGetMaxY(self.bounds) - CGRectGetMaxY(_roomText.frame) - kCallControlMargin * 4) / 3;
_callOptionsLabel.frame = CGRectMake(kCallControlMargin,
callOptionsLabelTop,
_callOptionsLabel.frame.size.width,
_callOptionsLabel.frame.size.height);
CGFloat loopbackModeTop = CGRectGetMaxY(_callOptionsLabel.frame) + kCallControlMargin * 2; CGFloat regularCallFrameTop = CGRectGetMaxY(_roomText.frame) + kCallControlMargin;
CGRect loopbackModeRect = CGRectMake(kCallControlMargin * 3, CGRect regularCallFrame = CGRectMake(kCallControlMargin,
loopbackModeTop, regularCallFrameTop,
_loopbackSwitch.frame.size.width, bounds.size.width - 2*kCallControlMargin,
_loopbackSwitch.frame.size.height); buttonHeight);
_loopbackSwitch.frame = loopbackModeRect;
CGFloat loopbackModeLabelCenterX = CGRectGetMaxX(loopbackModeRect) +
kCallControlMargin + _loopbackLabel.frame.size.width / 2;
_loopbackLabel.center = CGPointMake(loopbackModeLabelCenterX,
CGRectGetMidY(loopbackModeRect));
CGFloat audioLoopTop = CGRectGetMaxY(loopbackModeRect) + kCallControlMargin * 3; CGFloat loopbackCallFrameTop = CGRectGetMaxY(regularCallFrame) + kCallControlMargin;
_audioLoopButton.frame = CGRectMake(kCallControlMargin, CGRect loopbackCallFrame = CGRectMake(kCallControlMargin,
loopbackCallFrameTop,
bounds.size.width - 2*kCallControlMargin,
buttonHeight);
CGFloat audioLoopTop = CGRectGetMaxY(loopbackCallFrame) + kCallControlMargin;
CGRect audioLoopFrame = CGRectMake(kCallControlMargin,
audioLoopTop, audioLoopTop,
_audioLoopButton.frame.size.width, bounds.size.width - 2*kCallControlMargin,
_audioLoopButton.frame.size.height); buttonHeight);
CGFloat startCallTop = _startRegularCallButton.frame = regularCallFrame;
CGRectGetMaxY(_audioLoopButton.frame) + kCallControlMargin * 3; _startLoopbackCallButton.frame = loopbackCallFrame;
_startCallButton.frame = CGRectMake(kCallControlMargin, _audioLoopButton.frame = audioLoopFrame;
startCallTop,
_startCallButton.frame.size.width,
_startCallButton.frame.size.height);
} }
#pragma mark - Private #pragma mark - Private
- (void)updateAudioLoopButton { - (void)updateAudioLoopButton {
if (_isAudioLoopPlaying) { if (_isAudioLoopPlaying) {
[_audioLoopButton setTitle:@"Stop sound" [_audioLoopButton setTitle:@"Stop sound" forState:UIControlStateNormal];
forState:UIControlStateNormal];
[_audioLoopButton sizeToFit];
} else { } else {
[_audioLoopButton setTitle:@"Play sound" [_audioLoopButton setTitle:@"Play sound" forState:UIControlStateNormal];
forState:UIControlStateNormal];
[_audioLoopButton sizeToFit];
} }
} }
@ -198,8 +185,12 @@ static CGFloat const kCallControlMargin = 8;
[_delegate mainViewDidToggleAudioLoop:self]; [_delegate mainViewDidToggleAudioLoop:self];
} }
- (void)onStartCall:(id)sender { - (void)onStartRegularCall:(id)sender {
[_delegate mainView:self didInputRoom:_roomText.roomText isLoopback:_loopbackSwitch.isOn]; [_delegate mainView:self didInputRoom:_roomText.roomText isLoopback:NO];
}
- (void)onStartLoopbackCall:(id)sender {
[_delegate mainView:self didInputRoom:_roomText.roomText isLoopback:YES];
} }
@end @end