Play-/Source/ui_ios/SettingsViewController.mm

137 lines
5.2 KiB
Text
Raw Permalink Normal View History

#import "SettingsViewController.h"
2021-06-28 19:16:02 -04:00
#import "SettingsListSelectorViewController.h"
2025-03-11 12:48:26 -04:00
#include "AppConfig.h"
#include "PreferenceDefs.h"
#include "../gs/GSH_OpenGL/GSH_OpenGL.h"
@implementation SettingsViewController
2021-06-28 19:16:02 -04:00
- (void)updateGsHandlerNameLabel
{
int gsHandlerId = CAppConfig::GetInstance().GetPreferenceInteger(PREFERENCE_VIDEO_GS_HANDLER);
switch(gsHandlerId)
{
default:
[[fallthrough]];
case PREFERENCE_VALUE_VIDEO_GS_HANDLER_OPENGL:
2021-06-29 08:14:27 -04:00
[gsHandlerName setText:@"OpenGL"];
2021-06-28 19:16:02 -04:00
break;
case PREFERENCE_VALUE_VIDEO_GS_HANDLER_VULKAN:
2021-06-29 08:14:27 -04:00
[gsHandlerName setText:@"Vulkan"];
2021-06-28 19:16:02 -04:00
break;
}
}
2020-12-02 18:37:31 -05:00
- (void)updateResolutionFactorLabel
2019-04-08 20:27:54 -04:00
{
int factor = CAppConfig::GetInstance().GetPreferenceInteger(PREF_CGSH_OPENGL_RESOLUTION_FACTOR);
2020-12-02 18:37:31 -05:00
[resolutionFactor setText:[NSString stringWithFormat:@"%dx", factor]];
2019-04-08 20:27:54 -04:00
}
2020-12-02 18:37:31 -05:00
- (void)viewDidLoad
{
2020-12-02 18:37:31 -05:00
[showFpsSwitch setOn:CAppConfig::GetInstance().GetPreferenceBoolean(PREFERENCE_UI_SHOWFPS)];
[showVirtualPadSwitch setOn:CAppConfig::GetInstance().GetPreferenceBoolean(PREFERENCE_UI_SHOWVIRTUALPAD)];
2021-07-07 07:30:11 -10:00
[virtualPadOpacitySlider setValue:float(CAppConfig::GetInstance().GetPreferenceInteger(PREFERENCE_UI_VIRTUALPADOPACITY) / 100.0)];
[hideVirtualPadWhenControllerConnected setOn:CAppConfig::GetInstance().GetPreferenceBoolean(PREFERENCE_UI_HIDEVIRTUALPAD_CONTROLLER_CONNECTED)];
2021-07-07 08:38:06 -10:00
[virtualPadHapticFeedbackSwitch setOn:CAppConfig::GetInstance().GetPreferenceBoolean(PREFERENCE_UI_VIRTUALPAD_HAPTICFEEDBACK)];
2021-06-28 19:16:02 -04:00
[self updateGsHandlerNameLabel];
2019-04-08 20:27:54 -04:00
[self updateResolutionFactorLabel];
[resizeOutputToWidescreen setOn:CAppConfig::GetInstance().GetPreferenceBoolean(PREF_CGSHANDLER_WIDESCREEN)];
2020-12-02 18:37:31 -05:00
[forceBilinearFiltering setOn:CAppConfig::GetInstance().GetPreferenceBoolean(PREF_CGSH_OPENGL_FORCEBILINEARTEXTURES)];
2020-12-02 18:37:31 -05:00
[enableAudioOutput setOn:CAppConfig::GetInstance().GetPreferenceBoolean(PREFERENCE_AUDIO_ENABLEOUTPUT)];
[enableAltServerJIT setOn:CAppConfig::GetInstance().GetPreferenceBoolean(PREFERENCE_ALTSTORE_JIT_ENABLED)];
2021-11-20 17:01:30 -05:00
2020-12-02 18:37:31 -05:00
NSString* versionString = [NSString stringWithFormat:@"%s - %s", PLAY_VERSION, __DATE__];
versionInfoLabel.text = versionString;
}
2020-12-02 18:37:31 -05:00
- (void)viewDidDisappear:(BOOL)animated
{
CAppConfig::GetInstance().SetPreferenceBoolean(PREFERENCE_UI_SHOWFPS, showFpsSwitch.isOn);
CAppConfig::GetInstance().SetPreferenceBoolean(PREFERENCE_UI_SHOWVIRTUALPAD, showVirtualPadSwitch.isOn);
2021-07-07 07:30:11 -10:00
CAppConfig::GetInstance().SetPreferenceBoolean(PREFERENCE_UI_HIDEVIRTUALPAD_CONTROLLER_CONNECTED, showVirtualPadSwitch.isOn);
int prefValue = int(virtualPadOpacitySlider.value * 100.0);
CAppConfig::GetInstance().SetPreferenceInteger(PREFERENCE_UI_VIRTUALPADOPACITY, prefValue);
2021-07-07 08:38:06 -10:00
CAppConfig::GetInstance().SetPreferenceBoolean(PREFERENCE_UI_VIRTUALPAD_HAPTICFEEDBACK, virtualPadHapticFeedbackSwitch.isOn);
2020-12-02 18:37:31 -05:00
CAppConfig::GetInstance().SetPreferenceBoolean(PREF_CGSHANDLER_WIDESCREEN, resizeOutputToWidescreen.isOn);
2016-01-19 10:32:11 -05:00
CAppConfig::GetInstance().SetPreferenceBoolean(PREF_CGSH_OPENGL_FORCEBILINEARTEXTURES, forceBilinearFiltering.isOn);
2020-12-02 18:37:31 -05:00
CAppConfig::GetInstance().SetPreferenceBoolean(PREFERENCE_AUDIO_ENABLEOUTPUT, enableAudioOutput.isOn);
2020-12-02 18:37:31 -05:00
CAppConfig::GetInstance().SetPreferenceBoolean(PREFERENCE_ALTSTORE_JIT_ENABLED, enableAltServerJIT.isOn);
2021-11-20 17:01:30 -05:00
CAppConfig::GetInstance().Save();
if(self.completionHandler)
{
self.completionHandler(self.fullDeviceScanRequested);
}
}
2020-12-02 18:37:31 -05:00
- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
2019-04-08 20:27:54 -04:00
{
2020-12-02 18:37:31 -05:00
[tableView deselectRowAtIndexPath:indexPath animated:YES];
2019-04-08 20:27:54 -04:00
}
- (BOOL)shouldPerformSegueWithIdentifier:(NSString*)identifier sender:(id)sender
{
if([identifier isEqualToString:@"showGsHandlerSelector"])
{
2021-08-04 10:23:51 -04:00
#ifdef HAS_GSH_VULKAN
return self.allowGsHandlerSelection;
2021-08-04 10:23:51 -04:00
#else
return FALSE;
#endif
}
2021-11-04 21:16:54 -04:00
return TRUE;
}
2020-12-02 18:37:31 -05:00
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
2019-04-08 20:27:54 -04:00
{
2021-06-28 19:16:02 -04:00
if([segue.identifier isEqualToString:@"showResolutionFactorSelector"])
{
SettingsListSelectorViewController* selector = (SettingsListSelectorViewController*)segue.destinationViewController;
int factor = CAppConfig::GetInstance().GetPreferenceInteger(PREF_CGSH_OPENGL_RESOLUTION_FACTOR);
selector.value = log2(factor);
}
else if([segue.identifier isEqualToString:@"showGsHandlerSelector"])
2019-04-08 20:27:54 -04:00
{
2021-06-28 19:16:02 -04:00
SettingsListSelectorViewController* selector = (SettingsListSelectorViewController*)segue.destinationViewController;
selector.value = CAppConfig::GetInstance().GetPreferenceInteger(PREFERENCE_VIDEO_GS_HANDLER);
2019-04-08 20:27:54 -04:00
}
}
2021-06-28 19:16:02 -04:00
- (IBAction)selectedGsHandler:(UIStoryboardSegue*)segue
2019-04-08 20:27:54 -04:00
{
2021-06-28 19:16:02 -04:00
SettingsListSelectorViewController* selector = (SettingsListSelectorViewController*)segue.sourceViewController;
CAppConfig::GetInstance().SetPreferenceInteger(PREFERENCE_VIDEO_GS_HANDLER, selector.value);
[self updateGsHandlerNameLabel];
}
- (IBAction)selectedResolutionFactor:(UIStoryboardSegue*)segue
{
SettingsListSelectorViewController* selector = (SettingsListSelectorViewController*)segue.sourceViewController;
int factor = 1 << selector.value;
CAppConfig::GetInstance().SetPreferenceInteger(PREF_CGSH_OPENGL_RESOLUTION_FACTOR, factor);
[self updateResolutionFactorLabel];
2019-04-08 20:27:54 -04:00
}
- (IBAction)startFullDeviceScan
{
if(!self.allowFullDeviceScan) return;
self.fullDeviceScanRequested = true;
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)returnToParent
{
2021-06-22 11:02:55 -04:00
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}
@end