From a51d471f2d6ba01b013ae4849014ac7c8035a182 Mon Sep 17 00:00:00 2001 From: True Zhuanjia Date: Thu, 16 May 2024 22:24:42 +0800 Subject: [PATCH] Add menu entry for swipe&exit screen edge, set for CustomEdgeSwipeRecognizer --- Limelight/Database/DataManager.h | 1 + Limelight/Database/DataManager.m | 2 + Limelight/Database/TemporarySettings.h | 1 + Limelight/Database/TemporarySettings.m | 1 + .../Moonlight v1.10.xcdatamodel/contents | 1 + .../ViewControllers/SettingsViewController.h | 1 + .../ViewControllers/SettingsViewController.m | 25 +++++++ .../StreamFrameViewController.m | 2 +- iPad.storyboard | 66 ++++++++++++------- 9 files changed, 76 insertions(+), 24 deletions(-) diff --git a/Limelight/Database/DataManager.h b/Limelight/Database/DataManager.h index ca029755..03be812d 100644 --- a/Limelight/Database/DataManager.h +++ b/Limelight/Database/DataManager.h @@ -20,6 +20,7 @@ audioConfig:(NSInteger)audioConfig onscreenControls:(NSInteger)onscreenControls keyboardToggleFingers:(NSInteger)keyboardToggleFingers + swipeExitScreenEdge:(NSInteger)swipeExitScreenEdge swipeToExitDistance:(CGFloat)swipeToExitDistance optimizeGames:(BOOL)optimizeGames multiController:(BOOL)multiController diff --git a/Limelight/Database/DataManager.m b/Limelight/Database/DataManager.m index 2ec6ebd1..32df7b84 100644 --- a/Limelight/Database/DataManager.m +++ b/Limelight/Database/DataManager.m @@ -59,6 +59,7 @@ audioConfig:(NSInteger)audioConfig onscreenControls:(NSInteger)onscreenControls keyboardToggleFingers:(NSInteger)keyboardToggleFingers + swipeExitScreenEdge:(NSInteger)swipeExitScreenEdge swipeToExitDistance:(CGFloat)swipeToExitDistance optimizeGames:(BOOL)optimizeGames multiController:(BOOL)multiController @@ -80,6 +81,7 @@ settingsToSave.audioConfig = [NSNumber numberWithInteger:audioConfig]; settingsToSave.onscreenControls = [NSNumber numberWithInteger:onscreenControls]; settingsToSave.keyboardToggleFingers = [NSNumber numberWithInteger:(uint16_t)keyboardToggleFingers]; + settingsToSave.swipeExitScreenEdge = [NSNumber numberWithInteger:(uint32_t)swipeExitScreenEdge]; settingsToSave.swipeToExitDistance = [NSNumber numberWithFloat:swipeToExitDistance]; settingsToSave.optimizeGames = optimizeGames; settingsToSave.multiController = multiController; diff --git a/Limelight/Database/TemporarySettings.h b/Limelight/Database/TemporarySettings.h index 495e6904..a5aa7459 100644 --- a/Limelight/Database/TemporarySettings.h +++ b/Limelight/Database/TemporarySettings.h @@ -19,6 +19,7 @@ @property (nonatomic, retain) NSNumber * audioConfig; @property (nonatomic, retain) NSNumber * onscreenControls; @property (nonatomic, retain) NSNumber * keyboardToggleFingers; +@property (nonatomic, retain) NSNumber * swipeExitScreenEdge; @property (nonatomic, retain) NSNumber * swipeToExitDistance; @property (nonatomic, retain) NSString * uniqueId; @property (nonatomic) enum { diff --git a/Limelight/Database/TemporarySettings.m b/Limelight/Database/TemporarySettings.m index f15adc86..1ed58632 100644 --- a/Limelight/Database/TemporarySettings.m +++ b/Limelight/Database/TemporarySettings.m @@ -86,6 +86,7 @@ self.absoluteTouchMode = settings.absoluteTouchMode; self.statsOverlay = settings.statsOverlay; self.keyboardToggleFingers = settings.keyboardToggleFingers; + self.swipeExitScreenEdge = settings.swipeExitScreenEdge; self.swipeToExitDistance = settings.swipeToExitDistance; #endif self.uniqueId = settings.uniqueId; diff --git a/Limelight/Limelight.xcdatamodeld/Moonlight v1.10.xcdatamodel/contents b/Limelight/Limelight.xcdatamodeld/Moonlight v1.10.xcdatamodel/contents index a28cfaf5..bf5f2f7f 100644 --- a/Limelight/Limelight.xcdatamodeld/Moonlight v1.10.xcdatamodel/contents +++ b/Limelight/Limelight.xcdatamodeld/Moonlight v1.10.xcdatamodel/contents @@ -37,6 +37,7 @@ + diff --git a/Limelight/ViewControllers/SettingsViewController.h b/Limelight/ViewControllers/SettingsViewController.h index 5ae11bd1..944d2e94 100644 --- a/Limelight/ViewControllers/SettingsViewController.h +++ b/Limelight/ViewControllers/SettingsViewController.h @@ -29,6 +29,7 @@ @property (strong, nonatomic) IBOutlet UIScrollView *scrollView; @property (strong, nonatomic) IBOutlet UILabel *keyboardToggleFingerNumLabel; @property (strong, nonatomic) IBOutlet UISlider *keyboardToggleFingerNumSlider; +@property (strong, nonatomic) IBOutlet UISegmentedControl *swipeExitScreenEdgeSelector; @property (strong, nonatomic) IBOutlet UILabel *swipeToExitDistanceUILabel; @property (strong, nonatomic) IBOutlet UISlider *swipeToExitDistanceSlider; diff --git a/Limelight/ViewControllers/SettingsViewController.m b/Limelight/ViewControllers/SettingsViewController.m index 4d6dc926..c5fff78b 100644 --- a/Limelight/ViewControllers/SettingsViewController.m +++ b/Limelight/ViewControllers/SettingsViewController.m @@ -10,6 +10,7 @@ #import "TemporarySettings.h" #import "DataManager.h" +#import #import #import @@ -263,15 +264,37 @@ BOOL isCustomResolution(CGSize res) { [self.bitrateSlider addTarget:self action:@selector(bitrateSliderMoved) forControlEvents:UIControlEventValueChanged]; [self updateBitrateText]; [self updateResolutionDisplayViewText]; + [self.keyboardToggleFingerNumSlider setValue:(CGFloat)currentSettings.keyboardToggleFingers.intValue animated:YES]; // Load old setting. old setting was converted to uint16_t before saving. [self.keyboardToggleFingerNumLabel setText:[NSString stringWithFormat:@"Fingers to Tap-Toggle Local Keyboard: %d", (uint16_t)self.keyboardToggleFingerNumSlider.value]]; // Initiate label display [self.keyboardToggleFingerNumSlider addTarget:self action:@selector(keyboardToggleFingerNumSliderMoved) forControlEvents:(UIControlEventValueChanged)]; // Update label display when slider is being moved. + [self.swipeExitScreenEdgeSelector setSelectedSegmentIndex:[self getSelectorIndexFromScreenEdge:(uint32_t)currentSettings.swipeExitScreenEdge.integerValue]]; // Load old setting [self.swipeToExitDistanceSlider setValue:(CGFloat)currentSettings.swipeToExitDistance.floatValue animated:YES]; // Load old setting. [self.swipeToExitDistanceUILabel setText:[NSString stringWithFormat:@"Swipe & Exit Distance: %.2f * screen-width", self.swipeToExitDistanceSlider.value]]; // Initiate label display [self.swipeToExitDistanceSlider addTarget:self action:@selector(swipeToExitDistanceSliderMoved) forControlEvents:(UIControlEventValueChanged)]; // Update label display when slider is being moved. } +- (uint32_t) getScreenEdgeFromSelector { + switch (self.swipeExitScreenEdgeSelector.selectedSegmentIndex) { + case 0: return UIRectEdgeLeft; + case 1: return UIRectEdgeRight; + case 2: return UIRectEdgeLeft|UIRectEdgeRight; + default: return UIRectEdgeLeft; + } +} + +- (uint32_t) getSelectorIndexFromScreenEdge: (uint32_t)edge { + switch (edge) { + case UIRectEdgeLeft: return 0; + case UIRectEdgeRight: return 1; + case UIRectEdgeLeft|UIRectEdgeRight: return 2; + default: return 0; + } + return 0; +} + + - (void) touchModeChanged { // Disable on-screen controls in absolute touch mode [self.onscreenControlSelector setEnabled:[self.touchModeSelector selectedSegmentIndex] == 0]; @@ -546,6 +569,7 @@ BOOL isCustomResolution(CGSize res) { NSInteger keyboardToggleFingers = (uint16_t)self.keyboardToggleFingerNumSlider.value; // NSLog(@"saveSettings keyboardToggleFingers %d", (uint16_t)keyboardToggleFingers); CGFloat swipeToExitDistance = self.swipeToExitDistanceSlider.value; + uint32_t swipeExitScreenEdge = [self getScreenEdgeFromSelector]; BOOL optimizeGames = [self.optimizeSettingsSelector selectedSegmentIndex] == 1; BOOL multiController = [self.multiControllerSelector selectedSegmentIndex] == 1; BOOL swapABXYButtons = [self.swapABXYButtonsSelector selectedSegmentIndex] == 1; @@ -563,6 +587,7 @@ BOOL isCustomResolution(CGSize res) { audioConfig:2 // Stereo onscreenControls:onscreenControls keyboardToggleFingers:keyboardToggleFingers + swipeExitScreenEdge:swipeExitScreenEdge swipeToExitDistance:swipeToExitDistance optimizeGames:optimizeGames multiController:multiController diff --git a/Limelight/ViewControllers/StreamFrameViewController.m b/Limelight/ViewControllers/StreamFrameViewController.m index 95ce6c65..f558764b 100644 --- a/Limelight/ViewControllers/StreamFrameViewController.m +++ b/Limelight/ViewControllers/StreamFrameViewController.m @@ -133,7 +133,7 @@ #else _exitSwipeRecognizer = [[CustomEdgeSwipeGestureRecognizer alloc] initWithTarget:self action:@selector(edgeSwiped)]; - _exitSwipeRecognizer.edges = UIRectEdgeLeft; + _exitSwipeRecognizer.edges = _settings.swipeExitScreenEdge.intValue; _exitSwipeRecognizer.normalizedThresholdDistance = _settings.swipeToExitDistance.floatValue; _exitSwipeRecognizer.delaysTouchesBegan = NO; _exitSwipeRecognizer.delaysTouchesEnded = NO; diff --git a/iPad.storyboard b/iPad.storyboard index 4412cd67..349c4d99 100644 --- a/iPad.storyboard +++ b/iPad.storyboard @@ -109,6 +109,25 @@ + + + + + + + + + + + + - + @@ -160,14 +179,14 @@ - + @@ -177,14 +196,14 @@ - + @@ -194,21 +213,21 @@ - + @@ -218,14 +237,14 @@ - + @@ -237,14 +256,14 @@ - + @@ -254,14 +273,14 @@ - + @@ -271,14 +290,14 @@ - + @@ -288,14 +307,14 @@ - + @@ -305,7 +324,7 @@ - + @@ -315,12 +334,12 @@ - + - +