Index: talk/examples/objc/AppRTCDemo/ios/ARDMainView.m |
diff --git a/talk/examples/objc/AppRTCDemo/ios/ARDMainView.m b/talk/examples/objc/AppRTCDemo/ios/ARDMainView.m |
deleted file mode 100644 |
index 673bf7b7d97ed094933ad4272850126c81c2d680..0000000000000000000000000000000000000000 |
--- a/talk/examples/objc/AppRTCDemo/ios/ARDMainView.m |
+++ /dev/null |
@@ -1,185 +0,0 @@ |
-/* |
- * libjingle |
- * Copyright 2015 Google Inc. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions are met: |
- * |
- * 1. Redistributions of source code must retain the above copyright notice, |
- * this list of conditions and the following disclaimer. |
- * 2. Redistributions in binary form must reproduce the above copyright notice, |
- * this list of conditions and the following disclaimer in the documentation |
- * and/or other materials provided with the distribution. |
- * 3. The name of the author may not be used to endorse or promote products |
- * derived from this software without specific prior written permission. |
- * |
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED |
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO |
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- */ |
- |
-#import "ARDMainView.h" |
- |
-#import "UIImage+ARDUtilities.h" |
- |
-// TODO(tkchin): retrieve status bar height dynamically. |
-static CGFloat const kStatusBarHeight = 20; |
- |
-static CGFloat const kRoomTextButtonSize = 40; |
-static CGFloat const kRoomTextFieldHeight = 40; |
-static CGFloat const kRoomTextFieldMargin = 8; |
-static CGFloat const kAppLabelHeight = 20; |
- |
-@class ARDRoomTextField; |
-@protocol ARDRoomTextFieldDelegate <NSObject> |
-- (void)roomTextField:(ARDRoomTextField *)roomTextField |
- didInputRoom:(NSString *)room; |
-@end |
- |
-// Helper view that contains a text field and a clear button. |
-@interface ARDRoomTextField : UIView <UITextFieldDelegate> |
-@property(nonatomic, weak) id<ARDRoomTextFieldDelegate> delegate; |
-@end |
- |
-@implementation ARDRoomTextField { |
- UITextField *_roomText; |
- UIButton *_clearButton; |
-} |
- |
-@synthesize delegate = _delegate; |
- |
-- (instancetype)initWithFrame:(CGRect)frame { |
- if (self = [super initWithFrame:frame]) { |
- _roomText = [[UITextField alloc] initWithFrame:CGRectZero]; |
- _roomText.borderStyle = UITextBorderStyleNone; |
- _roomText.font = [UIFont fontWithName:@"Roboto" size:12]; |
- _roomText.placeholder = @"Room name"; |
- _roomText.delegate = self; |
- [_roomText addTarget:self |
- action:@selector(textFieldDidChange:) |
- forControlEvents:UIControlEventEditingChanged]; |
- [self addSubview:_roomText]; |
- |
- _clearButton = [UIButton buttonWithType:UIButtonTypeCustom]; |
- UIImage *image = [UIImage imageForName:@"ic_clear_black_24dp.png" |
- color:[UIColor colorWithWhite:0 alpha:.4]]; |
- |
- [_clearButton setImage:image forState:UIControlStateNormal]; |
- [_clearButton addTarget:self |
- action:@selector(onClear:) |
- forControlEvents:UIControlEventTouchUpInside]; |
- _clearButton.hidden = YES; |
- [self addSubview:_clearButton]; |
- |
- // Give rounded corners and a light gray border. |
- self.layer.borderWidth = 1; |
- self.layer.borderColor = [[UIColor lightGrayColor] CGColor]; |
- self.layer.cornerRadius = 2; |
- } |
- return self; |
-} |
- |
-- (void)layoutSubviews { |
- CGRect bounds = self.bounds; |
- _clearButton.frame = CGRectMake(CGRectGetMaxX(bounds) - kRoomTextButtonSize, |
- CGRectGetMinY(bounds), |
- kRoomTextButtonSize, |
- kRoomTextButtonSize); |
- _roomText.frame = CGRectMake( |
- CGRectGetMinX(bounds) + kRoomTextFieldMargin, |
- CGRectGetMinY(bounds), |
- CGRectGetMinX(_clearButton.frame) - CGRectGetMinX(bounds) - |
- kRoomTextFieldMargin, |
- kRoomTextFieldHeight); |
-} |
- |
-- (CGSize)sizeThatFits:(CGSize)size { |
- size.height = kRoomTextFieldHeight; |
- return size; |
-} |
- |
-#pragma mark - UITextFieldDelegate |
- |
-- (void)textFieldDidEndEditing:(UITextField *)textField { |
- [_delegate roomTextField:self didInputRoom:textField.text]; |
-} |
- |
-- (BOOL)textFieldShouldReturn:(UITextField *)textField { |
- // There is no other control that can take focus, so manually resign focus |
- // when return (Join) is pressed to trigger |textFieldDidEndEditing|. |
- [textField resignFirstResponder]; |
- return YES; |
-} |
- |
-#pragma mark - Private |
- |
-- (void)textFieldDidChange:(id)sender { |
- [self updateClearButton]; |
-} |
- |
-- (void)onClear:(id)sender { |
- _roomText.text = @""; |
- [self updateClearButton]; |
- [_roomText resignFirstResponder]; |
-} |
- |
-- (void)updateClearButton { |
- _clearButton.hidden = _roomText.text.length == 0; |
-} |
- |
-@end |
- |
-@interface ARDMainView () <ARDRoomTextFieldDelegate> |
-@end |
- |
-@implementation ARDMainView { |
- UILabel *_appLabel; |
- ARDRoomTextField *_roomText; |
-} |
- |
-@synthesize delegate = _delegate; |
- |
-- (instancetype)initWithFrame:(CGRect)frame { |
- if (self = [super initWithFrame:frame]) { |
- _appLabel = [[UILabel alloc] initWithFrame:CGRectZero]; |
- _appLabel.text = @"AppRTCDemo"; |
- _appLabel.font = [UIFont fontWithName:@"Roboto" size:34]; |
- _appLabel.textColor = [UIColor colorWithWhite:0 alpha:.2]; |
- [_appLabel sizeToFit]; |
- [self addSubview:_appLabel]; |
- |
- _roomText = [[ARDRoomTextField alloc] initWithFrame:CGRectZero]; |
- _roomText.delegate = self; |
- [self addSubview:_roomText]; |
- |
- self.backgroundColor = [UIColor whiteColor]; |
- } |
- return self; |
-} |
- |
-- (void)layoutSubviews { |
- CGRect bounds = self.bounds; |
- CGFloat roomTextWidth = bounds.size.width - 2 * kRoomTextFieldMargin; |
- CGFloat roomTextHeight = [_roomText sizeThatFits:bounds.size].height; |
- _roomText.frame = CGRectMake(kRoomTextFieldMargin, |
- kStatusBarHeight + kRoomTextFieldMargin, |
- roomTextWidth, |
- roomTextHeight); |
- _appLabel.center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds)); |
-} |
- |
-#pragma mark - ARDRoomTextFieldDelegate |
- |
-- (void)roomTextField:(ARDRoomTextField *)roomTextField |
- didInputRoom:(NSString *)room { |
- [_delegate mainView:self didInputRoom:room]; |
-} |
- |
-@end |