mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-23 07:15:35 +08:00
189 lines
3.9 KiB
C++
189 lines
3.9 KiB
C++
#include "project.h"
|
|
#include <QStringList>
|
|
#include "blackmisc/blackmiscfreefunctions.h"
|
|
|
|
#define BLACK_VERSION_STR_X(v) #v
|
|
#define BLACK_VERSION_STR(v) BLACK_VERSION_STR_X(v)
|
|
|
|
namespace BlackMisc
|
|
{
|
|
|
|
bool CProject::isCompiledWithBlackCore()
|
|
{
|
|
#ifdef WITH_BLACKCORE
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
bool CProject::isCompiledWithBlackSound()
|
|
{
|
|
#ifdef WITH_BLACKSOUND
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
bool CProject::isCompiledWithBlackInput()
|
|
{
|
|
#ifdef WITH_BLACKINPUT
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
bool CProject::isCompiledWithFs9Support()
|
|
{
|
|
#ifdef WITH_FS9
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
bool CProject::isCompiledWithFsxSupport()
|
|
{
|
|
#ifdef WITH_FSX
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
bool CProject::isCompiledWithXPlaneSupport()
|
|
{
|
|
#ifdef WITH_XPLANE
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
bool CProject::isCompiledWithFlightSimulatorSupport()
|
|
{
|
|
return isCompiledWithFsxSupport() || isCompiledWithXPlaneSupport();
|
|
}
|
|
|
|
bool BlackMisc::CProject::isCompiledWithGui()
|
|
{
|
|
#ifdef WITH_BLACKGUI
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
const QString &CProject::compiledInfo()
|
|
{
|
|
static QString info;
|
|
if (info.isEmpty())
|
|
{
|
|
static QStringList sl;
|
|
if (isCompiledWithBlackCore()) sl << "BlackCore";
|
|
if (isCompiledWithBlackSound()) sl << "BlackSound";
|
|
if (isCompiledWithBlackInput()) sl << "BlackInput";
|
|
if (isCompiledWithGui()) sl << "BlackGui";
|
|
if (isCompiledWithFsxSupport()) sl << "FSX";
|
|
if (isCompiledWithXPlaneSupport()) sl << "XPlane";
|
|
info = sl.join(", ");
|
|
if (info.isEmpty()) info = "<none>";
|
|
}
|
|
return info;
|
|
}
|
|
|
|
const QString &CProject::simulators()
|
|
{
|
|
static QString sims;
|
|
if (sims.isEmpty())
|
|
{
|
|
static QStringList sl;
|
|
if (isCompiledWithFsxSupport()) sl << "FSX";
|
|
if (isCompiledWithXPlaneSupport()) sl << "XPlane";
|
|
sims = sl.join(", ");
|
|
if (sims.isEmpty()) sims = "<none>";
|
|
}
|
|
return sims;
|
|
}
|
|
|
|
const char *CProject::simulatorsChar()
|
|
{
|
|
static const QByteArray a(simulators().toUtf8());
|
|
return a.constData();
|
|
}
|
|
|
|
const QString &CProject::version()
|
|
{
|
|
#ifdef BLACK_VERSION
|
|
const static QString v(BLACK_VERSION_STR(BLACK_VERSION));
|
|
#else
|
|
const static QString v("?");
|
|
#endif
|
|
return v;
|
|
}
|
|
|
|
const QString &CProject::systemNameAndVersion()
|
|
{
|
|
static QString s = QString("swift %1").arg(version());
|
|
return s;
|
|
}
|
|
|
|
const char *CProject::systemNameAndVersionChar()
|
|
{
|
|
static const QByteArray a(systemNameAndVersion().toUtf8());
|
|
return a.constData();
|
|
}
|
|
|
|
int CProject::versionMajor()
|
|
{
|
|
return getMajorMinor(0);
|
|
}
|
|
|
|
int CProject::versionMinor()
|
|
{
|
|
return getMajorMinor(1);
|
|
}
|
|
|
|
bool CProject::isDebugBuild()
|
|
{
|
|
#ifdef QT_DEBUG
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
bool CProject::isReleaseBuild()
|
|
{
|
|
#ifdef QT_NO_DEBUG
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
bool CProject::isRunningOnWindowsNtPlatform()
|
|
{
|
|
#ifdef Q_OS_WIN
|
|
// QSysInfo::WindowsVersion only available on Win platforms
|
|
return (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based) ? true : false;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
int CProject::getMajorMinor(int index)
|
|
{
|
|
QString v = version();
|
|
if (v.isEmpty() || !v.contains(".")) return -1;
|
|
bool ok;
|
|
int vi = v.split(".")[index].toInt(&ok);
|
|
return ok ? vi : -1;
|
|
}
|
|
}
|
|
|
|
#undef BLACK_VERSION_STR
|
|
#undef BLACK_VERSION_STR_X
|