From 412c5c251658e8280cc0aa9dc543e4d4ad1f476f Mon Sep 17 00:00:00 2001 From: Diego Waxemberg Date: Sun, 26 Oct 2014 02:15:53 -0400 Subject: [PATCH] new ui is almost fully functional - add hosts - pair to host - get app list - launch app - resume app --- Limelight.xcodeproj/project.pbxproj | 14 +- Limelight/App.h | 4 +- Limelight/App.m | 2 + .../AddComputer.imageset/Contents.json | 23 ++ .../limelight_computer_add_1x.png | Bin 0 -> 11592 bytes .../limelight_computer_add_2x.png | Bin 0 -> 15646 bytes .../limelight_computer_add_3x.png | Bin 0 -> 25270 bytes .../AddComputerIcon.imageset/Contents.json | 21 ++ .../limelight_computer_add_icon_2x.png | Bin 0 -> 1964 bytes .../Computer.imageset/Contents.json | 4 +- .../limelight_computer_1x.png | Bin 0 -> 9502 bytes .../limelight_computer_2x-1.png | Bin 13670 -> 0 bytes .../limelight_computer_2x-2.png | Bin 13670 -> 0 bytes .../limelight_computer_2x.png | Bin 13670 -> 13331 bytes .../limelight_computer_3x.png | Bin 0 -> 22832 bytes .../NoAppImage.imageset/Contents.json | 21 ++ .../limelight_no_app_image_2x.png | Bin 0 -> 22949 bytes Limelight/Network/AppManager.h | 23 ++ Limelight/Network/AppManager.m | 45 ++++ Limelight/Network/HttpManager.h | 2 + Limelight/Network/HttpManager.m | 66 ++++- Limelight/Network/PairManager.h | 1 + Limelight/Network/PairManager.m | 3 +- Limelight/Stream/StreamConfiguration.h | 1 + Limelight/Stream/StreamConfiguration.m | 2 +- Limelight/Stream/StreamManager.m | 8 +- Limelight/UIAppView.h | 11 +- Limelight/UIAppView.m | 30 ++- Limelight/UIComputerView.h | 12 +- Limelight/UIComputerView.m | 65 ++++- Limelight/Utility/Computer.h | 1 - Limelight/Utility/Computer.m | 9 - .../ViewControllers/MainFrameViewController.h | 5 +- .../ViewControllers/MainFrameViewController.m | 229 ++++++++++-------- .../StreamFrameViewController.m | 6 + iPad.storyboard | 30 +-- iPhone.storyboard | 22 +- 37 files changed, 480 insertions(+), 180 deletions(-) create mode 100644 Limelight/Images.xcassets/AddComputer.imageset/Contents.json create mode 100644 Limelight/Images.xcassets/AddComputer.imageset/limelight_computer_add_1x.png create mode 100644 Limelight/Images.xcassets/AddComputer.imageset/limelight_computer_add_2x.png create mode 100644 Limelight/Images.xcassets/AddComputer.imageset/limelight_computer_add_3x.png create mode 100644 Limelight/Images.xcassets/AddComputerIcon.imageset/Contents.json create mode 100644 Limelight/Images.xcassets/AddComputerIcon.imageset/limelight_computer_add_icon_2x.png create mode 100644 Limelight/Images.xcassets/Computer.imageset/limelight_computer_1x.png delete mode 100644 Limelight/Images.xcassets/Computer.imageset/limelight_computer_2x-1.png delete mode 100644 Limelight/Images.xcassets/Computer.imageset/limelight_computer_2x-2.png create mode 100644 Limelight/Images.xcassets/Computer.imageset/limelight_computer_3x.png create mode 100644 Limelight/Images.xcassets/NoAppImage.imageset/Contents.json create mode 100644 Limelight/Images.xcassets/NoAppImage.imageset/limelight_no_app_image_2x.png create mode 100644 Limelight/Network/AppManager.h create mode 100644 Limelight/Network/AppManager.m diff --git a/Limelight.xcodeproj/project.pbxproj b/Limelight.xcodeproj/project.pbxproj index 458f1879..0c12d335 100644 --- a/Limelight.xcodeproj/project.pbxproj +++ b/Limelight.xcodeproj/project.pbxproj @@ -47,6 +47,7 @@ FB8946EB19F6AFE100339C8A /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FB8946E019F6AFB800339C8A /* libcrypto.a */; }; FB8946EC19F6AFE400339C8A /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FB8946E119F6AFB800339C8A /* libssl.a */; }; FB8946ED19F6AFE800339C8A /* libopus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FB8946EA19F6AFB800339C8A /* libopus.a */; }; + FBD3494319FC9C04002D2A60 /* AppManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FBD3494219FC9C04002D2A60 /* AppManager.m */; }; FBDE86E019F7A837001C18A8 /* UIComputerView.m in Sources */ = {isa = PBXBuildFile; fileRef = FBDE86DF19F7A837001C18A8 /* UIComputerView.m */; }; FBDE86E619F82297001C18A8 /* UIAppView.m in Sources */ = {isa = PBXBuildFile; fileRef = FBDE86E519F82297001C18A8 /* UIAppView.m */; }; FBDE86E919F82315001C18A8 /* App.m in Sources */ = {isa = PBXBuildFile; fileRef = FBDE86E819F82315001C18A8 /* App.m */; }; @@ -214,12 +215,14 @@ FB8946E719F6AFB800339C8A /* opus_multistream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opus_multistream.h; sourceTree = ""; }; FB8946E819F6AFB800339C8A /* opus_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opus_types.h; sourceTree = ""; }; FB8946EA19F6AFB800339C8A /* libopus.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libopus.a; sourceTree = ""; }; + FBD3494119FC9C04002D2A60 /* AppManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppManager.h; sourceTree = ""; }; + FBD3494219FC9C04002D2A60 /* AppManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppManager.m; sourceTree = ""; }; FBDE86DE19F7A837001C18A8 /* UIComputerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIComputerView.h; sourceTree = ""; }; FBDE86DF19F7A837001C18A8 /* UIComputerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIComputerView.m; sourceTree = ""; }; FBDE86E419F82297001C18A8 /* UIAppView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIAppView.h; sourceTree = ""; }; FBDE86E519F82297001C18A8 /* UIAppView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIAppView.m; sourceTree = ""; }; - FBDE86E719F82315001C18A8 /* App.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = App.h; sourceTree = ""; }; - FBDE86E819F82315001C18A8 /* App.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = App.m; sourceTree = ""; }; + FBDE86E719F82315001C18A8 /* App.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = App.h; path = ../App.h; sourceTree = ""; }; + FBDE86E819F82315001C18A8 /* App.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = App.m; path = ../App.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -320,8 +323,6 @@ FBDE86DF19F7A837001C18A8 /* UIComputerView.m */, FBDE86E419F82297001C18A8 /* UIAppView.h */, FBDE86E519F82297001C18A8 /* UIAppView.m */, - FBDE86E719F82315001C18A8 /* App.h */, - FBDE86E819F82315001C18A8 /* App.m */, ); path = Limelight; sourceTree = ""; @@ -386,6 +387,8 @@ FB89461219F646E200339C8A /* MDNSManager.m */, FB89461319F646E200339C8A /* PairManager.h */, FB89461419F646E200339C8A /* PairManager.m */, + FBD3494119FC9C04002D2A60 /* AppManager.h */, + FBD3494219FC9C04002D2A60 /* AppManager.m */, ); path = Network; sourceTree = ""; @@ -410,6 +413,8 @@ children = ( FB89461F19F646E200339C8A /* Computer.h */, FB89462019F646E200339C8A /* Computer.m */, + FBDE86E719F82315001C18A8 /* App.h */, + FBDE86E819F82315001C18A8 /* App.m */, FB89462119F646E200339C8A /* Utils.h */, FB89462219F646E200339C8A /* Utils.m */, ); @@ -725,6 +730,7 @@ FB89462819F646E200339C8A /* CryptoManager.m in Sources */, FB89462E19F646E200339C8A /* PairManager.m in Sources */, FB290D0019B2C406004C83CF /* main.m in Sources */, + FBD3494319FC9C04002D2A60 /* AppManager.m in Sources */, FB89462A19F646E200339C8A /* ControllerSupport.m in Sources */, FB89463119F646E200339C8A /* StreamManager.m in Sources */, ); diff --git a/Limelight/App.h b/Limelight/App.h index 31eab9d5..2c35cea7 100644 --- a/Limelight/App.h +++ b/Limelight/App.h @@ -10,6 +10,8 @@ @interface App : NSObject -@property NSString* displayName; +@property NSString* appId; +@property NSString* appName; +@property UIImage* appImage; @end diff --git a/Limelight/App.m b/Limelight/App.m index 2e71b67a..f83476d1 100644 --- a/Limelight/App.m +++ b/Limelight/App.m @@ -7,7 +7,9 @@ // #import "App.h" +#import "HttpManager.h" @implementation App +@synthesize appId, appName, appImage; @end diff --git a/Limelight/Images.xcassets/AddComputer.imageset/Contents.json b/Limelight/Images.xcassets/AddComputer.imageset/Contents.json new file mode 100644 index 00000000..142a64cf --- /dev/null +++ b/Limelight/Images.xcassets/AddComputer.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "limelight_computer_add_1x.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "limelight_computer_add_2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "limelight_computer_add_3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Limelight/Images.xcassets/AddComputer.imageset/limelight_computer_add_1x.png b/Limelight/Images.xcassets/AddComputer.imageset/limelight_computer_add_1x.png new file mode 100644 index 0000000000000000000000000000000000000000..ae65f59ef7c99d7dec6f831aa01800094cd54278 GIT binary patch literal 11592 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 literal 0 HcmV?d00001 diff --git a/Limelight/Images.xcassets/AddComputer.imageset/limelight_computer_add_3x.png b/Limelight/Images.xcassets/AddComputer.imageset/limelight_computer_add_3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a63a26366cbb1caedac7d2ba80195359f0ba6980 GIT binary patch literal 25270 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 literal 0 HcmV?d00001 diff --git a/Limelight/Images.xcassets/AddComputerIcon.imageset/Contents.json b/Limelight/Images.xcassets/AddComputerIcon.imageset/Contents.json new file mode 100644 index 00000000..86541cfa --- /dev/null +++ b/Limelight/Images.xcassets/AddComputerIcon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "limelight_computer_add_icon_2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Limelight/Images.xcassets/AddComputerIcon.imageset/limelight_computer_add_icon_2x.png b/Limelight/Images.xcassets/AddComputerIcon.imageset/limelight_computer_add_icon_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..661eddd89bf78dbb6b77b16e2a5b5e5965527852 GIT binary patch literal 1964 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 TAIV~1U|{fc^>bP0l+XkKKJ;Hi diff --git a/Limelight/Images.xcassets/Computer.imageset/limelight_computer_2x-2.png b/Limelight/Images.xcassets/Computer.imageset/limelight_computer_2x-2.png deleted file mode 100644 index df5cde9f32bc3380e2c7ace19ca79b066f3a377d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13670 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 TAIV~1U|{fc^>bP0l+XkKKJ;Hi diff --git a/Limelight/Images.xcassets/Computer.imageset/limelight_computer_2x.png b/Limelight/Images.xcassets/Computer.imageset/limelight_computer_2x.png index df5cde9f32bc3380e2c7ace19ca79b066f3a377d..25468de1070e582b9f0de5a775341b4dcbd7b304 100644 GIT binary patch delta 12914 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 +#import "App.h" +#import "HttpManager.h" + +@protocol AppAssetCallback + +- (void) receivedAssetForApp:(App*)app; + +@end + +@interface AppManager : NSObject + ++ (void) retrieveAppAssets:(NSArray*)apps withManager:(HttpManager*)hMan andCallback:(id)callback; + +@end diff --git a/Limelight/Network/AppManager.m b/Limelight/Network/AppManager.m new file mode 100644 index 00000000..df0c4b2f --- /dev/null +++ b/Limelight/Network/AppManager.m @@ -0,0 +1,45 @@ +// +// AppManager.m +// Limelight +// +// Created by Diego Waxemberg on 10/25/14. +// Copyright (c) 2014 Limelight Stream. All rights reserved. +// + +#import "AppManager.h" + +@implementation AppManager { + App* _app; + HttpManager* _hMan; + id _callback; +} + ++ (void) retrieveAppAssets:(NSArray*)apps withManager:(HttpManager*)hMan andCallback:(id)callback { + for (App* app in apps) { + AppManager* manager = [[AppManager alloc] initWithApp:app httpManager:hMan andCallback:callback]; + [manager retrieveAsset]; + } + +} + +- (id) initWithApp:(App*)app httpManager:(HttpManager*)hMan andCallback:(id)callback { + self = [super init]; + _app = app; + _hMan = hMan; + _callback = callback; + return self; +} + +- (void) retrieveAsset { + NSData* appAsset = [_hMan executeRequestSynchronously:[_hMan newAppAssetRequestWithAppId:_app.appId]]; + UIImage* appImage = [UIImage imageWithData:appAsset]; + _app.appImage = appImage; + NSLog(@"App Name: %@ id:%@ image: %@", _app.appName, _app.appId, _app.appImage); + [self performSelectorOnMainThread:@selector(sendCallBack) withObject:self waitUntilDone:NO]; +} + +- (void) sendCallBack { + [_callback receivedAssetForApp:_app]; +} + +@end diff --git a/Limelight/Network/HttpManager.h b/Limelight/Network/HttpManager.h index d24f6b4d..c7c4b364 100644 --- a/Limelight/Network/HttpManager.h +++ b/Limelight/Network/HttpManager.h @@ -10,6 +10,7 @@ @interface HttpManager : NSObject ++ (NSArray*) getAppListFromXML:(NSData*)xml; + (NSString*) getStringFromXML:(NSData*)xml tag:(NSString*)tag; + (NSString*) getStatusStringFromXML:(NSData*)xml; @@ -24,6 +25,7 @@ - (NSURLRequest*) newServerInfoRequest; - (NSURLRequest*) newLaunchRequest:(NSString*)appId width:(int)width height:(int)height refreshRate:(int)refreshRate rikey:(NSString*)rikey rikeyid:(int)rikeyid; - (NSURLRequest*) newResumeRequestWithRiKey:(NSString*)riKey riKeyId:(int)riKeyId; +- (NSURLRequest*) newAppAssetRequestWithAppId:(NSString*)appId; - (NSData*) executeRequestSynchronously:(NSURLRequest*)request; @end diff --git a/Limelight/Network/HttpManager.m b/Limelight/Network/HttpManager.m index 76f9a8f9..37196079 100644 --- a/Limelight/Network/HttpManager.m +++ b/Limelight/Network/HttpManager.m @@ -8,6 +8,7 @@ #import "HttpManager.h" #import "CryptoManager.h" +#import "App.h" #include #include @@ -25,6 +26,60 @@ static const NSString* PORT = @"47984"; ++ (NSArray*) getAppListFromXML:(NSData*)xml { + xmlDocPtr docPtr = xmlParseMemory([xml bytes], (int)[xml length]); + + if (docPtr == NULL) { + NSLog(@"ERROR: An error occured trying to parse xml."); + return NULL; + } + + xmlNodePtr node; + xmlNodePtr rootNode = node = xmlDocGetRootElement(docPtr); + + // Check root status_code + if (![HttpManager verifyStatus: rootNode]) { + NSLog(@"ERROR: Request returned with failure status"); + return NULL; + } + + // Skip the root node + node = node->children; + + NSMutableArray* appList = [[NSMutableArray alloc] init]; + + while (node != NULL) { + NSLog(@"node: %s", node->name); + if (!xmlStrcmp(node->name, (const xmlChar*)"App")) { + xmlNodePtr appInfoNode = node->xmlChildrenNode; + NSString* appName; + NSString* appId; + while (appInfoNode != NULL) { + NSLog(@"appInfoNode: %s", appInfoNode->name); + if (!xmlStrcmp(appInfoNode->name, (const xmlChar*)"AppTitle")) { + xmlChar* nodeVal = xmlNodeListGetString(docPtr, appInfoNode->xmlChildrenNode, 1); + appName = [[NSString alloc] initWithCString:(const char*)nodeVal encoding:NSUTF8StringEncoding]; + xmlFree(nodeVal); + } else if (!xmlStrcmp(appInfoNode->name, (const xmlChar*)"ID")) { + xmlChar* nodeVal = xmlNodeListGetString(docPtr, appInfoNode->xmlChildrenNode, 1); + appId = [[NSString alloc] initWithCString:(const char*)nodeVal encoding:NSUTF8StringEncoding]; + xmlFree(nodeVal); + } + appInfoNode = appInfoNode->next; + } + App* app = [[App alloc] init]; + app.appName = appName; + app.appId = appId; + [appList addObject:app]; + } + node = node->next; + } + xmlFree(rootNode); + xmlFree(docPtr); + + return appList; +} + + (NSString*) getStatusStringFromXML:(NSData*)xml { xmlDocPtr docPtr = xmlParseMemory([xml bytes], (int)[xml length]); @@ -198,6 +253,11 @@ static const NSString* PORT = @"47984"; return [self createRequestFromString:urlString enableTimeout:FALSE]; } +- (NSURLRequest*) newAppAssetRequestWithAppId:(NSString *)appId { + NSString* urlString = [NSString stringWithFormat:@"%@/appasset?uniqueid=%@&appid=%@&AssetType=2&AssetIdx=0", _baseURL, _uniqueId, appId]; + return [self createRequestFromString:urlString enableTimeout:FALSE]; +} + - (NSString*) bytesToHex:(NSData*)data { const unsigned char* bytes = [data bytes]; NSMutableString *hex = [[NSMutableString alloc] init]; @@ -217,7 +277,11 @@ static const NSString* PORT = @"47984"; } - (void)connectionDidFinishLoading:(NSURLConnection *)connection { - _requestResp = [HttpManager fixXmlVersion:_respData]; + if ([[NSString alloc] initWithData:_respData encoding:NSUTF8StringEncoding] != nil) { + _requestResp = [HttpManager fixXmlVersion:_respData]; + } else { + _requestResp = _respData; + } dispatch_semaphore_signal(_requestLock); } diff --git a/Limelight/Network/PairManager.h b/Limelight/Network/PairManager.h index 12cd30ec..0dc3f450 100644 --- a/Limelight/Network/PairManager.h +++ b/Limelight/Network/PairManager.h @@ -14,6 +14,7 @@ - (void) showPIN:(NSString*)PIN; - (void) pairSuccessful; - (void) pairFailed:(NSString*)message; +- (void) alreadyPaired; @end diff --git a/Limelight/Network/PairManager.m b/Limelight/Network/PairManager.m index b4c64885..0f72ecfe 100644 --- a/Limelight/Network/PairManager.m +++ b/Limelight/Network/PairManager.m @@ -32,14 +32,13 @@ [_callback pairFailed:@"Unable to connect to PC"]; return; } - if (![[HttpManager getStringFromXML:serverInfo tag:@"currentgame"] isEqual:@"0"]) { [_callback pairFailed:@"You must stop streaming before attempting to pair."]; } else if (![[HttpManager getStringFromXML:serverInfo tag:@"PairStatus"] isEqual:@"1"]) { [self initiatePair]; } else { - [_callback pairFailed:@"This device is already paired."]; + [_callback alreadyPaired]; } } diff --git a/Limelight/Stream/StreamConfiguration.h b/Limelight/Stream/StreamConfiguration.h index 6129ed3e..0490a0ad 100644 --- a/Limelight/Stream/StreamConfiguration.h +++ b/Limelight/Stream/StreamConfiguration.h @@ -11,6 +11,7 @@ @interface StreamConfiguration : NSObject @property NSString* host; +@property NSString* appID; @property int hostAddr; @property int width; @property int height; diff --git a/Limelight/Stream/StreamConfiguration.m b/Limelight/Stream/StreamConfiguration.m index b2607bb0..ea6ac305 100644 --- a/Limelight/Stream/StreamConfiguration.m +++ b/Limelight/Stream/StreamConfiguration.m @@ -9,5 +9,5 @@ #import "StreamConfiguration.h" @implementation StreamConfiguration -@synthesize host, hostAddr, width, height, frameRate, bitRate, riKeyId, riKey; +@synthesize host, appID, hostAddr, width, height, frameRate, bitRate, riKeyId, riKey; @end diff --git a/Limelight/Stream/StreamManager.m b/Limelight/Stream/StreamManager.m index d35d19fd..bc648009 100644 --- a/Limelight/Stream/StreamManager.m +++ b/Limelight/Stream/StreamManager.m @@ -42,6 +42,7 @@ NSData* serverInfoResp = [hMan executeRequestSynchronously:[hMan newServerInfoRequest]]; NSString* currentGame = [HttpManager getStringFromXML:serverInfoResp tag:@"currentgame"]; NSString* pairStatus = [HttpManager getStringFromXML:serverInfoResp tag:@"PairStatus"]; + NSString* currentClient = [HttpManager getStringFromXML:serverInfoResp tag:@"CurrentClient"]; if (currentGame == NULL || pairStatus == NULL) { [_callbacks launchFailed:@"Failed to connect to PC"]; return; @@ -55,6 +56,11 @@ // resumeApp and launchApp handle calling launchFailed if (![currentGame isEqualToString:@"0"]) { + if (![currentClient isEqualToString:@"1"]) { + // The server is streaming to someone else + [_callbacks launchFailed:@"There is another stream in progress"]; + return; + } // App already running, resume it if (![self resumeApp:hMan]) { return; @@ -79,7 +85,7 @@ - (BOOL) launchApp:(HttpManager*)hMan { NSData* launchResp = [hMan executeRequestSynchronously: - [hMan newLaunchRequest:@"67339056" + [hMan newLaunchRequest:_config.appID width:_config.width height:_config.height refreshRate:_config.frameRate diff --git a/Limelight/UIAppView.h b/Limelight/UIAppView.h index a184b1d5..9b202d51 100644 --- a/Limelight/UIAppView.h +++ b/Limelight/UIAppView.h @@ -9,8 +9,15 @@ #import #import "App.h" -@interface UIAppView : UIView +@protocol AppCallback -- (id) initWithApp:(App*)app; +- (void) appClicked:(App*) app; + +@end + +@interface UIAppView : UIView + +- (id) initWithApp:(App*)app andCallback:(id)callback; +- (void) updateAppImage; @end diff --git a/Limelight/UIAppView.m b/Limelight/UIAppView.m index 1d2ea6eb..645d65db 100644 --- a/Limelight/UIAppView.m +++ b/Limelight/UIAppView.m @@ -12,32 +12,54 @@ App* _app; UIButton* _appButton; UILabel* _appLabel; + id _callback; } static int LABEL_DY = 20; -- (id) initWithApp:(App*)app { +- (id) initWithApp:(App*)app andCallback:(id)callback { self = [super init]; _app = app; + _callback = callback; _appButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_appButton setContentEdgeInsets:UIEdgeInsetsMake(0, 4, 0, 4)]; - [_appButton setBackgroundImage:[[UIImage imageNamed:@"Left4Dead2"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 10, 10)] forState:UIControlStateNormal]; + [_appButton setBackgroundImage:[UIImage imageNamed:@"NoAppImage"] forState:UIControlStateNormal]; [_appButton sizeToFit]; + [_appButton addTarget:self action:@selector(appClicked) forControlEvents:UIControlEventTouchUpInside]; + _appButton.layer.shadowColor = [[UIColor blackColor] CGColor]; + _appButton.layer.shadowOffset = CGSizeMake(5,8); + _appButton.layer.shadowOpacity = 0.7; _appLabel = [[UILabel alloc] init]; - [_appLabel setText:_app.displayName]; + [_appLabel setText:_app.appName]; [_appLabel sizeToFit]; _appLabel.center = CGPointMake(_appButton.bounds.origin.x + (_appButton.bounds.size.width / 2), _appButton.bounds.origin.y + _appButton.bounds.size.height + LABEL_DY); + [self updateBounds]; [self addSubview:_appButton]; [self addSubview:_appLabel]; - self.frame = CGRectMake(0, 0, _appButton.frame.size.width > _appLabel.frame.size.width ? _appButton.frame.size.width : _appLabel.frame.size.width, _appButton.frame.size.height + _appLabel.frame.size.height); return self; } +- (void) updateBounds { + float x = _appButton.frame.origin.x < _appLabel.frame.origin.x ? _appButton.frame.origin.x : _appLabel.frame.origin.x; + float y = _appButton.frame.origin.y < _appLabel.frame.origin.y ? _appButton.frame.origin.y : _appLabel.frame.origin.y; + self.bounds = CGRectMake(x , y, _appButton.frame.size.width > _appLabel.frame.size.width ? _appButton.frame.size.width : _appLabel.frame.size.width, _appButton.frame.size.height + _appLabel.frame.size.height + LABEL_DY / 2); + self.frame = CGRectMake(x , y, _appButton.frame.size.width > _appLabel.frame.size.width ? _appButton.frame.size.width : _appLabel.frame.size.width, _appButton.frame.size.height + _appLabel.frame.size.height + LABEL_DY / 2); +} +- (void) appClicked { + [_callback appClicked:_app]; +} + +- (void) updateAppImage { + if (_app.appImage != nil) { + [_appButton setBackgroundImage:_app.appImage forState:UIControlStateNormal]; + [self setNeedsDisplay]; + } +} /* // Only override drawRect: if you perform custom drawing. diff --git a/Limelight/UIComputerView.h b/Limelight/UIComputerView.h index c603bd06..74b282a5 100644 --- a/Limelight/UIComputerView.h +++ b/Limelight/UIComputerView.h @@ -9,8 +9,16 @@ #import #import "Computer.h" -@interface UIComputerView : UIView +@protocol HostCallback -- (id) initWithComputer:(Computer*)computer; +- (void) hostClicked:(Computer*)computer; +- (void) addHostClicked; + +@end + +@interface UIComputerView : UIView + +- (id) initWithComputer:(Computer*)computer andCallback:(id)callback; +- (id) initForAddWithCallback:(id)callback; @end diff --git a/Limelight/UIComputerView.m b/Limelight/UIComputerView.m index 0efb1115..b97b91ef 100644 --- a/Limelight/UIComputerView.m +++ b/Limelight/UIComputerView.m @@ -12,31 +12,82 @@ Computer* _computer; UIButton* _hostButton; UILabel* _hostLabel; + id _callback; + CGSize _labelSize; } static int LABEL_DY = 20; -- (id) initWithComputer:(Computer*)computer { +- (id) init { self = [super init]; - _computer = computer; - _hostButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_hostButton setContentEdgeInsets:UIEdgeInsetsMake(0, 4, 0, 4)]; - [_hostButton setBackgroundImage:[[UIImage imageNamed:@"Computer"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 10, 10)] forState:UIControlStateNormal]; + [_hostButton setBackgroundImage:[UIImage imageNamed:@"Computer"] forState:UIControlStateNormal]; [_hostButton sizeToFit]; + _hostButton.layer.shadowColor = [[UIColor blackColor] CGColor]; + _hostButton.layer.shadowOffset = CGSizeMake(5,8); + _hostButton.layer.shadowOpacity = 0.7; + _hostLabel = [[UILabel alloc] init]; + + return self; +} + +- (id) initWithComputer:(Computer*)computer andCallback:(id)callback { + self = [self init]; + _computer = computer; + _callback = callback; + [_hostLabel setText:[_computer displayName]]; [_hostLabel sizeToFit]; - _hostLabel.center = CGPointMake(_hostButton.bounds.origin.x + (_hostButton.bounds.size.width / 2), _hostButton.bounds.origin.y + _hostButton.bounds.size.height + LABEL_DY); - + [_hostButton addTarget:self action:@selector(hostClicked) forControlEvents:UIControlEventTouchUpInside]; + _hostLabel.center = CGPointMake(_hostButton.frame.origin.x + (_hostButton.frame.size.width / 2), _hostButton.frame.origin.y + _hostButton.frame.size.height + LABEL_DY); + [self updateBounds]; [self addSubview:_hostButton]; [self addSubview:_hostLabel]; - self.frame = CGRectMake(0, 0, _hostButton.frame.size.width > _hostLabel.frame.size.width ? _hostButton.frame.size.width : _hostLabel.frame.size.width, _hostButton.frame.size.height + _hostLabel.frame.size.height); + return self; +} + +- (void) updateBounds { + float x = _hostButton.frame.origin.x < _hostLabel.frame.origin.x ? _hostButton.frame.origin.x : _hostLabel.frame.origin.x; + float y = _hostButton.frame.origin.y < _hostLabel.frame.origin.y ? _hostButton.frame.origin.y : _hostLabel.frame.origin.y; + self.bounds = CGRectMake(x , y, _hostButton.frame.size.width > _hostLabel.frame.size.width ? _hostButton.frame.size.width : _hostLabel.frame.size.width, _hostButton.frame.size.height + _hostLabel.frame.size.height + LABEL_DY / 2); + self.frame = CGRectMake(x , y, _hostButton.frame.size.width > _hostLabel.frame.size.width ? _hostButton.frame.size.width : _hostLabel.frame.size.width, _hostButton.frame.size.height + _hostLabel.frame.size.height + LABEL_DY / 2); +} + +- (id) initForAddWithCallback:(id)callback { + self = [self init]; + _callback = callback; + + [_hostButton setBackgroundImage:[UIImage imageNamed:@"Computer"] forState:UIControlStateNormal]; + [_hostButton sizeToFit]; + [_hostButton addTarget:self action:@selector(addClicked) forControlEvents:UIControlEventTouchUpInside]; + + [_hostLabel setText:@"Add Host"]; + [_hostLabel sizeToFit]; + _hostLabel.center = CGPointMake(_hostButton.frame.origin.x + (_hostButton.frame.size.width / 2), _hostButton.frame.origin.y + _hostButton.frame.size.height + LABEL_DY); + + UIImageView* addIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"AddComputerIcon"]]; + [addIcon sizeToFit]; + addIcon.center = CGPointMake(_hostButton.frame.origin.x + _hostButton.frame.size.width, _hostButton.frame.origin.y); + + [self updateBounds]; + [self addSubview:_hostButton]; + [self addSubview:_hostLabel]; + [self addSubview:addIcon]; return self; } +- (void) hostClicked { + [_callback hostClicked:_computer]; +} + +- (void) addClicked { + [_callback addHostClicked]; +} + /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. diff --git a/Limelight/Utility/Computer.h b/Limelight/Utility/Computer.h index dc0058cc..854a3dd4 100644 --- a/Limelight/Utility/Computer.h +++ b/Limelight/Utility/Computer.h @@ -15,6 +15,5 @@ - (id) initWithHost:(NSNetService*)host; - (id) initWithIp:(NSString*)host; -- (id) initPlaceholder; @end diff --git a/Limelight/Utility/Computer.m b/Limelight/Utility/Computer.m index fa8deb9b..6a7cb22b 100644 --- a/Limelight/Utility/Computer.m +++ b/Limelight/Utility/Computer.m @@ -28,13 +28,4 @@ return self; } -- (id) initPlaceholder { - self = [super init]; - - self.hostName = NULL; - self.displayName = @"No computers found"; - - return self; -} - @end diff --git a/Limelight/ViewControllers/MainFrameViewController.h b/Limelight/ViewControllers/MainFrameViewController.h index 7265ca9a..70e106eb 100644 --- a/Limelight/ViewControllers/MainFrameViewController.h +++ b/Limelight/ViewControllers/MainFrameViewController.h @@ -10,8 +10,11 @@ #import "MDNSManager.h" #import "PairManager.h" #import "StreamConfiguration.h" +#import "UIComputerView.h" +#import "UIAppView.h" +#import "AppManager.h" -@interface MainFrameViewController : UIViewController +@interface MainFrameViewController : UIViewController + (StreamConfiguration*) getStreamConfiguration; diff --git a/Limelight/ViewControllers/MainFrameViewController.m b/Limelight/ViewControllers/MainFrameViewController.m index 1ebcd910..328b0f18 100644 --- a/Limelight/ViewControllers/MainFrameViewController.m +++ b/Limelight/ViewControllers/MainFrameViewController.m @@ -1,4 +1,3 @@ - // MainFrameViewController.m // Limelight-iOS // @@ -22,45 +21,21 @@ NSOperationQueue* _opQueue; MDNSManager* _mDNSManager; Computer* _selectedHost; + NSString* _uniqueId; + NSData* _cert; + UIAlertView* _pairAlert; + UIScrollView* hostScrollView; + UIScrollView* appScrollView; } +static NSString* deviceName = @"roth"; +static NSMutableSet* hostList; static StreamConfiguration* streamConfig; + (StreamConfiguration*) getStreamConfiguration { return streamConfig; } -//TODO: no more pair button -/* -- (void)PairButton:(UIButton *)sender -{ - NSLog(@"Pair Button Pressed!"); - if ([self.hostTextField.text length] > 0) { - _selectedHost = [[Computer alloc] initWithIp:self.hostTextField.text]; - NSLog(@"Using custom host: %@", self.hostTextField.text); - } - - if (![self validatePcSelected]) { - NSLog(@"No valid PC selected"); - return; - } - - [CryptoManager generateKeyPairUsingSSl]; - NSString* uniqueId = [CryptoManager getUniqueID]; - NSData* cert = [CryptoManager readCertFromFile]; - - if ([Utils resolveHost:_selectedHost.hostName] == 0) { - [self displayDnsFailedDialog]; - return; - } - - HttpManager* hMan = [[HttpManager alloc] initWithHost:_selectedHost.hostName uniqueId:uniqueId deviceName:@"roth" cert:cert]; - PairManager* pMan = [[PairManager alloc] initWithManager:hMan andCert:cert callback:self]; - - [_opQueue addOperation:pMan]; -} -*/ - - (void)showPIN:(NSString *)PIN { dispatch_sync(dispatch_get_main_queue(), ^{ _pairAlert = [[UIAlertView alloc] initWithTitle:@"Pairing" message:[NSString stringWithFormat:@"Enter the following PIN on the host machine: %@", PIN]delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; @@ -84,6 +59,26 @@ static StreamConfiguration* streamConfig; }); } +- (void)alreadyPaired { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + + HttpManager* hMan = [[HttpManager alloc] initWithHost:_selectedHost.hostName uniqueId:_uniqueId deviceName:deviceName cert:_cert]; + NSData* appListResp = [hMan executeRequestSynchronously:[hMan newAppListRequest]]; + NSArray* appList = [HttpManager getAppListFromXML:appListResp]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateApps:appList]; + }); + [AppManager retrieveAppAssets:appList withManager:hMan andCallback:self]; + }); +} + +- (void) receivedAssetForApp:(App*)app { + NSArray* subviews = [appScrollView subviews]; + for (UIAppView* appView in subviews) { + [appView updateAppImage]; + } +} + - (void)displayDnsFailedDialog { UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Network Error" message:@"Failed to resolve host." @@ -92,31 +87,55 @@ static StreamConfiguration* streamConfig; [self presentViewController:alert animated:YES completion:nil]; } -//TODO: No more stream button -/* -- (void)StreamButton:(UIButton *)sender -{ - NSLog(@"Stream Button Pressed!"); - - if ([self.hostTextField.text length] > 0) { - _selectedHost = [[Computer alloc] initWithIp:self.hostTextField.text]; - NSLog(@"Using custom host: %@", self.hostTextField.text); - } - - if (![self validatePcSelected]) { - NSLog(@"No valid PC selected"); - return; - } - +- (void) hostClicked:(Computer *)computer { + NSLog(@"Clicked host: %@", computer.displayName); + _selectedHost = computer; + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + HttpManager* hMan = [[HttpManager alloc] initWithHost:computer.hostName uniqueId:_uniqueId deviceName:deviceName cert:_cert]; + NSData* serverInfoResp = [hMan executeRequestSynchronously:[hMan newServerInfoRequest]]; + if ([[HttpManager getStringFromXML:serverInfoResp tag:@"PairStatus"] isEqualToString:@"1"]) { + NSLog(@"Already Paired"); + [self alreadyPaired]; + } else { + NSLog(@"Trying to pair"); + PairManager* pMan = [[PairManager alloc] initWithManager:hMan andCert:_cert callback:self]; + [_opQueue addOperation:pMan]; + } + }); +} + +- (void) addHostClicked { + NSLog(@"Clicked add host"); + UIAlertController* alertController = [UIAlertController alertControllerWithTitle:@"Host Address" message:@"Please enter a hostname or IP address" preferredStyle:UIAlertControllerStyleAlert]; + [alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]]; + [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){ + NSString* host = ((UITextField*)[[alertController textFields] objectAtIndex:0]).text; + Computer* newHost = [[Computer alloc] initWithIp:host]; + [hostList addObject:newHost]; + [self updateHosts:[hostList allObjects]]; + + + //TODO: get pair state + + + }]]; + [alertController addTextFieldWithConfigurationHandler:nil]; + [self presentViewController:alertController animated:YES completion:nil]; +} + +- (void) appClicked:(App *)app { + NSLog(@"Clicked app: %@", app.appName); streamConfig = [[StreamConfiguration alloc] init]; streamConfig.host = _selectedHost.hostName; streamConfig.hostAddr = [Utils resolveHost:_selectedHost.hostName]; + streamConfig.appID = app.appId; if (streamConfig.hostAddr == 0) { [self displayDnsFailedDialog]; return; } - unsigned long selectedConf = [self.StreamConfigs selectedRowInComponent:0]; + // TODO: actually allow the user to choose the config + unsigned long selectedConf = 1; NSLog(@"selectedConf: %ld", selectedConf); switch (selectedConf) { case 0: @@ -148,19 +167,6 @@ static StreamConfiguration* streamConfig; NSLog(@"StreamConfig: %@, %d, %dx%dx%d at %d Mbps", streamConfig.host, streamConfig.hostAddr, streamConfig.width, streamConfig.height, streamConfig.frameRate, streamConfig.bitRate); [self performSegueWithIdentifier:@"createStreamFrame" sender:self]; } -*/ - -/* -- (void)setSelectedHost:(NSInteger)selectedIndex -{ - _selectedHost = (Computer*)([self.hostPickerVals objectAtIndex:selectedIndex]); - if (_selectedHost.hostName == NULL) { - // This must be the placeholder computer - _selectedHost = NULL; - } -} -*/ - - (void)viewDidLoad { @@ -169,68 +175,91 @@ static StreamConfiguration* streamConfig; NSArray* streamConfigVals = [[NSArray alloc] initWithObjects:@"1280x720 (30Hz)", @"1280x720 (60Hz)", @"1920x1080 (30Hz)", @"1920x1080 (60Hz)",nil]; _opQueue = [[NSOperationQueue alloc] init]; + [CryptoManager generateKeyPairUsingSSl]; + _uniqueId = [CryptoManager getUniqueID]; + _cert = [CryptoManager readCertFromFile]; // Initialize the host picker list - //[self updateHosts:[[NSArray alloc] init]]; + if (hostList == nil) { + hostList = [[NSMutableSet alloc] init]; + } - Computer* test = [[Computer alloc] initWithIp:@"CEMENT-TRUCK"]; - - - UIScrollView* hostScrollView = [[UIScrollView alloc] init]; + hostScrollView = [[UIScrollView alloc] init]; hostScrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height / 2); [hostScrollView setShowsHorizontalScrollIndicator:NO]; - UIComputerView* compView; - for (int i = 0; i < 5; i++) { - compView = [[UIComputerView alloc] initWithComputer:test]; - [hostScrollView addSubview:compView]; - [compView sizeToFit]; - compView.center = CGPointMake((compView.frame.size.width + 20) * i + compView.frame.size.width, hostScrollView.frame.size.height / 2); - - } - - [hostScrollView setContentSize:CGSizeMake(compView.frame.size.width * 5 + compView.frame.size.width, hostScrollView.frame.size.height)]; - - UIScrollView* appScrollView = [[UIScrollView alloc] init]; + appScrollView = [[UIScrollView alloc] init]; appScrollView.frame = CGRectMake(0, hostScrollView.frame.size.height, self.view.frame.size.width, self.view.frame.size.height / 2); [appScrollView setShowsHorizontalScrollIndicator:NO]; - - - App* testApp = [[App alloc] init]; - testApp.displayName = @"Left 4 Dead 2"; - UIAppView* appView; - for (int i = 0; i < 5; i++) { - appView = [[UIAppView alloc] initWithApp:testApp]; - [appScrollView addSubview:appView]; - [appView sizeToFit]; - appView.center = CGPointMake((appView.frame.size.width + 20) * i + compView.frame.size.width, appScrollView.frame.size.height / 2); - } - - [appScrollView setContentSize:CGSizeMake(appView.frame.size.width * 5 + appView.frame.size.width, appScrollView.frame.size.height)]; - + + [self updateHosts:[hostList allObjects]]; [self.view addSubview:hostScrollView]; [self.view addSubview:appScrollView]; - } - (void)viewDidAppear:(BOOL)animated { [super viewDidDisappear:animated]; - //_mDNSManager = [[MDNSManager alloc] initWithCallback:self]; - // [_mDNSManager searchForHosts]; + _mDNSManager = [[MDNSManager alloc] initWithCallback:self]; + [_mDNSManager searchForHosts]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; - // [_mDNSManager stopSearching]; + [_mDNSManager stopSearching]; } - (void)updateHosts:(NSArray *)hosts { - NSMutableArray *hostPickerValues = [[NSMutableArray alloc] initWithArray:hosts]; + [hostList addObjectsFromArray:hosts]; + [[hostScrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; + UIComputerView* addComp = [[UIComputerView alloc] initForAddWithCallback:self]; + UIComputerView* compView; + float prevEdge = -1; + for (Computer* comp in hostList) { + compView = [[UIComputerView alloc] initWithComputer:comp andCallback:self]; + compView.center = CGPointMake([self getCompViewX:compView addComp:addComp prevEdge:prevEdge], hostScrollView.frame.size.height / 2); + prevEdge = compView.frame.origin.x + compView.frame.size.width; + [hostScrollView addSubview:compView]; + } - if ([hostPickerValues count] == 0) { - [hostPickerValues addObject:[[Computer alloc] initPlaceholder]]; + prevEdge = [self getCompViewX:addComp addComp:addComp prevEdge:prevEdge]; + addComp.center = CGPointMake(prevEdge, hostScrollView.frame.size.height / 2); + + [hostScrollView addSubview:addComp]; + [hostScrollView setContentSize:CGSizeMake(prevEdge + addComp.frame.size.width, hostScrollView.frame.size.height)]; +} + +- (float) getCompViewX:(UIComputerView*)comp addComp:(UIComputerView*)addComp prevEdge:(float)prevEdge { + if (prevEdge == -1) { + return hostScrollView.frame.origin.x + comp.frame.size.width / 2 + addComp.frame.size.width / 2; + } else { + return prevEdge + addComp.frame.size.width / 2 + comp.frame.size.width / 2; + } +} + +- (void) updateApps:(NSArray*)apps { + [[appScrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; + App* fakeApp = [[App alloc] init]; + fakeApp.appName = @"No App Name"; + UIAppView* noAppImage = [[UIAppView alloc] initWithApp:fakeApp andCallback:nil]; + float prevEdge = -1; + UIAppView* appView; + for (App* app in apps) { + appView = [[UIAppView alloc] initWithApp:app andCallback:self]; + prevEdge = [self getAppViewX:appView noApp:noAppImage prevEdge:prevEdge]; + appView.center = CGPointMake(prevEdge, appScrollView.frame.size.height / 2); + prevEdge = appView.frame.origin.x + appView.frame.size.width; + [appScrollView addSubview:appView]; + } + [appScrollView setContentSize:CGSizeMake(prevEdge + noAppImage.frame.size.width, appScrollView.frame.size.height)]; +} + +- (float) getAppViewX:(UIAppView*)app noApp:(UIAppView*)noAppImage prevEdge:(float)prevEdge { + if (prevEdge == -1) { + return appScrollView.frame.origin.x + app.frame.size.width / 2 + noAppImage.frame.size.width / 2; + } else { + return prevEdge + app.frame.size.width / 2 + noAppImage.frame.size.width / 2; } } diff --git a/Limelight/ViewControllers/StreamFrameViewController.m b/Limelight/ViewControllers/StreamFrameViewController.m index e05aec06..0331ee3a 100644 --- a/Limelight/ViewControllers/StreamFrameViewController.m +++ b/Limelight/ViewControllers/StreamFrameViewController.m @@ -26,6 +26,8 @@ [super viewDidLoad]; [self.stageLabel setText:@"Starting App"]; + [self.stageLabel sizeToFit]; + self.stageLabel.center = CGPointMake(self.view.frame.size.width / 2, self.stageLabel.center.y); [UIApplication sharedApplication].idleTimerDisabled = YES; @@ -53,6 +55,8 @@ dispatch_async(dispatch_get_main_queue(), ^{ [self.spinner stopAnimating]; [self.stageLabel setText:@"Waiting for first frame..."]; + [self.stageLabel sizeToFit]; + self.stageLabel.center = CGPointMake(self.view.frame.size.width / 2, self.stageLabel.center.y); }); } @@ -74,6 +78,8 @@ NSString* lowerCase = [NSString stringWithFormat:@"%s in progress...", stageName]; NSString* titleCase = [[[lowerCase substringToIndex:1] uppercaseString] stringByAppendingString:[lowerCase substringFromIndex:1]]; [self.stageLabel setText:titleCase]; + [self.stageLabel sizeToFit]; + self.stageLabel.center = CGPointMake(self.view.frame.size.width / 2, self.stageLabel.center.y); }); } diff --git a/iPad.storyboard b/iPad.storyboard index eb77d969..37d9a06f 100644 --- a/iPad.storyboard +++ b/iPad.storyboard @@ -1,5 +1,5 @@ - + @@ -8,21 +8,9 @@ - - - - - - - @@ -38,31 +26,23 @@ - - - - - + + - - - - - - - diff --git a/iPhone.storyboard b/iPhone.storyboard index 098b0cc6..efe9f1d9 100644 --- a/iPhone.storyboard +++ b/iPhone.storyboard @@ -1,5 +1,5 @@ - + @@ -8,10 +8,6 @@ - - - - @@ -32,31 +28,23 @@ - - - - - + + - - - - - - -