diff --git a/Limelight.xcodeproj/project.pbxproj b/Limelight.xcodeproj/project.pbxproj index e181c63..f5a12b0 100644 --- a/Limelight.xcodeproj/project.pbxproj +++ b/Limelight.xcodeproj/project.pbxproj @@ -109,6 +109,7 @@ FB290E7A19B38036004C83CF /* iPhone.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = iPhone.storyboard; sourceTree = SOURCE_ROOT; }; FB4678EB1A50C40900377732 /* OnScreenControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OnScreenControls.h; sourceTree = ""; }; FB4678EC1A50C40900377732 /* OnScreenControls.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OnScreenControls.m; sourceTree = ""; }; + FB4678F21A51BDCB00377732 /* Limelight 0.3.0.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Limelight 0.3.0.xcdatamodel"; sourceTree = ""; }; FB7E794319C8B71B00A15F68 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; }; FB89460519F646E200339C8A /* CryptoManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoManager.h; sourceTree = ""; }; FB89460619F646E200339C8A /* CryptoManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CryptoManager.m; sourceTree = ""; }; @@ -1032,9 +1033,10 @@ FB290D0519B2C406004C83CF /* Limelight.xcdatamodeld */ = { isa = XCVersionGroup; children = ( + FB4678F21A51BDCB00377732 /* Limelight 0.3.0.xcdatamodel */, FB290D0619B2C406004C83CF /* Limelight.xcdatamodel */, ); - currentVersion = FB290D0619B2C406004C83CF /* Limelight.xcdatamodel */; + currentVersion = FB4678F21A51BDCB00377732 /* Limelight 0.3.0.xcdatamodel */; path = Limelight.xcdatamodeld; sourceTree = ""; versionGroupType = wrapper.xcdatamodel; diff --git a/Limelight/AppDelegate.m b/Limelight/AppDelegate.m index 18fabba..5a83773 100644 --- a/Limelight/AppDelegate.m +++ b/Limelight/AppDelegate.m @@ -104,7 +104,10 @@ static NSOperationQueue* mainQueue; NSError *error = nil; _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; - if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { + NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, + [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; + if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) { /* Replace this implementation with code to handle the error appropriately. diff --git a/Limelight/Database/DataManager.h b/Limelight/Database/DataManager.h index 88450bc..3df772b 100644 --- a/Limelight/Database/DataManager.h +++ b/Limelight/Database/DataManager.h @@ -15,7 +15,7 @@ @property (strong, nonatomic) AppDelegate* appDelegate; -- (void) saveSettingsWithBitrate:(NSInteger)bitrate framerate:(NSInteger)framerate height:(NSInteger)height width:(NSInteger)width; +- (void) saveSettingsWithBitrate:(NSInteger)bitrate framerate:(NSInteger)framerate height:(NSInteger)height width:(NSInteger)width onscreenControls:(NSInteger)onscreenControls; - (Settings*) retrieveSettings; - (NSArray*) retrieveHosts; - (void) saveHosts; diff --git a/Limelight/Database/DataManager.m b/Limelight/Database/DataManager.m index 13f9f97..69daf7a 100644 --- a/Limelight/Database/DataManager.m +++ b/Limelight/Database/DataManager.m @@ -9,10 +9,6 @@ #import "DataManager.h" @implementation DataManager -static NSInteger DEFAULT_BITRATE = 10000; -static NSInteger DEFAULT_FRAMERATE = 60; -static NSInteger DEFAULT_HEIGHT = 720; -static NSInteger DEFAULT_WIDTH = 1280; - (id) init { self = [super init]; @@ -20,12 +16,14 @@ static NSInteger DEFAULT_WIDTH = 1280; return self; } -- (void) saveSettingsWithBitrate:(NSInteger)bitrate framerate:(NSInteger)framerate height:(NSInteger)height width:(NSInteger)width { +- (void) saveSettingsWithBitrate:(NSInteger)bitrate framerate:(NSInteger)framerate height:(NSInteger)height width:(NSInteger)width onscreenControls:(NSInteger)onscreenControls { Settings* settingsToSave = [self retrieveSettings]; settingsToSave.framerate = [NSNumber numberWithInteger:framerate]; settingsToSave.bitrate = [NSNumber numberWithInteger:bitrate]; settingsToSave.height = [NSNumber numberWithInteger:height]; settingsToSave.width = [NSNumber numberWithInteger:width]; + settingsToSave.onscreenControls = [NSNumber numberWithInteger:onscreenControls]; + NSError* error; if (![[self.appDelegate managedObjectContext] save:&error]) { NSLog(@"ERROR: Unable to save settings to database"); @@ -40,10 +38,6 @@ static NSInteger DEFAULT_WIDTH = 1280; NSEntityDescription* entity = [NSEntityDescription entityForName:@"Settings" inManagedObjectContext:[self.appDelegate managedObjectContext]]; Settings* settings = [[Settings alloc] initWithEntity:entity insertIntoManagedObjectContext:[self.appDelegate managedObjectContext]]; - settings.framerate = [NSNumber numberWithInteger:DEFAULT_FRAMERATE]; - settings.bitrate = [NSNumber numberWithInteger:DEFAULT_BITRATE]; - settings.height = [NSNumber numberWithInteger:DEFAULT_HEIGHT]; - settings.width = [NSNumber numberWithInteger:DEFAULT_WIDTH]; return settings; } else { // we should only ever have 1 settings object stored diff --git a/Limelight/Database/Settings.h b/Limelight/Database/Settings.h index 1198a2c..1e94431 100644 --- a/Limelight/Database/Settings.h +++ b/Limelight/Database/Settings.h @@ -16,5 +16,6 @@ @property (nonatomic, retain) NSNumber * framerate; @property (nonatomic, retain) NSNumber * height; @property (nonatomic, retain) NSNumber * width; +@property (nonatomic, retain) NSNumber * onscreenControls; @end diff --git a/Limelight/Database/Settings.m b/Limelight/Database/Settings.m index 001f8ca..622ff41 100644 --- a/Limelight/Database/Settings.m +++ b/Limelight/Database/Settings.m @@ -15,5 +15,6 @@ @dynamic framerate; @dynamic height; @dynamic width; +@dynamic onscreenControls; @end diff --git a/Limelight/Input/OnScreenControls.h b/Limelight/Input/OnScreenControls.h index f157e6c..163ad7f 100644 --- a/Limelight/Input/OnScreenControls.h +++ b/Limelight/Input/OnScreenControls.h @@ -10,9 +10,16 @@ @interface OnScreenControls : NSObject +typedef NS_ENUM(NSInteger, OnScreenControlsLevel) { + OnScreenControlsLevelOff, + OnScreenControlsLevelSimple, + OnScreenControlsLevelFull +}; + - (id) initWithView:(UIView*)view; - (void) handleTouchDownEvent:(UIEvent*)event; - (void) handleTouchUpEvent:(UIEvent*) event; - (void) handleTouchMovedEvent:(UIEvent*)event; +- (void) setLevel:(OnScreenControlsLevel)level; @end diff --git a/Limelight/Input/OnScreenControls.m b/Limelight/Input/OnScreenControls.m index 825d0ad..5de4183 100644 --- a/Limelight/Input/OnScreenControls.m +++ b/Limelight/Input/OnScreenControls.m @@ -21,7 +21,9 @@ CALayer* _downButton; CALayer* _leftButton; CALayer* _rightButton; + CALayer* _leftStickBackground; CALayer* _leftStick; + CALayer* _rightStickBackground; CALayer* _rightStick; CALayer* _startButton; CALayer* _selectButton; @@ -34,12 +36,12 @@ short leftStickX, leftStickY; short rightStickX, rightStickY; char leftTrigger, rightTrigger; - - UITouch* lsTouch; - UITouch* rsTouch; - + + UITouch* _lsTouch; + UITouch* _rsTouch; + UIView* _view; - BOOL shouldDrawControls; + OnScreenControlsLevel _level; } static const float BUTTON_SIZE = 50; @@ -85,8 +87,7 @@ static float L2_Y; - (id) initWithView:(UIView*)view { self = [self init]; _view = view; - shouldDrawControls = YES; - + D_PAD_CENTER_X = _view.frame.size.width * .15; D_PAD_CENTER_Y = _view.frame.size.height * .55; BUTTON_CENTER_X = _view.frame.size.width * .85; @@ -110,94 +111,133 @@ static float L2_Y; R1_Y = _view.frame.size.height * .25; R2_X = _view.frame.size.width * .85; R2_Y = _view.frame.size.height * .1; + + _aButton = [CALayer layer]; + _bButton = [CALayer layer]; + _xButton = [CALayer layer]; + _yButton = [CALayer layer]; + _upButton = [CALayer layer]; + _downButton = [CALayer layer]; + _leftButton = [CALayer layer]; + _rightButton = [CALayer layer]; + _l1Button = [CALayer layer]; + _r1Button = [CALayer layer]; + _l2Button = [CALayer layer]; + _r2Button = [CALayer layer]; + _startButton = [CALayer layer]; + _selectButton = [CALayer layer]; + _leftStickBackground = [CALayer layer]; + _rightStickBackground = [CALayer layer]; + _leftStick = [CALayer layer]; + _rightStick = [CALayer layer]; - [self drawButtons]; - [self drawSticks]; return self; } +- (void) setLevel:(OnScreenControlsLevel)level { + _level = level; + [self updateControls]; +} + +- (void) updateControls { + switch (_level) { + case OnScreenControlsLevelOff: + [self hideButtons]; + [self hideBumpers]; + [self hideTriggers]; + [self hideStartSelect]; + [self hideSticks]; + break; + case OnScreenControlsLevelSimple: + [self drawTriggers]; + [self drawStartSelect]; + [self hideButtons]; + [self hideBumpers]; + [self hideSticks]; + break; + case OnScreenControlsLevelFull: + [self drawButtons]; + [self drawStartSelect]; + [self drawBumpers]; + [self drawTriggers]; + [self drawSticks]; + break; + } +} + - (void) drawButtons { // create A button - _aButton = [CALayer layer]; _aButton.contents = (id) [UIImage imageNamed:@"AButton"].CGImage; _aButton.frame = CGRectMake(BUTTON_CENTER_X - BUTTON_SIZE / 2, BUTTON_CENTER_Y + BUTTON_DIST, BUTTON_SIZE, BUTTON_SIZE); - [_view.layer addSublayer:_aButton]; // create B button - _bButton = [CALayer layer]; _bButton.frame = CGRectMake(BUTTON_CENTER_X + BUTTON_DIST, BUTTON_CENTER_Y - BUTTON_SIZE / 2, BUTTON_SIZE, BUTTON_SIZE); _bButton.contents = (id) [UIImage imageNamed:@"BButton"].CGImage; [_view.layer addSublayer:_bButton]; // create X Button - _xButton = [CALayer layer]; _xButton.frame = CGRectMake(BUTTON_CENTER_X - BUTTON_DIST - BUTTON_SIZE, BUTTON_CENTER_Y - BUTTON_SIZE / 2, BUTTON_SIZE, BUTTON_SIZE); _xButton.contents = (id) [UIImage imageNamed:@"XButton"].CGImage; [_view.layer addSublayer:_xButton]; // create Y Button - _yButton = [CALayer layer]; _yButton.frame = CGRectMake(BUTTON_CENTER_X - BUTTON_SIZE / 2, BUTTON_CENTER_Y - BUTTON_DIST - BUTTON_SIZE, BUTTON_SIZE, BUTTON_SIZE); _yButton.contents = (id) [UIImage imageNamed:@"YButton"].CGImage; [_view.layer addSublayer:_yButton]; // create Down button - _downButton = [CALayer layer]; _downButton.frame = CGRectMake(D_PAD_CENTER_X - D_PAD_SHORT / 2, D_PAD_CENTER_Y + D_PAD_DIST, D_PAD_SHORT, D_PAD_LONG); _downButton.contents = (id) [UIImage imageNamed:@"DownButton"].CGImage; [_view.layer addSublayer:_downButton]; // create Right button - _rightButton = [CALayer layer]; _rightButton.frame = CGRectMake(D_PAD_CENTER_X + D_PAD_DIST, D_PAD_CENTER_Y - D_PAD_SHORT / 2, D_PAD_LONG, D_PAD_SHORT); _rightButton.contents = (id) [UIImage imageNamed:@"RightButton"].CGImage; [_view.layer addSublayer:_rightButton]; // create Up button - _upButton = [CALayer layer]; _upButton.frame = CGRectMake(D_PAD_CENTER_X - D_PAD_SHORT / 2, D_PAD_CENTER_Y - D_PAD_DIST - D_PAD_LONG, D_PAD_SHORT, D_PAD_LONG); _upButton.contents = (id) [UIImage imageNamed:@"UpButton"].CGImage; [_view.layer addSublayer:_upButton]; // create Left button - _leftButton = [CALayer layer]; _leftButton.frame = CGRectMake(D_PAD_CENTER_X - D_PAD_DIST - D_PAD_LONG, D_PAD_CENTER_Y - D_PAD_SHORT / 2, D_PAD_LONG, D_PAD_SHORT); _leftButton.contents = (id) [UIImage imageNamed:@"LeftButton"].CGImage; [_view.layer addSublayer:_leftButton]; +} +- (void) drawStartSelect { // create Start button - _startButton = [CALayer layer]; _startButton.frame = CGRectMake(START_X - START_WIDTH / 2, START_Y - START_HEIGHT / 2, START_WIDTH, START_HEIGHT); _startButton.contents = (id) [UIImage imageNamed:@"StartButton"].CGImage; [_view.layer addSublayer:_startButton]; // create Select button - _selectButton = [CALayer layer]; _selectButton.frame = CGRectMake(SELECT_X - SELECT_WIDTH / 2, SELECT_Y - SELECT_HEIGHT / 2, SELECT_WIDTH, SELECT_HEIGHT); _selectButton.contents = (id) [UIImage imageNamed:@"SelectButton"].CGImage; [_view.layer addSublayer:_selectButton]; +} +- (void) drawBumpers { // create L1 button - _l1Button = [CALayer layer]; _l1Button.frame = CGRectMake(L1_X - BUMPER_SIZE / 2, L1_Y - BUMPER_SIZE / 2, BUMPER_SIZE, BUMPER_SIZE); _l1Button.contents = (id) [UIImage imageNamed:@"L1"].CGImage; [_view.layer addSublayer:_l1Button]; - - // create L2 button - _l2Button = [CALayer layer]; - _l2Button.frame = CGRectMake(L2_X - TRIGGER_SIZE / 2, L2_Y - TRIGGER_SIZE / 2, TRIGGER_SIZE, TRIGGER_SIZE); - _l2Button.contents = (id) [UIImage imageNamed:@"L2"].CGImage; - [_view.layer addSublayer:_l2Button]; - + // create R1 button - _r1Button = [CALayer layer]; _r1Button.frame = CGRectMake(R1_X - BUMPER_SIZE / 2, R1_Y - BUMPER_SIZE / 2, BUMPER_SIZE, BUMPER_SIZE); _r1Button.contents = (id) [UIImage imageNamed:@"R1"].CGImage; [_view.layer addSublayer:_r1Button]; +} +- (void) drawTriggers { + // create L2 button + _l2Button.frame = CGRectMake(L2_X - TRIGGER_SIZE / 2, L2_Y - TRIGGER_SIZE / 2, TRIGGER_SIZE, TRIGGER_SIZE); + _l2Button.contents = (id) [UIImage imageNamed:@"L2"].CGImage; + [_view.layer addSublayer:_l2Button]; + // create R2 button - _r2Button = [CALayer layer]; _r2Button.frame = CGRectMake(R2_X - TRIGGER_SIZE / 2, R2_Y - TRIGGER_SIZE / 2, TRIGGER_SIZE, TRIGGER_SIZE); _r2Button.contents = (id) [UIImage imageNamed:@"R2"].CGImage; [_view.layer addSublayer:_r2Button]; @@ -205,28 +245,59 @@ static float L2_Y; - (void) drawSticks { // create left analog stick - CALayer* leftStickBackground = [CALayer layer]; - leftStickBackground.frame = CGRectMake(LS_CENTER_X - STICK_OUTER_SIZE / 2, LS_CENTER_Y - STICK_OUTER_SIZE / 2, STICK_OUTER_SIZE, STICK_OUTER_SIZE); - leftStickBackground.contents = (id) [UIImage imageNamed:@"StickOuter"].CGImage; - [_view.layer addSublayer:leftStickBackground]; - + _leftStickBackground.frame = CGRectMake(LS_CENTER_X - STICK_OUTER_SIZE / 2, LS_CENTER_Y - STICK_OUTER_SIZE / 2, STICK_OUTER_SIZE, STICK_OUTER_SIZE); + _leftStickBackground.contents = (id) [UIImage imageNamed:@"StickOuter"].CGImage; + [_view.layer addSublayer:_leftStickBackground]; + _leftStick = [CALayer layer]; _leftStick.frame = CGRectMake(LS_CENTER_X - STICK_INNER_SIZE / 2, LS_CENTER_Y - STICK_INNER_SIZE / 2, STICK_INNER_SIZE, STICK_INNER_SIZE); _leftStick.contents = (id) [UIImage imageNamed:@"StickInner"].CGImage; [_view.layer addSublayer:_leftStick]; // create right analog stick - CALayer* rightStickBackground = [CALayer layer]; - rightStickBackground.frame = CGRectMake(RS_CENTER_X - STICK_OUTER_SIZE / 2, RS_CENTER_Y - STICK_OUTER_SIZE / 2, STICK_OUTER_SIZE, STICK_OUTER_SIZE); - rightStickBackground.contents = (id) [UIImage imageNamed:@"StickOuter"].CGImage; - [_view.layer addSublayer:rightStickBackground]; - + _rightStickBackground.frame = CGRectMake(RS_CENTER_X - STICK_OUTER_SIZE / 2, RS_CENTER_Y - STICK_OUTER_SIZE / 2, STICK_OUTER_SIZE, STICK_OUTER_SIZE); + _rightStickBackground.contents = (id) [UIImage imageNamed:@"StickOuter"].CGImage; + [_view.layer addSublayer:_rightStickBackground]; + _rightStick = [CALayer layer]; _rightStick.frame = CGRectMake(RS_CENTER_X - STICK_INNER_SIZE / 2, RS_CENTER_Y - STICK_INNER_SIZE / 2, STICK_INNER_SIZE, STICK_INNER_SIZE); _rightStick.contents = (id) [UIImage imageNamed:@"StickInner"].CGImage; [_view.layer addSublayer:_rightStick]; } +- (void) hideButtons { + [_aButton removeFromSuperlayer]; + [_bButton removeFromSuperlayer]; + [_xButton removeFromSuperlayer]; + [_yButton removeFromSuperlayer]; + [_upButton removeFromSuperlayer]; + [_downButton removeFromSuperlayer]; + [_leftButton removeFromSuperlayer]; + [_rightButton removeFromSuperlayer]; +} + +- (void) hideStartSelect { + [_startButton removeFromSuperlayer]; + [_selectButton removeFromSuperlayer]; +} + +- (void) hideBumpers { + [_l1Button removeFromSuperlayer]; + [_r1Button removeFromSuperlayer]; +} + +- (void) hideTriggers { + [_l2Button removeFromSuperlayer]; + [_r2Button removeFromSuperlayer]; +} + +- (void) hideSticks { + [_leftStickBackground removeFromSuperlayer]; + [_rightStickBackground removeFromSuperlayer]; + [_leftStick removeFromSuperlayer]; + [_rightStick removeFromSuperlayer]; +} + - (void) handleTouchMovedEvent:(UIEvent*)event { float rsMaxX = RS_CENTER_X + STICK_OUTER_SIZE / 2 - STICK_INNER_SIZE / 2; float rsMaxY = RS_CENTER_Y + STICK_OUTER_SIZE / 2 - STICK_INNER_SIZE / 2; @@ -241,7 +312,7 @@ static float L2_Y; CGPoint touchLocation = [touch locationInView:_view]; float xLoc = touchLocation.x - STICK_INNER_SIZE / 2; float yLoc = touchLocation.y - STICK_INNER_SIZE / 2; - if (touch == lsTouch) { + if (touch == _lsTouch) { if (xLoc > lsMaxX) xLoc = lsMaxX; if (xLoc < lsMinX) xLoc = lsMinX; if (yLoc > lsMaxY) yLoc = lsMaxY; @@ -251,8 +322,8 @@ static float L2_Y; leftStickX = 0x7FFE * (xLoc - LS_CENTER_X) / (lsMaxX - LS_CENTER_X); leftStickY = 0x7FFE * (yLoc - LS_CENTER_Y) / (lsMaxY - LS_CENTER_Y); - - } else if (touch == rsTouch) { + + } else if (touch == _rsTouch) { if (xLoc > rsMaxX) xLoc = rsMaxX; if (xLoc < rsMinX) xLoc = rsMinX; if (yLoc > rsMaxY) yLoc = rsMaxY; @@ -301,9 +372,9 @@ static float L2_Y; } else if ([_r2Button.presentationLayer hitTest:touchLocation]) { rightTrigger = 1 * 0xFF; } else if ([_leftStick.presentationLayer hitTest:touchLocation]) { - lsTouch = touch; + _lsTouch = touch; } else if ([_rightStick.presentationLayer hitTest:touchLocation]) { - rsTouch = touch; + _rsTouch = touch; } } LiSendControllerEvent(buttonFlags, leftTrigger, rightTrigger, @@ -344,9 +415,9 @@ static float L2_Y; } else if ([_r2Button.presentationLayer hitTest:touchLocation]) { rightTrigger = 0 * 0xFF; } - if (touch == lsTouch) { + if (touch == _lsTouch) { _leftStick.frame = CGRectMake(LS_CENTER_X - STICK_INNER_SIZE / 2, LS_CENTER_Y - STICK_INNER_SIZE / 2, STICK_INNER_SIZE, STICK_INNER_SIZE); - } else if (touch == rsTouch) { + } else if (touch == _rsTouch) { _rightStick.frame = CGRectMake(RS_CENTER_X - STICK_INNER_SIZE / 2, RS_CENTER_Y - STICK_INNER_SIZE / 2, STICK_INNER_SIZE, STICK_INNER_SIZE); } } diff --git a/Limelight/Input/StreamView.m b/Limelight/Input/StreamView.m index a1dbb6d..d72195c 100644 --- a/Limelight/Input/StreamView.m +++ b/Limelight/Input/StreamView.m @@ -9,6 +9,7 @@ #import "StreamView.h" #include #import "OnScreenControls.h" +#import "DataManager.h" @implementation StreamView { CGPoint touchLocation; @@ -18,6 +19,10 @@ - (void) setupOnScreenControls { onScreenControls = [[OnScreenControls alloc] initWithView:self]; + DataManager* dataMan = [[DataManager alloc] init]; + OnScreenControlsLevel level = (OnScreenControlsLevel)[[dataMan retrieveSettings].onscreenControls integerValue]; + NSLog(@"Setting on-screen controls level: %ld", level); + [onScreenControls setLevel:level]; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { diff --git a/Limelight/Limelight.xcdatamodeld/.xccurrentversion b/Limelight/Limelight.xcdatamodeld/.xccurrentversion index 29ea97a..079a536 100644 --- a/Limelight/Limelight.xcdatamodeld/.xccurrentversion +++ b/Limelight/Limelight.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - Limelight.xcdatamodel + Limelight 0.3.0.xcdatamodel diff --git a/Limelight/Limelight.xcdatamodeld/Limelight 0.3.0.xcdatamodel/contents b/Limelight/Limelight.xcdatamodeld/Limelight 0.3.0.xcdatamodel/contents new file mode 100644 index 0000000..b710da9 --- /dev/null +++ b/Limelight/Limelight.xcdatamodeld/Limelight 0.3.0.xcdatamodel/contents @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Limelight/Limelight.xcdatamodeld/Limelight.xcdatamodel/contents b/Limelight/Limelight.xcdatamodeld/Limelight.xcdatamodel/contents index b8b065e..c2c5be8 100644 --- a/Limelight/Limelight.xcdatamodeld/Limelight.xcdatamodel/contents +++ b/Limelight/Limelight.xcdatamodeld/Limelight.xcdatamodel/contents @@ -1,5 +1,5 @@ - + @@ -11,7 +11,7 @@ - - + + \ No newline at end of file diff --git a/Limelight/ViewControllers/SettingsViewController.h b/Limelight/ViewControllers/SettingsViewController.h index 704f97a..e221cd0 100644 --- a/Limelight/ViewControllers/SettingsViewController.h +++ b/Limelight/ViewControllers/SettingsViewController.h @@ -14,6 +14,7 @@ @property (strong, nonatomic) IBOutlet UISlider *bitrateSlider; @property (strong, nonatomic) IBOutlet UISegmentedControl *framerateSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *resolutionSelector; +@property (strong, nonatomic) IBOutlet UISegmentedControl *onscreenControlSelector; - (void) saveSettings; diff --git a/Limelight/ViewControllers/SettingsViewController.m b/Limelight/ViewControllers/SettingsViewController.m index 7e6cea6..e6700bb 100644 --- a/Limelight/ViewControllers/SettingsViewController.m +++ b/Limelight/ViewControllers/SettingsViewController.m @@ -27,9 +27,11 @@ static NSString* bitrateFormat = @"Bitrate: %d kbps"; _bitrate = [currentSettings.bitrate integerValue]; NSInteger framerate = [currentSettings.framerate integerValue] == 30 ? 0 : 1; NSInteger resolution = [currentSettings.height integerValue] == 720 ? 0 : 1; + NSInteger onscreenControls = [currentSettings.onscreenControls integerValue]; [self.resolutionSelector setSelectedSegmentIndex:resolution]; [self.framerateSelector setSelectedSegmentIndex:framerate]; + [self.onscreenControlSelector setSelectedSegmentIndex:onscreenControls]; [self.bitrateSlider setValue:_bitrate animated:YES]; [self.bitrateSlider addTarget:self action:@selector(bitrateSliderMoved) forControlEvents:UIControlEventValueChanged]; [self.bitrateLabel setText:[NSString stringWithFormat:bitrateFormat, (int)_bitrate]]; @@ -63,8 +65,8 @@ static NSString* bitrateFormat = @"Bitrate: %d kbps"; height = [self.resolutionSelector selectedSegmentIndex] == 0 ? 720 : 1080; width = height == 720 ? 1280 : 1920; } - - [dataMan saveSettingsWithBitrate:_bitrate framerate:framerate height:height width:width]; + NSInteger onscreenControls = [self.onscreenControlSelector seletedSegmentIndex]; + [dataMan saveSettingsWithBitrate:_bitrate framerate:framerate height:height width:width onscreenControls:onscreenControls]; } - (void)didReceiveMemoryWarning { diff --git a/iPad.storyboard b/iPad.storyboard index ccdb614..5200710 100644 --- a/iPad.storyboard +++ b/iPad.storyboard @@ -70,33 +70,33 @@ - + - @@ -122,6 +138,7 @@ + diff --git a/iPhone.storyboard b/iPhone.storyboard index 7251f50..94d14de 100644 --- a/iPhone.storyboard +++ b/iPhone.storyboard @@ -90,19 +90,19 @@ - + - + @@ -110,22 +110,22 @@ - @@ -142,6 +158,7 @@ +