diff --git a/Limelight/Base.lproj/iPad.storyboard b/Limelight/Base.lproj/iPad.storyboard index 4cb47bb0..5658d452 100644 --- a/Limelight/Base.lproj/iPad.storyboard +++ b/Limelight/Base.lproj/iPad.storyboard @@ -154,7 +154,7 @@ - + @@ -179,7 +179,7 @@ - + @@ -199,7 +199,7 @@ - + @@ -333,7 +333,7 @@ - + @@ -589,7 +589,7 @@ - + @@ -656,52 +656,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -729,7 +683,7 @@ - + @@ -738,8 +692,8 @@ - - + + @@ -750,7 +704,7 @@ - + @@ -788,14 +742,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -820,8 +828,8 @@ - - + + @@ -836,8 +844,6 @@ - - @@ -848,6 +854,8 @@ + + diff --git a/Limelight/ViewControllers/SettingsViewController.h b/Limelight/ViewControllers/SettingsViewController.h index 984589da..5d5bf641 100644 --- a/Limelight/ViewControllers/SettingsViewController.h +++ b/Limelight/ViewControllers/SettingsViewController.h @@ -34,14 +34,17 @@ @property (strong, nonatomic) IBOutlet UIStackView *softKeyboardGestureStack; @property (weak, nonatomic) IBOutlet UISegmentedControl *softKeyboardGestureSelector; @property (strong, nonatomic) IBOutlet UIStackView *liftStreamViewForKeyboardStack; -@property (strong, nonatomic) IBOutlet UIStackView *showKeyboardToolbarStack; +@property (strong, nonatomic) IBOutlet UIStackView *softKeyboardToolbarStack; +@property (weak, nonatomic) IBOutlet UISwitch *softKeyboardToolbarSwitch; @property (strong, nonatomic) IBOutlet UIStackView *slideToSettingsScreenEdgeStack; @property (strong, nonatomic) IBOutlet UIStackView *slideToToolboxScreenEdgeStack; @property (strong, nonatomic) IBOutlet UIStackView *slideToSettingsDistanceStack; @property (strong, nonatomic) IBOutlet UIStackView *optimizeGamesStack; @property (strong, nonatomic) IBOutlet UIStackView *multiControllerStack; +@property (weak, nonatomic) IBOutlet UISwitch *multiControllerSwitch; @property (strong, nonatomic) IBOutlet UIStackView *swapAbaxyStack; @property (strong, nonatomic) IBOutlet UIStackView *audioOnPcStack; +@property (weak, nonatomic) IBOutlet UISwitch *audioOnPcSwitch; @property (strong, nonatomic) IBOutlet UIStackView *codecStack; @property (strong, nonatomic) IBOutlet UIStackView *yuv444Stack; @property (strong, nonatomic) IBOutlet UIStackView *HdrStack; @@ -65,9 +68,7 @@ @property (strong, nonatomic) IBOutlet UILabel *onscreenControllerLabel; @property (strong, nonatomic) IBOutlet UISegmentedControl *onScreenWidgetSelector; //@property (strong, nonatomic) IBOutlet UISegmentedControl *asyncNativeTouchPrioritySelector; -@property (strong, nonatomic) IBOutlet UISegmentedControl *multiControllerSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *swapABXYButtonsSelector; -@property (strong, nonatomic) IBOutlet UISegmentedControl *audioOnPCSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *codecSelector; @property (weak, nonatomic) IBOutlet UISwitch *hdrSwitch; @property (weak, nonatomic) IBOutlet UISwitch *yuv444Switch; @@ -76,7 +77,6 @@ @property (strong, nonatomic) IBOutlet UISegmentedControl *statsOverlaySelector; @property (strong, nonatomic) IBOutlet UIScrollView *scrollView; @property (strong, nonatomic) IBOutlet UISegmentedControl *liftStreamViewForKeyboardSelector; -@property (strong, nonatomic) IBOutlet UISegmentedControl *showKeyboardToolbarSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *slideToSettingsScreenEdgeSelector; @property (strong, nonatomic) IBOutlet UILabel *touchMoveEventIntervalLabel; diff --git a/Limelight/ViewControllers/SettingsViewController.m b/Limelight/ViewControllers/SettingsViewController.m index d24fe49f..7d5503b0 100644 --- a/Limelight/ViewControllers/SettingsViewController.m +++ b/Limelight/ViewControllers/SettingsViewController.m @@ -583,11 +583,11 @@ BOOL isCustomResolution(CGSize res) { [otherSection setSectionWithIcon:[UIImage systemImageNamed:@"cube"] andSize:20.5]; } [self addSetting:self.statsOverlayStack ofId:@"statsOverlayStack" withInfoTag:NO withDynamicLabel:NO to:otherSection]; + [self addSetting:self.unlockDisplayOrientationStack ofId:@"unlockDisplayOrientationStack" withInfoTag:YES withDynamicLabel:NO to:otherSection]; [self addSetting:self.optimizeGamesStack ofId:@"optimizeGamesStack" withInfoTag:YES withDynamicLabel:NO to:otherSection]; [self addSetting:self.audioOnPcStack ofId:@"audioOnPcStack" withInfoTag:NO withDynamicLabel:NO to:otherSection]; [self addSetting:self.multiControllerStack ofId:@"multiControllerStack" withInfoTag:YES withDynamicLabel:NO to:otherSection]; - [self addSetting:self.showKeyboardToolbarStack ofId:@"showKeyboardToolbarStack" withInfoTag:YES withDynamicLabel:NO to:otherSection]; - [self addSetting:self.unlockDisplayOrientationStack ofId:@"unlockDisplayOrientationStack" withInfoTag:YES withDynamicLabel:NO to:otherSection]; + [self addSetting:self.softKeyboardToolbarStack ofId:@"softKeyboardToolbarStack" withInfoTag:YES withDynamicLabel:NO to:otherSection]; [otherSection addToParentStack:_parentStack]; [otherSection setExpanded:YES]; @@ -599,7 +599,7 @@ BOOL isCustomResolution(CGSize res) { [experimentalSection setSectionWithIcon:[UIImage imageNamed:@"flask"] andSize:20]; } // [self addSetting:self.asyncTouchStack ofId:@"asyncTouchStack" withInfoTag:YES withDynamicLabel:NO to:experimentalSection]; - [self addSetting:self.touchMoveEventIntervalStack ofId:@"touchMoveEventIntervalStack" withInfoTag:YES withDynamicLabel:NO to:experimentalSection]; + [self addSetting:self.touchMoveEventIntervalStack ofId:@"touchMoveEventIntervalStack" withInfoTag:YES withDynamicLabel:YES to:experimentalSection]; [experimentalSection addToParentStack:_parentStack]; [experimentalSection setExpanded:YES]; } @@ -643,7 +643,7 @@ BOOL isCustomResolution(CGSize res) { [parentStackTmp addArrangedSubview:self.onScreenWidgetStack]; [parentStackTmp addArrangedSubview:self.softKeyboardGestureStack]; [parentStackTmp addArrangedSubview:self.liftStreamViewForKeyboardStack]; - [parentStackTmp addArrangedSubview:self.showKeyboardToolbarStack]; + [parentStackTmp addArrangedSubview:self.softKeyboardToolbarStack]; [parentStackTmp addArrangedSubview:self.slideToSettingsScreenEdgeStack]; [parentStackTmp addArrangedSubview:self.slideToToolboxScreenEdgeStack]; [parentStackTmp addArrangedSubview:self.slideToSettingsDistanceStack]; @@ -1267,9 +1267,9 @@ BOOL isCustomResolution(CGSize res) { [self.citrixX1MouseSwitch setOn:currentSettings.btMouseSupport]; [self.optimizeGamesSwitch setOn: currentSettings.optimizeGames]; [self.framePacingSelector setSelectedSegmentIndex:currentSettings.useFramePacing ? 1 : 0]; - [self.multiControllerSelector setSelectedSegmentIndex:currentSettings.multiController ? 1 : 0]; + [self.multiControllerSwitch setOn:currentSettings.multiController]; [self.swapABXYButtonsSelector setSelectedSegmentIndex:currentSettings.swapABXYButtons ? 1 : 0]; - [self.audioOnPCSelector setSelectedSegmentIndex:currentSettings.playAudioOnPC ? 1 : 0]; + [self.audioOnPcSwitch setOn:currentSettings.playAudioOnPC]; _lastSelectedResolutionIndex = resolution; [self.resolutionSelector setSelectedSegmentIndex:resolution]; [self.resolutionSelector addTarget:self action:@selector(newResolutionChosen) forControlEvents:UIControlEventValueChanged]; @@ -1297,7 +1297,7 @@ BOOL isCustomResolution(CGSize res) { [self.liftStreamViewForKeyboardSelector setSelectedSegmentIndex:currentSettings.liftStreamViewForKeyboard ? 1 : 0];// Load old setting // showkeyboard toolbar setting - [self.showKeyboardToolbarSelector setSelectedSegmentIndex:currentSettings.showKeyboardToolbar ? 1 : 0];// Load old setting + [self.softKeyboardToolbarSwitch setOn:currentSettings.showKeyboardToolbar];// Load old setting // reverse mouse wheel direction setting [self.reverseMouseWheelDirectionSelector setSelectedSegmentIndex:currentSettings.reverseMouseWheelDirection ? 1 : 0];// Load old setting @@ -1354,8 +1354,8 @@ BOOL isCustomResolution(CGSize res) { // touch move event interval for native-touch. [self.touchMoveEventIntervalSlider setValue:currentSettings.touchMoveEventInterval.intValue animated:YES]; // Load old setting. - [self.touchMoveEventIntervalSlider addTarget:self action:@selector(touchMoveEventIntervalSliderMoved) forControlEvents:(UIControlEventValueChanged)]; // Update label display when slider is being moved. - [self touchMoveEventIntervalSliderMoved]; + [self.touchMoveEventIntervalSlider addTarget:self action:@selector(touchMoveEventIntervalSliderMoved:) forControlEvents:(UIControlEventValueChanged)]; // Update label display when slider is being moved. + [self touchMoveEventIntervalSliderMoved:self.touchMoveEventIntervalSlider]; // this part will enable/disable oscSelector & the asyncNativeTouchPriority selector @@ -1583,7 +1583,8 @@ BOOL isCustomResolution(CGSize res) { //bool asyncNativeTouchEnabled = [self.asyncNativeTouchPrioritySelector selectedSegmentIndex] != AsyncNativeTouchOff; self.enableOswSwitchStack.hidden = !isNativeTouch; // [self.asyncNativeTouchPrioritySelector setEnabled:![self showOswSelector]]; // this selector stay aligned with oscSelector - [self.touchMoveEventIntervalSlider setEnabled: isNativeTouch]; // applies to native touch modes only + [self.touchMoveEventIntervalSlider setEnabled: isNativeTouch]; + [self touchMoveEventIntervalSliderMoved:self.touchMoveEventIntervalSlider]; self.pointerVelocityDividerStack.hidden = !isNativeTouch; self.pointerVelocityFactorStack.hidden = !isNativeTouch; self.mousePointerVelocityStack.hidden = !(sender.selectedSegmentIndex == RelativeTouch); @@ -1770,8 +1771,9 @@ BOOL isCustomResolution(CGSize res) { self.resolutionDisplayLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; */ } -- (void) touchMoveEventIntervalSliderMoved{ - [self.touchMoveEventIntervalLabel setText:[LocalizationHelper localizedStringForKey:@"Interval of Multi-Touch Move Events: %d μs", (uint16_t)self.touchMoveEventIntervalSlider.value]]; +- (void) touchMoveEventIntervalSliderMoved:(UISlider* )sender{ + [self findDynamicLabelFromStack:self.touchMoveEventIntervalStack].text = sender.enabled ? + [NSString stringWithFormat:@" %d μs ", (uint16_t)self.touchMoveEventIntervalSlider.value] : @""; } @@ -1941,11 +1943,11 @@ BOOL isCustomResolution(CGSize res) { NSInteger asyncNativeTouchPriority = 1; //BOOL liftStreamViewForKeyboard = [self.liftStreamViewForKeyboardSelector selectedSegmentIndex] == 1; BOOL liftStreamViewForKeyboard = YES; // enable and hide this option - BOOL showKeyboardToolbar = [self.showKeyboardToolbarSelector selectedSegmentIndex] == 1; + BOOL showKeyboardToolbar = self.softKeyboardToolbarSwitch.isOn; BOOL optimizeGames = self.optimizeGamesSwitch.isOn; - BOOL multiController = [self.multiControllerSelector selectedSegmentIndex] == 1; + BOOL multiController = self.multiControllerSwitch.isOn; BOOL swapABXYButtons = [self.swapABXYButtonsSelector selectedSegmentIndex] == 1; - BOOL audioOnPC = [self.audioOnPCSelector selectedSegmentIndex] == 1; + BOOL audioOnPC = self.audioOnPcSwitch.isOn; uint32_t preferredCodec = [self getChosenCodecPreference]; BOOL enableYUV444 = self.yuv444Switch.isOn; BOOL btMouseSupport = self.citrixX1MouseSwitch.isOn; diff --git a/Limelight/mul.lproj/iPad.xcstrings b/Limelight/mul.lproj/iPad.xcstrings index a50583b5..28532f1e 100644 --- a/Limelight/mul.lproj/iPad.xcstrings +++ b/Limelight/mul.lproj/iPad.xcstrings @@ -1,36 +1,6 @@ { "sourceLanguage" : "en", "strings" : { - "1ri-Kt-gSf.text" : { - "comment" : "Class = \"UILabel\"; text = \"dfasfasdfasdf\"; ObjectID = \"1ri-Kt-gSf\";", - "extractionState" : "stale", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "dfasfasdfasdf" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "自定义分辨率" - } - }, - "zh-Hant" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "自定义分辨率" - } - }, - "zh-HK" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "自定义分辨率" - } - } - } - }, "2Bp-XZ-cCw.text" : { "comment" : "Class = \"UILabel\"; text = \"Async Native Touch\"; ObjectID = \"2Bp-XZ-cCw\";", "extractionState" : "extracted_with_value", @@ -469,6 +439,18 @@ } } }, + "8wW-Sq-EOE.text" : { + "comment" : "Class = \"UILabel\"; text = \"Play Audio on PC\"; ObjectID = \"8wW-Sq-EOE\";", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Play Audio on PC" + } + } + } + }, "aFy-0w-YPe.segmentTitles[0]" : { "comment" : "Class = \"UISegmentedControl\"; aFy-0w-YPe.segmentTitles[0] = \"H.264\"; ObjectID = \"aFy-0w-YPe\";", "extractionState" : "extracted_with_value", @@ -765,7 +747,7 @@ }, "bFD-Ng-abn.text" : { "comment" : "Class = \"UILabel\"; text = \"Multi-Controller Mode\"; ObjectID = \"bFD-Ng-abn\";", - "extractionState" : "extracted_with_value", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -1586,13 +1568,13 @@ } }, "FJv-HJ-UYJ.text" : { - "comment" : "Class = \"UILabel\"; text = \"Interval of Multi-Touch Move Events: 200 us \"; ObjectID = \"FJv-HJ-UYJ\";", + "comment" : "Class = \"UILabel\"; text = \"Touch Move Event Interval\"; ObjectID = \"FJv-HJ-UYJ\";", "extractionState" : "extracted_with_value", "localizations" : { "en" : { "stringUnit" : { "state" : "new", - "value" : "Interval of Multi-Touch Move Events: 200 us " + "value" : "Touch Move Event Interval" } } } @@ -1629,7 +1611,7 @@ }, "fXq-oD-MrL.text" : { "comment" : "Class = \"UILabel\"; text = \"Play Audio on PC\"; ObjectID = \"fXq-oD-MrL\";", - "extractionState" : "extracted_with_value", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -1779,7 +1761,7 @@ }, "gid-cU-pV9.segmentTitles[0]" : { "comment" : "Class = \"UISegmentedControl\"; gid-cU-pV9.segmentTitles[0] = \"No\"; ObjectID = \"gid-cU-pV9\";", - "extractionState" : "extracted_with_value", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -1809,7 +1791,7 @@ }, "gid-cU-pV9.segmentTitles[1]" : { "comment" : "Class = \"UISegmentedControl\"; gid-cU-pV9.segmentTitles[1] = \"Yes\"; ObjectID = \"gid-cU-pV9\";", - "extractionState" : "extracted_with_value", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -1928,30 +1910,30 @@ } }, "hAo-1k-oYF.text" : { - "comment" : "Class = \"UILabel\"; text = \"Allow 90° Display Rotation in Steaming\"; ObjectID = \"hAo-1k-oYF\";", + "comment" : "Class = \"UILabel\"; text = \"90° Display Rotation in Steaming\"; ObjectID = \"hAo-1k-oYF\";", "extractionState" : "extracted_with_value", "localizations" : { "en" : { "stringUnit" : { "state" : "new", - "value" : "Allow 90° Display Rotation in Steaming" + "value" : "90° Display Rotation in Steaming" } }, "zh-Hans" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "允许90°转屏(App视图、串流时生效)" } }, "zh-Hant" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "允许90°转屏(App视图、串流时生效)" } }, "zh-HK" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "允许90°转屏(App视图、串流时生效)" } } @@ -2271,7 +2253,7 @@ }, "KlC-fG-wEi.segmentTitles[0]" : { "comment" : "Class = \"UISegmentedControl\"; KlC-fG-wEi.segmentTitles[0] = \"No\"; ObjectID = \"KlC-fG-wEi\";", - "extractionState" : "extracted_with_value", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -2301,7 +2283,7 @@ }, "KlC-fG-wEi.segmentTitles[1]" : { "comment" : "Class = \"UISegmentedControl\"; KlC-fG-wEi.segmentTitles[1] = \"Auto\"; ObjectID = \"KlC-fG-wEi\";", - "extractionState" : "extracted_with_value", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -2390,61 +2372,61 @@ } }, "KNe-bN-CDb.segmentTitles[0]" : { - "comment" : "Class = \"UISegmentedControl\"; KNe-bN-CDb.segmentTitles[0] = \"No\"; ObjectID = \"KNe-bN-CDb\";", + "comment" : "Class = \"UISegmentedControl\"; KNe-bN-CDb.segmentTitles[0] = \"Disabled\"; ObjectID = \"KNe-bN-CDb\";", "extractionState" : "extracted_with_value", "localizations" : { "en" : { "stringUnit" : { "state" : "new", - "value" : "No" + "value" : "Disabled" } }, "zh-Hans" : { "stringUnit" : { - "state" : "translated", - "value" : "关闭" + "state" : "needs_review", + "value" : "禁用" } }, "zh-Hant" : { "stringUnit" : { - "state" : "translated", - "value" : "关闭" + "state" : "needs_review", + "value" : "禁用" } }, "zh-HK" : { "stringUnit" : { - "state" : "translated", - "value" : "关闭" + "state" : "needs_review", + "value" : "禁用" } } } }, "KNe-bN-CDb.segmentTitles[1]" : { - "comment" : "Class = \"UISegmentedControl\"; KNe-bN-CDb.segmentTitles[1] = \"Yes\"; ObjectID = \"KNe-bN-CDb\";", + "comment" : "Class = \"UISegmentedControl\"; KNe-bN-CDb.segmentTitles[1] = \"Allowed\"; ObjectID = \"KNe-bN-CDb\";", "extractionState" : "extracted_with_value", "localizations" : { "en" : { "stringUnit" : { "state" : "new", - "value" : "Yes" + "value" : "Allowed" } }, "zh-Hans" : { "stringUnit" : { - "state" : "translated", - "value" : "启用" + "state" : "needs_review", + "value" : "允许" } }, "zh-Hant" : { "stringUnit" : { - "state" : "translated", - "value" : "启用" + "state" : "needs_review", + "value" : "允许" } }, "zh-HK" : { "stringUnit" : { - "state" : "translated", - "value" : "启用" + "state" : "needs_review", + "value" : "允许" } } } @@ -3361,6 +3343,18 @@ } } }, + "QdG-9a-5AZ.text" : { + "comment" : "Class = \"UILabel\"; text = \"Soft Keyboard Toolbar\"; ObjectID = \"QdG-9a-5AZ\";", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Soft Keyboard Toolbar" + } + } + } + }, "Qs9-iS-YoW.text" : { "comment" : "Class = \"UILabel\"; text = \"Divider Position\"; ObjectID = \"Qs9-iS-YoW\";", "extractionState" : "extracted_with_value", @@ -3673,6 +3667,18 @@ } } }, + "SAQ-04-n4h.text" : { + "comment" : "Class = \"UILabel\"; text = \"Multi-Controller Mode\"; ObjectID = \"SAQ-04-n4h\";", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Multi-Controller Mode" + } + } + } + }, "sbd-0j-KWS.text" : { "comment" : "Class = \"UILabel\"; text = \"test\"; ObjectID = \"sbd-0j-KWS\";", "extractionState" : "extracted_with_value",