refs #917, fixed plugin ids in wizard

utility functions CSimulatorInfo -> plugin
This commit is contained in:
Klaus Basan
2017-03-19 00:29:09 +01:00
committed by Mathew Sutcliffe
parent 0942d007d5
commit 0544ab0193
6 changed files with 83 additions and 39 deletions

View File

@@ -12,9 +12,10 @@
#ifndef BLACKCORE_APPLICATION_SETTINGS_H
#define BLACKCORE_APPLICATION_SETTINGS_H
#include "blackmisc/settingscache.h"
#include "blackconfig/buildconfig.h"
#include "blackmisc/settingscache.h"
#include "blackmisc/input/actionhotkeylist.h"
#include "blackmisc/simulation/simulatorplugininfo.h"
#include <QStringList>
namespace BlackCore
@@ -50,36 +51,9 @@ namespace BlackCore
static const QStringList &defaultValue()
{
// All default simulators
static const QStringList enabledSimulators(defaultValueImpl());
static const QStringList enabledSimulators(BlackMisc::Simulation::CSimulatorPluginInfo::guessDefaultPlugins());
return enabledSimulators;
}
private:
//! Determine default value
static QStringList defaultValueImpl()
{
if (BlackConfig::CBuildConfig::isRunningOnWindows10())
{
// On WIN10 we have no direct play, so disable FS9 as per default
return QStringList
{
QStringLiteral("org.swift-project.plugins.simulator.fsx"),
QStringLiteral("org.swift-project.plugins.simulator.xplane")
};
}
else if (BlackConfig::CBuildConfig::isRunningOnUnixPlatform())
{
// On UNIX we likely run XP
return QStringList { QStringLiteral("org.swift-project.plugins.simulator.xplane") };
}
return QStringList
{
QStringLiteral("org.swift-project.plugins.simulator.fs9"),
QStringLiteral("org.swift-project.plugins.simulator.fsx"),
QStringLiteral("org.swift-project.plugins.simulator.xplane")
};
}
};
//! Uploading of crash dumps is enabled or disabled

View File

@@ -62,7 +62,7 @@ namespace BlackGui
ui->cb_P3D->setChecked(p3d);
ui->cb_FSX->setChecked(fsx);
ui->cb_FS9->setChecked(fs9);
ui->cb_XP->setChecked(xp); // \fixme some default for XP?
ui->cb_XP->setChecked(xp);
ui->cb_P3D->setEnabled(CBuildConfig::isCompiledWithP3DSupport());
ui->cb_FSX->setEnabled(CBuildConfig::isCompiledWithFsxSupport());
@@ -79,11 +79,11 @@ namespace BlackGui
{
QStringList ids;
// have to match ids from swift-plugin-simulators.xml
if (ui->cb_FS9->isChecked()) { ids << "fs2004"; }
if (ui->cb_FSX->isChecked()) { ids << "fsx"; }
if (ui->cb_P3D->isChecked()) { ids << "p3d"; }
if (ui->cb_XP->isChecked()) { ids << "xplane"; }
// have to match full canonical ids from swift-plugin-simulators.xml
if (ui->cb_FS9->isChecked()) { ids << CSimulatorPluginInfo::fs9PluginIndentifier(); }
if (ui->cb_FSX->isChecked()) { ids << CSimulatorPluginInfo::fsxPluginIndentifier(); }
if (ui->cb_P3D->isChecked()) { ids << CSimulatorPluginInfo::p3dPluginIndentifier(); }
if (ui->cb_XP->isChecked()) { ids << CSimulatorPluginInfo::xplanePluginIndentifier(); }
return ids;
}

View File

@@ -8,10 +8,11 @@
*/
#include "blackconfig/buildconfig.h"
#include "blackmisc/comparefunctions.h"
#include "blackmisc/db/datastoreutility.h"
#include "blackmisc/simulation/simulatorplugininfo.h"
#include "blackmisc/simulation/fscommon/fscommonutil.h"
#include "blackmisc/simulation/simulatorinfo.h"
#include "blackmisc/comparefunctions.h"
#include <QJsonValue>
#include <QtGlobal>
#include <algorithm>
@@ -136,7 +137,7 @@ namespace BlackMisc
QString CSimulatorInfo::convertToQString(bool i18n) const
{
Q_UNUSED(i18n);
Simulator s = getSimulator();
const Simulator s = getSimulator();
QString str;
if (s.testFlag(FSX)) { str.append("FSX "); }
if (s.testFlag(FS9)) { str.append("FS9 "); }
@@ -161,6 +162,18 @@ namespace BlackMisc
return set;
}
const QString &CSimulatorInfo::toPluginIdentifier() const
{
static const QString e;
if (!this->isSingleSimulator()) { return e; }
const Simulator s = getSimulator();
if (s.testFlag(FSX)) { return CSimulatorPluginInfo::fsxPluginIndentifier(); }
if (s.testFlag(FS9)) { return CSimulatorPluginInfo::fs9PluginIndentifier(); }
if (s.testFlag(P3D)) { return CSimulatorPluginInfo::p3dPluginIndentifier(); }
if (s.testFlag(XPLANE)) { return CSimulatorPluginInfo::xplanePluginIndentifier(); }
return e;
}
CSimulatorInfo::Simulator CSimulatorInfo::boolToFlag(bool fsx, bool fs9, bool xp, bool p3d)
{
Simulator s = fsx ? FSX : None;
@@ -188,7 +201,7 @@ namespace BlackMisc
{
s |= XPLANE;
}
if (i.contains("3d") || i.contains("prepare") || i.contains("martin") || i.contains("lm") || i.contains("lock"))
if (i.contains("3d") || i.contains("prepar") || i.contains("martin") || i.contains("lm") || i.contains("lock"))
{
s |= P3D;
}
@@ -260,7 +273,6 @@ namespace BlackMisc
return sim;
}
CSimulatorInfo CSimulatorInfo::fromDatabaseJson(const QJsonObject &json, const QString prefix)
{
const bool fsx = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "simfsx").toString());

View File

@@ -150,6 +150,9 @@ namespace BlackMisc
//! As a set of single simulator info objects
QSet<CSimulatorInfo> asSingleSimulatorSet() const;
//! To plugin indentifier, empty string if not single simulator
const QString &toPluginIdentifier() const;
//! Bool flags to enum
static Simulator boolToFlag(bool fsx, bool fs9, bool xp, bool p3d);

View File

@@ -7,6 +7,7 @@
* contained in the LICENSE file.
*/
#include "blackconfig/buildconfig.h"
#include "blackmisc/simulation/simulatorplugininfo.h"
#include <QJsonValue>
#include <QtGlobal>
@@ -49,5 +50,44 @@ namespace BlackMisc
return QString("%1 (%2)").arg(m_name, m_identifier);
}
const QString &CSimulatorPluginInfo::fsxPluginIndentifier()
{
static const QString s("org.swift-project.plugins.simulator.fsx");
return s;
}
const QString &CSimulatorPluginInfo::p3dPluginIndentifier()
{
static const QString s("org.swift-project.plugins.simulator.p3d");
return s;
}
const QString &CSimulatorPluginInfo::fs9PluginIndentifier()
{
static const QString s("org.swift-project.plugins.simulator.fs9");
return s;
}
const QString &CSimulatorPluginInfo::xplanePluginIndentifier()
{
static const QString s("org.swift-project.plugins.simulator.xplane");
return s;
}
QStringList CSimulatorPluginInfo::guessDefaultPlugins()
{
if (BlackConfig::CBuildConfig::isRunningOnUnixPlatform())
{
// On UNIX we likely run XP
return QStringList { xplanePluginIndentifier() };
}
return QStringList
{
fsxPluginIndentifier(),
p3dPluginIndentifier(),
xplanePluginIndentifier()
};
}
} // ns
} // ns

View File

@@ -64,6 +64,21 @@ namespace BlackMisc
//! \copydoc BlackMisc::Mixin::String::toQString
QString convertToQString(bool i18n = false) const;
//! Plugin identifier (FSX)
static const QString &fsxPluginIndentifier();
//! Plugin identifier (P3D)
static const QString &p3dPluginIndentifier();
//! Plugin identifier (FS9)
static const QString &fs9PluginIndentifier();
//! Plugin identifier (XPlane)
static const QString &xplanePluginIndentifier();
//! Guess default plugins
static QStringList guessDefaultPlugins();
private:
QString m_identifier;
QString m_name;