summaryrefslogtreecommitdiff
path: root/SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m
diff options
context:
space:
mode:
Diffstat (limited to 'SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m')
-rw-r--r--SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m123
1 files changed, 123 insertions, 0 deletions
diff --git a/SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m b/SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m
new file mode 100644
index 000000000..9cb0110c7
--- /dev/null
+++ b/SmartDeviceLink_Example/Classes/ConnectionTCPTableViewController.m
@@ -0,0 +1,123 @@
+//
+// ConnectionTCPTableViewController.m
+// SmartDeviceLink-iOS
+
+@import AVFoundation;
+
+#import "ConnectionTCPTableViewController.h"
+
+#import "Preferences.h"
+#import "ProxyManager.h"
+#import "SDLStreamingMediaManager.h"
+
+#import <MobileCoreServices/MobileCoreServices.h>
+
+@interface ConnectionTCPTableViewController ()
+
+@property (weak, nonatomic) IBOutlet UITextField *ipAddressTextField;
+@property (weak, nonatomic) IBOutlet UITextField *portTextField;
+
+@property (weak, nonatomic) IBOutlet UITableViewCell *connectTableViewCell;
+@property (weak, nonatomic) IBOutlet UIButton *connectButton;
+
+@end
+
+
+
+@implementation ConnectionTCPTableViewController
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ // Observe Proxy Manager state
+ [[ProxyManager sharedManager] addObserver:self forKeyPath:NSStringFromSelector(@selector(state)) options:(NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew) context:nil];
+
+ // Tableview setup
+ self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
+ self.ipAddressTextField.text = [Preferences sharedPreferences].ipAddress;
+ self.portTextField.text = [Preferences sharedPreferences].port;
+
+ // Connect Button setup
+ self.connectButton.tintColor = [UIColor whiteColor];
+}
+
+- (void)dealloc {
+ @try {
+ [[ProxyManager sharedManager] removeObserver:self forKeyPath:NSStringFromSelector(@selector(state))];
+ } @catch (NSException __unused *exception) {}
+}
+
+- (void)didReceiveMemoryWarning {
+ NSLog(@"***** MEMORY WARNING *****");
+}
+
+
+#pragma mark - IBActions
+
+- (IBAction)connectButtonWasPressed:(UIButton *)sender {
+ [Preferences sharedPreferences].ipAddress = self.ipAddressTextField.text;
+ [Preferences sharedPreferences].port = self.portTextField.text;
+
+ ProxyState state = [ProxyManager sharedManager].state;
+ switch (state) {
+ case ProxyStateStopped: {
+ [[ProxyManager sharedManager] startProxyWithTransportType:ProxyTransportTypeTCP];
+ } break;
+ case ProxyStateSearchingForConnection: {
+ [[ProxyManager sharedManager] stopProxy];
+ } break;
+ case ProxyStateConnected: {
+ [[ProxyManager sharedManager] stopProxy];
+ } break;
+ default: break;
+ }
+}
+
+
+#pragma mark - Table view delegate
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+ if (indexPath.section != 0) {
+ return;
+ }
+
+ switch (indexPath.row) {
+ case 0: {
+ [self.ipAddressTextField becomeFirstResponder];
+ } break;
+ case 1: {
+ [self.portTextField becomeFirstResponder];
+ } break;
+ default: break;
+ }
+}
+
+
+#pragma mark - KVO
+
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
+ if ([keyPath isEqualToString:NSStringFromSelector(@selector(state))]) {
+ ProxyState newState = [change[NSKeyValueChangeNewKey] unsignedIntegerValue];
+ [self proxyManagerDidChangeState:newState];
+ }
+}
+
+- (void)proxyManagerDidChangeState:(ProxyState)newState {
+ switch (newState) {
+ case ProxyStateStopped: {
+ self.connectTableViewCell.backgroundColor = [UIColor redColor];
+ self.connectButton.titleLabel.text = @"Connect";
+ } break;
+ case ProxyStateSearchingForConnection: {
+ self.connectTableViewCell.backgroundColor = [UIColor blueColor];
+ self.connectButton.titleLabel.text = @"Stop Searching";
+ } break;
+ case ProxyStateConnected: {
+ self.connectTableViewCell.backgroundColor = [UIColor greenColor];
+ self.connectButton.titleLabel.text = @"Disconnect";
+ } break;
+ default: break;
+ }
+}
+
+@end