6 #include "ui_configsimulatorcomponent.h"
14 using namespace swift::misc::simulation;
15 using namespace swift::misc::simulation::fscommon;
16 using namespace swift::config;
20 CConfigSimulatorComponent::CConfigSimulatorComponent(QWidget *parent)
24 this->preselectSimulators();
31 ui->comp_SettingsSimulator->save();
32 const QStringList sims = this->selectedSimsToPluginIds();
34 CLogMessage::preformatted(msg);
39 return ui->comp_SettingsSimulator->hasUnsavedChanges();
44 void CConfigSimulatorComponent::preselectSimulators()
55 (sims.
isP3D() || !CFsDirectories::p3dDir().isEmpty()) && CBuildConfig::isCompiledWithP3DSupport();
57 (sims.
isFSX() || !CFsDirectories::fsxDir().isEmpty()) && CBuildConfig::isCompiledWithFsxSupport();
59 (sims.
isFS9() || !CFsDirectories::fs9Dir().isEmpty()) && CBuildConfig::isCompiledWithFs9Support();
61 (sims.
isMSFS() || !CFsDirectories::msfsDir().isEmpty()) && CBuildConfig::isCompiledWithMSFSSupport();
62 const bool msfs2024 = (sims.
isMSFS2024() || !CFsDirectories::msfs2024Dir().isEmpty()) &&
63 CBuildConfig::isCompiledWithMSFS2024Support();
64 const bool xp = sims.
isXPlane() && CBuildConfig::isCompiledWithXPlaneSupport();
65 const bool fg = sims.
isFG() && CBuildConfig::isCompiledWithFGSupport();
67 ui->cb_P3D->setChecked(p3d);
68 ui->cb_FSX->setChecked(fsx);
69 ui->cb_FS9->setChecked(fs9);
70 ui->cb_XP->setChecked(xp);
71 ui->cb_FG->setChecked(fg);
72 ui->cb_MSFS->setChecked(msfs);
73 ui->cb_MSFS2024->setChecked(msfs2024);
75 ui->cb_P3D->setEnabled(CBuildConfig::isCompiledWithP3DSupport());
76 ui->cb_FSX->setEnabled(CBuildConfig::isCompiledWithFsxSupport());
77 ui->cb_FS9->setEnabled(CBuildConfig::isCompiledWithFs9Support());
78 ui->cb_XP->setEnabled(CBuildConfig::isCompiledWithXPlaneSupport());
79 ui->cb_FG->setEnabled(CBuildConfig::isCompiledWithFGSupport());
80 ui->cb_MSFS->setEnabled(CBuildConfig::isCompiledWithMSFSSupport());
81 ui->cb_MSFS2024->setEnabled(CBuildConfig::isCompiledWithMSFS2024Support());
91 if (p3d) { ui->comp_SettingsSimulator->setSimulator(
CSimulatorInfo(CSimulatorInfo::P3D)); }
92 else if (fsx) { ui->comp_SettingsSimulator->setSimulator(
CSimulatorInfo(CSimulatorInfo::FSX)); }
93 else if (fs9) { ui->comp_SettingsSimulator->setSimulator(
CSimulatorInfo(CSimulatorInfo::FS9)); }
94 else if (xp) { ui->comp_SettingsSimulator->setSimulator(
CSimulatorInfo(CSimulatorInfo::XPLANE)); }
95 else if (fg) { ui->comp_SettingsSimulator->setSimulator(
CSimulatorInfo(CSimulatorInfo::FG)); }
96 else if (msfs) { ui->comp_SettingsSimulator->setSimulator(
CSimulatorInfo(CSimulatorInfo::MSFS)); }
97 else if (msfs2024) { ui->comp_SettingsSimulator->setSimulator(
CSimulatorInfo(CSimulatorInfo::MSFS2024)); }
100 QStringList CConfigSimulatorComponent::selectedSimsToPluginIds()
105 if (ui->cb_FS9->isChecked()) { ids << CSimulatorPluginInfo::fs9PluginIdentifier(); }
106 if (ui->cb_FSX->isChecked()) { ids << CSimulatorPluginInfo::fsxPluginIdentifier(); }
107 if (ui->cb_P3D->isChecked()) { ids << CSimulatorPluginInfo::p3dPluginIdentifier(); }
108 if (ui->cb_XP->isChecked()) { ids << CSimulatorPluginInfo::xplanePluginIdentifier(); }
109 if (ui->cb_FG->isChecked()) { ids << CSimulatorPluginInfo::fgPluginIdentifier(); }
110 if (ui->cb_MSFS->isChecked()) { ids << CSimulatorPluginInfo::msfsPluginIdentifier(); }
111 if (ui->cb_MSFS2024->isChecked()) { ids << CSimulatorPluginInfo::msfs2024PluginIdentifier(); }
120 Q_ASSERT_X(m_config, Q_FUNC_INFO,
"Missing config");
static void checkBoxReadOnly(QCheckBox *checkBox, bool readOnly)
Pseudo readonly state for checkbox.
bool hasUnsavedChanges() const
Has unsaved changes.
void resetUnsavedChanges()
Reset the flag.
virtual ~CConfigSimulatorComponent()
Destructor.
virtual bool validatePage()
virtual void initializePage()
CStatusMessage setAndSave(const T &value, qint64 timestamp=0)
Write and save in the same step. Must be called from the thread in which the owner lives.
T get() const
Get a copy of the current value.
Streamable status message, e.g.
Simple hardcoded info about the corresponding simulator.
bool isMSFS2024() const
MSFS2024?
bool isAnySimulator() const
Any simulator?
bool isXPlane() const
XPlane.
CSimulatorInfo simulatorsWithModels() const
Simulators which have models.
High level reusable GUI components.
Free functions in swift::misc.