Qt configs: Add connectCheckbox function

This commit is contained in:
wheremyfoodat 2024-12-01 19:28:38 +02:00
parent 87878d3cba
commit 0f92364534

View file

@ -30,6 +30,13 @@ ConfigWindow::ConfigWindow(ConfigCallback callback, const EmulatorConfig& emuCon
helpText->setText(helpTexts[row]); helpText->setText(helpTexts[row]);
}); });
auto connectCheckbox = [&](QCheckBox* checkbox, bool& setting) {
connect(checkbox, &QCheckBox::toggled, this, [&](bool checked) {
setting = checked;
updateConfig();
});
};
QVBoxLayout* mainLayout = new QVBoxLayout; QVBoxLayout* mainLayout = new QVBoxLayout;
QHBoxLayout* hLayout = new QHBoxLayout; QHBoxLayout* hLayout = new QHBoxLayout;
@ -62,18 +69,12 @@ ConfigWindow::ConfigWindow(ConfigCallback callback, const EmulatorConfig& emuCon
QCheckBox* showAppVersion = new QCheckBox(tr("Show version on window title")); QCheckBox* showAppVersion = new QCheckBox(tr("Show version on window title"));
showAppVersion->setChecked(config.windowSettings.showAppVersion); showAppVersion->setChecked(config.windowSettings.showAppVersion);
connect(showAppVersion, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(showAppVersion, config.windowSettings.showAppVersion);
config.windowSettings.showAppVersion = checked;
updateConfig();
});
guiLayout->addRow(showAppVersion); guiLayout->addRow(showAppVersion);
QCheckBox* rememberPosition = new QCheckBox(tr("Remember window position")); QCheckBox* rememberPosition = new QCheckBox(tr("Remember window position"));
rememberPosition->setChecked(config.windowSettings.rememberPosition); rememberPosition->setChecked(config.windowSettings.rememberPosition);
connect(rememberPosition, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(rememberPosition, config.windowSettings.rememberPosition);
config.windowSettings.rememberPosition = checked;
updateConfig();
});
guiLayout->addRow(rememberPosition); guiLayout->addRow(rememberPosition);
// General settings // General settings
@ -107,26 +108,17 @@ ConfigWindow::ConfigWindow(ConfigCallback callback, const EmulatorConfig& emuCon
QCheckBox* discordRpcEnabled = new QCheckBox(tr("Enable Discord RPC")); QCheckBox* discordRpcEnabled = new QCheckBox(tr("Enable Discord RPC"));
discordRpcEnabled->setChecked(config.discordRpcEnabled); discordRpcEnabled->setChecked(config.discordRpcEnabled);
connect(discordRpcEnabled, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(discordRpcEnabled, config.discordRpcEnabled);
config.discordRpcEnabled = checked;
updateConfig();
});
genLayout->addRow(discordRpcEnabled); genLayout->addRow(discordRpcEnabled);
QCheckBox* usePortableBuild = new QCheckBox(tr("Use portable build")); QCheckBox* usePortableBuild = new QCheckBox(tr("Use portable build"));
usePortableBuild->setChecked(config.usePortableBuild); usePortableBuild->setChecked(config.usePortableBuild);
connect(usePortableBuild, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(usePortableBuild, config.usePortableBuild);
config.usePortableBuild = checked;
updateConfig();
});
genLayout->addRow(usePortableBuild); genLayout->addRow(usePortableBuild);
QCheckBox* printAppVersion = new QCheckBox(tr("Print version in console output")); QCheckBox* printAppVersion = new QCheckBox(tr("Print version in console output"));
printAppVersion->setChecked(config.printAppVersion); printAppVersion->setChecked(config.printAppVersion);
connect(printAppVersion, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(printAppVersion, config.printAppVersion);
config.printAppVersion = checked;
updateConfig();
});
genLayout->addRow(printAppVersion); genLayout->addRow(printAppVersion);
// Graphics settings // Graphics settings
@ -148,57 +140,36 @@ ConfigWindow::ConfigWindow(ConfigCallback callback, const EmulatorConfig& emuCon
QCheckBox* enableRenderdoc = new QCheckBox(tr("Enable Renderdoc")); QCheckBox* enableRenderdoc = new QCheckBox(tr("Enable Renderdoc"));
enableRenderdoc->setChecked(config.enableRenderdoc); enableRenderdoc->setChecked(config.enableRenderdoc);
connect(enableRenderdoc, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(enableRenderdoc, config.enableRenderdoc);
config.enableRenderdoc = checked;
updateConfig();
});
gpuLayout->addRow(enableRenderdoc); gpuLayout->addRow(enableRenderdoc);
QCheckBox* shaderJitEnabled = new QCheckBox(tr("Enable shader JIT")); QCheckBox* shaderJitEnabled = new QCheckBox(tr("Enable shader JIT"));
shaderJitEnabled->setChecked(config.shaderJitEnabled); shaderJitEnabled->setChecked(config.shaderJitEnabled);
connect(shaderJitEnabled, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(shaderJitEnabled, config.shaderJitEnabled);
config.shaderJitEnabled = checked;
updateConfig();
});
gpuLayout->addRow(shaderJitEnabled); gpuLayout->addRow(shaderJitEnabled);
QCheckBox* vsyncEnabled = new QCheckBox(tr("Enable VSync")); QCheckBox* vsyncEnabled = new QCheckBox(tr("Enable VSync"));
vsyncEnabled->setChecked(config.vsyncEnabled); vsyncEnabled->setChecked(config.vsyncEnabled);
connect(vsyncEnabled, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(vsyncEnabled, config.vsyncEnabled);
config.vsyncEnabled = checked;
updateConfig();
});
gpuLayout->addRow(vsyncEnabled); gpuLayout->addRow(vsyncEnabled);
QCheckBox* useUbershaders = new QCheckBox(tr("Use ubershaders (No stutter, maybe slower)")); QCheckBox* useUbershaders = new QCheckBox(tr("Use ubershaders (No stutter, maybe slower)"));
useUbershaders->setChecked(config.useUbershaders); useUbershaders->setChecked(config.useUbershaders);
connect(useUbershaders, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(useUbershaders, config.useUbershaders);
config.useUbershaders = checked;
updateConfig();
});
gpuLayout->addRow(useUbershaders); gpuLayout->addRow(useUbershaders);
QCheckBox* accurateShaderMul = new QCheckBox(tr("Accurate shader multiplication")); QCheckBox* accurateShaderMul = new QCheckBox(tr("Accurate shader multiplication"));
accurateShaderMul->setChecked(config.accurateShaderMul); accurateShaderMul->setChecked(config.accurateShaderMul);
connect(accurateShaderMul, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(accurateShaderMul, config.accurateShaderMul);
config.accurateShaderMul = checked;
updateConfig();
});
gpuLayout->addRow(accurateShaderMul); gpuLayout->addRow(accurateShaderMul);
QCheckBox* accelerateShaders = new QCheckBox(tr("Accelerate shaders")); QCheckBox* accelerateShaders = new QCheckBox(tr("Accelerate shaders"));
accelerateShaders->setChecked(config.accelerateShaders); accelerateShaders->setChecked(config.accelerateShaders);
connect(accelerateShaders, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(accelerateShaders, config.accelerateShaders);
config.accelerateShaders = checked;
updateConfig();
});
gpuLayout->addRow(accelerateShaders); gpuLayout->addRow(accelerateShaders);
QCheckBox* forceShadergenForLights = new QCheckBox(tr("Force shadergen when rendering lights")); QCheckBox* forceShadergenForLights = new QCheckBox(tr("Force shadergen when rendering lights"));
connect(forceShadergenForLights, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(forceShadergenForLights, config.forceShadergenForLights);
config.forceShadergenForLights = checked;
updateConfig();
});
gpuLayout->addRow(forceShadergenForLights); gpuLayout->addRow(forceShadergenForLights);
QSpinBox* lightShadergenThreshold = new QSpinBox; QSpinBox* lightShadergenThreshold = new QSpinBox;
@ -229,34 +200,22 @@ ConfigWindow::ConfigWindow(ConfigCallback callback, const EmulatorConfig& emuCon
QCheckBox* audioEnabled = new QCheckBox(tr("Enable audio")); QCheckBox* audioEnabled = new QCheckBox(tr("Enable audio"));
audioEnabled->setChecked(config.audioEnabled); audioEnabled->setChecked(config.audioEnabled);
connect(audioEnabled, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(audioEnabled, config.audioEnabled);
config.audioEnabled = checked;
updateConfig();
});
spuLayout->addRow(audioEnabled); spuLayout->addRow(audioEnabled);
QCheckBox* aacEnabled = new QCheckBox(tr("Enable AAC audio")); QCheckBox* aacEnabled = new QCheckBox(tr("Enable AAC audio"));
aacEnabled->setChecked(config.aacEnabled); aacEnabled->setChecked(config.aacEnabled);
connect(aacEnabled, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(aacEnabled, config.aacEnabled);
config.aacEnabled = checked;
updateConfig();
});
spuLayout->addRow(aacEnabled); spuLayout->addRow(aacEnabled);
QCheckBox* printDSPFirmware = new QCheckBox(tr("Print DSP firmware")); QCheckBox* printDSPFirmware = new QCheckBox(tr("Print DSP firmware"));
printDSPFirmware->setChecked(config.printDSPFirmware); printDSPFirmware->setChecked(config.printDSPFirmware);
connect(printDSPFirmware, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(printDSPFirmware, config.printDSPFirmware);
config.printDSPFirmware = checked;
updateConfig();
});
spuLayout->addRow(printDSPFirmware); spuLayout->addRow(printDSPFirmware);
QCheckBox* muteAudio = new QCheckBox(tr("Mute audio device")); QCheckBox* muteAudio = new QCheckBox(tr("Mute audio device"));
muteAudio->setChecked(config.audioDeviceConfig.muteAudio); muteAudio->setChecked(config.audioDeviceConfig.muteAudio);
connect(muteAudio, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(muteAudio, config.audioDeviceConfig.muteAudio);
config.audioDeviceConfig.muteAudio = checked;
updateConfig();
});
spuLayout->addRow(muteAudio); spuLayout->addRow(muteAudio);
QSpinBox* volumeRaw = new QSpinBox; QSpinBox* volumeRaw = new QSpinBox;
@ -285,10 +244,7 @@ ConfigWindow::ConfigWindow(ConfigCallback callback, const EmulatorConfig& emuCon
QCheckBox* chargerPlugged = new QCheckBox(tr("Charger plugged")); QCheckBox* chargerPlugged = new QCheckBox(tr("Charger plugged"));
chargerPlugged->setChecked(config.chargerPlugged); chargerPlugged->setChecked(config.chargerPlugged);
connect(chargerPlugged, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(chargerPlugged, config.chargerPlugged);
config.chargerPlugged = checked;
updateConfig();
});
batLayout->addRow(chargerPlugged); batLayout->addRow(chargerPlugged);
// SD Card settings // SD Card settings
@ -299,18 +255,12 @@ ConfigWindow::ConfigWindow(ConfigCallback callback, const EmulatorConfig& emuCon
QCheckBox* sdCardInserted = new QCheckBox(tr("Enable virtual SD card")); QCheckBox* sdCardInserted = new QCheckBox(tr("Enable virtual SD card"));
sdCardInserted->setChecked(config.sdCardInserted); sdCardInserted->setChecked(config.sdCardInserted);
connect(sdCardInserted, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(sdCardInserted, config.sdCardInserted);
config.sdCardInserted = checked;
updateConfig();
});
sdcLayout->addRow(sdCardInserted); sdcLayout->addRow(sdCardInserted);
QCheckBox* sdWriteProtected = new QCheckBox(tr("Write protect virtual SD card")); QCheckBox* sdWriteProtected = new QCheckBox(tr("Write protect virtual SD card"));
sdWriteProtected->setChecked(config.sdWriteProtected); sdWriteProtected->setChecked(config.sdWriteProtected);
connect(sdWriteProtected, &QCheckBox::toggled, this, [&](bool checked) { connectCheckbox(sdWriteProtected, config.sdWriteProtected);
config.sdWriteProtected = checked;
updateConfig();
});
sdcLayout->addRow(sdWriteProtected); sdcLayout->addRow(sdWriteProtected);
// Add all our settings widgets to our widget list // Add all our settings widgets to our widget list