- emulated controller type tip
- HDR switch fixes
This commit is contained in:
@@ -1451,6 +1451,64 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"emulatedControllerTypeStackDoc" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/uscwmv3vz8g30rmk?singleDoc#"
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "needs_review",
|
||||
"value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/bz6ggagp0ly4loq3?singleDoc#"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "needs_review",
|
||||
"value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/bz6ggagp0ly4loq3?singleDoc#"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "needs_review",
|
||||
"value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/bz6ggagp0ly4loq3?singleDoc#"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"emulatedControllerTypeStackTip" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Sunshine emulates game controller via VigemBus, which support DS4 & Xbox360. \n\n- Xbox360 does not support gyro.\n\n- When “both” is selected, the app will map built-in gyro as player0 & external game controller as player1"
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Sunshine 通过 VigemBus 模拟游戏手柄,支持 DS4 和 Xbox 360。\n\n- Xbox 360 不支持陀螺仪。\n\n- 当选择“同时映射”时,app会将内置陀螺仪映射为玩家0,外接手柄映射为玩家1。"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Sunshine 透過 VigemBus 模擬遊戲控制器,支援 DS4 和 Xbox 360。\n\n- Xbox 360 不支援陀螺儀。\n\n- 當選擇「同時映射」時,app 會將內建陀螺儀對應為玩家0,外接控制器對應為玩家1。"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Sunshine 透過 VigemBus 模擬遊戲控制器,支援 DS4 和 Xbox 360。\n\n- Xbox 360 不支援陀螺儀。\n\n- 當選擇「同時映射」時,app 會將內建陀螺儀對應為玩家0,外接控制器對應為玩家1。"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Enter a new command and alias" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -2972,25 +3030,25 @@
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "VoidLink supports rich, powerful custom on screen widgets including keyboard buttons, gamepad button & joysticks, mouse touchpad & button. Check online document for detail."
|
||||
"value" : "- VoidLink supports rich, powerful custom on screen widgets including keyboard buttons, gamepad button & joysticks, mouse touchpad & button. Check online document for detail.\n\n- Multi-finger tap gesture is available for launching widget layout tool during streaming."
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "VoidLink具备丰富而强大的自定义屏显控件,类型包括:键盘按键、手柄按键和摇杆、鼠标触摸板和按键等。详见在线文档。 "
|
||||
"value" : "- VoidLink具备丰富而强大的自定义屏显控件,类型包括:键盘按键、手柄按键和摇杆、鼠标触摸板和按键等。详见在线文档。 \n\n- 可通过多指轻按手势在串流时打开控件布局工具。"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "VoidLink 提供豐富且強大的自訂螢幕顯示元件,類型包含:鍵盤按鍵、手把按鍵與搖桿、滑鼠觸控板及按鍵等。詳細資訊請參考線上說明文件。"
|
||||
"value" : "- VoidLink 提供豐富且強大的自訂螢幕顯示元件,類型包含:鍵盤按鍵、手把按鍵與搖桿、滑鼠觸控板及按鍵等。詳細資訊請參考線上說明文件。\n\n- 可透過多指輕點手勢,在串流時開啟控制元件佈局工具。"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "VoidLink 提供豐富且強大的自訂螢幕顯示元件,類型包含:鍵盤按鍵、手把按鍵與搖桿、滑鼠觸控板及按鍵等。詳細資訊請參考線上說明文件。"
|
||||
"value" : "- VoidLink 提供豐富且強大的自訂螢幕顯示元件,類型包含:鍵盤按鍵、手把按鍵與搖桿、滑鼠觸控板及按鍵等。詳細資訊請參考線上說明文件。\n\n- 可透過多指輕點手勢,在串流時開啟控制元件佈局工具。"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
- (void)saveSettings;
|
||||
+ (bool)isLandscapeNow;
|
||||
- (void)updateResolutionTable;
|
||||
- (void)widget:(UISlider*)widget setEnabled:(bool)enabled;
|
||||
- (void)widget:(UIView*)widget setEnabled:(bool)enabled;
|
||||
- (void)updateTheme;
|
||||
- (void)hideDynamicLabelsWhenOverlapped:(UIView* )view;
|
||||
- (void)setHidden:(BOOL)hidden forStack:(UIStackView* )stack;
|
||||
|
||||
@@ -514,7 +514,7 @@ BOOL isCustomResolution(CGSize res) {
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[videoSection setSectionWithIcon:[UIImage systemImageNamed:@"waveform"] andSize:20];
|
||||
}
|
||||
[self addSetting:self.resolutionStack ofId:@"resolutionStack" withInfoTag:YES withDynamicLabel:YES to:videoSection];
|
||||
[self addSetting:self.resolutionStack ofId:@"resolutionStack" withInfoTag:NO withDynamicLabel:YES to:videoSection];
|
||||
[self addSetting:self.fpsStack ofId:@"fpsStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
||||
[self addSetting:self.bitrateStack ofId:@"bitrateStack" withInfoTag:YES withDynamicLabel:YES to:videoSection];
|
||||
[self addSetting:self.framepacingStack ofId:@"framepacingStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
||||
@@ -522,6 +522,7 @@ BOOL isCustomResolution(CGSize res) {
|
||||
[self addSetting:self.hdrStack ofId:@"hdrStack" withInfoTag:![self hdrSupported] withDynamicLabel:NO to:videoSection];
|
||||
[self addSetting:self.yuv444Stack ofId:@"yuv444Stack" withInfoTag:YES withDynamicLabel:NO to:videoSection];
|
||||
[self addSetting:self.pipStack ofId:@"pipStack" withInfoTag:YES withDynamicLabel:NO to:videoSection];
|
||||
[self addSetting:self.pipStack ofId:@"pipStack" withInfoTag:YES withDynamicLabel:NO to:videoSection];
|
||||
[videoSection addToParentStack:_parentStack];
|
||||
[videoSection setExpanded:YES];
|
||||
|
||||
@@ -1014,6 +1015,11 @@ BOOL isCustomResolution(CGSize res) {
|
||||
showOnlineDocAction = true;
|
||||
onlineDocLink = [LocalizationHelper localizedStringForKey:@"externalDisplayModeStackDoc"];
|
||||
}
|
||||
if([sender.superview.accessibilityIdentifier isEqualToString: @"emulatedControllerTypeStack"]){
|
||||
tipText = [LocalizationHelper localizedStringForKey:@"emulatedControllerTypeStackTip"];
|
||||
showOnlineDocAction = true;
|
||||
onlineDocLink = [LocalizationHelper localizedStringForKey:@"emulatedControllerTypeStackDoc"];
|
||||
}
|
||||
|
||||
|
||||
UIAlertController *tipsAlertController = [UIAlertController alertControllerWithTitle: [LocalizationHelper localizedStringForKey:@"Tips"] message: [LocalizationHelper localizedStringForKey:@"%@", tipText] preferredStyle:UIAlertControllerStyleAlert];
|
||||
@@ -1311,9 +1317,9 @@ BOOL isCustomResolution(CGSize res) {
|
||||
break;
|
||||
}
|
||||
|
||||
if ([self hdrSupported]) {
|
||||
if (![self hdrSupported]) {
|
||||
[self.hdrSwitch setOn:NO];
|
||||
[self.hdrSwitch setEnabled:NO];
|
||||
[self widget:self.hdrSwitch setEnabled:NO];
|
||||
}
|
||||
else {
|
||||
[self.hdrSwitch setOn:currentSettings.enableHdr];
|
||||
@@ -1654,13 +1660,21 @@ BOOL isCustomResolution(CGSize res) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
- (void) widget:(UISlider*)widget setEnabled:(bool)enabled{
|
||||
[widget setEnabled:enabled];
|
||||
if(enabled){
|
||||
widget.alpha = 1.0;
|
||||
[widget setValue:widget.value + 0.0001]; // this is for low iOS version (like iOS14), only setting this minor value change is able to make widget visibility clear
|
||||
- (void) widget:(UIView*)widget setEnabled:(bool)enabled{
|
||||
if([widget isKindOfClass:[UISlider class]]){
|
||||
UISlider* widgetPtr = (UISlider* )widget;
|
||||
[widgetPtr setEnabled:enabled];
|
||||
if(enabled){
|
||||
widgetPtr.alpha = 1.0;
|
||||
[widgetPtr setValue:widgetPtr.value + 0.0001]; // this is for low iOS version (like iOS14), only setting this minor value change is able to make widget visibility clear
|
||||
}
|
||||
else widgetPtr.alpha = 0.5; // this is for updating widget visibility on low iOS version like mini5 ios14
|
||||
}
|
||||
|
||||
if([widget isKindOfClass:[UISwitch class]]){
|
||||
widget.userInteractionEnabled = enabled;
|
||||
widget.alpha = enabled ? 1 : 0.5;
|
||||
}
|
||||
else widget.alpha = 0.5; // this is for updating widget visibility on low iOS version like mini5 ios14
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1903,7 +1917,7 @@ BOOL isCustomResolution(CGSize res) {
|
||||
}
|
||||
|
||||
- (bool)hdrSupported{
|
||||
return !VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC) || !(AVPlayer.availableHDRModes & AVPlayerHDRModeHDR10);
|
||||
return VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC) && (AVPlayer.availableHDRModes & AVPlayerHDRModeHDR10);
|
||||
}
|
||||
|
||||
- (void) updateBitrateText {
|
||||
|
||||
Reference in New Issue
Block a user