From f82f04275bedb024816f3e20fce29f0c04322851 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 16 Mar 2017 01:54:06 +0100 Subject: [PATCH] refs #911, allow to obtain address/port from simConnect.cfg file --- .../simulation/fsx/simconnectutilities.cpp | 37 ++++++++++++++++++- .../simulation/fsx/simconnectutilities.h | 17 +++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/blackmisc/simulation/fsx/simconnectutilities.cpp b/src/blackmisc/simulation/fsx/simconnectutilities.cpp index 5863daf2c..f5760c1ba 100644 --- a/src/blackmisc/simulation/fsx/simconnectutilities.cpp +++ b/src/blackmisc/simulation/fsx/simconnectutilities.cpp @@ -30,9 +30,42 @@ namespace BlackMisc { CSimConnectUtilities::CSimConnectUtilities() { } + const QString &CSimConnectUtilities::simConnectFilename() + { + static const QString fn("SimConnect.cfg"); + return fn; + } + QString CSimConnectUtilities::getLocalSimConnectCfgFilename() { - return QCoreApplication::applicationDirPath() + "/SimConnect.cfg"; + return CFileUtils::appendFilePaths(QCoreApplication::applicationDirPath(), simConnectFilename()); + } + + bool CSimConnectUtilities::hasLocalSimConnectCfgFilename() + { + const QFile f(getLocalSimConnectCfgFilename()); + return f.exists(); + } + + QSharedPointer CSimConnectUtilities::simConnectFileAsSettings(const QString &fileName) + { + QSharedPointer sp; + const QFile file(fileName); + if (!file.exists()) { return sp; } + sp.reset(new QSettings(fileName, QSettings::IniFormat)); + return sp; + } + + QString CSimConnectUtilities::ipAddress(const QSettings *simConnectSettings) + { + if (!simConnectSettings) { return QString(""); } + return simConnectSettings->value("SimConnect/Address").toString(); + } + + int CSimConnectUtilities::ipPort(const QSettings *simConnectSettings) + { + if (!simConnectSettings) { return -1; } + return simConnectSettings->value("SimConnect/Port", QVariant::fromValue(-1)).toInt(); } bool CSimConnectUtilities::writeSimConnectCfg(const QString &fileName, const QString &ip, int port) @@ -58,7 +91,7 @@ namespace BlackMisc const QString CSimConnectUtilities::resolveEnumToString(const DWORD id, const char *enumName) { - int i = CSimConnectUtilities::staticMetaObject.indexOfEnumerator(enumName); + const int i = CSimConnectUtilities::staticMetaObject.indexOfEnumerator(enumName); if (i < 0) return QString("No enumerator for %1").arg(enumName); const QMetaEnum m = CSimConnectUtilities::staticMetaObject.enumerator(i); const char *k = m.valueToKey(id); diff --git a/src/blackmisc/simulation/fsx/simconnectutilities.h b/src/blackmisc/simulation/fsx/simconnectutilities.h index 840b3611e..1c4235315 100644 --- a/src/blackmisc/simulation/fsx/simconnectutilities.h +++ b/src/blackmisc/simulation/fsx/simconnectutilities.h @@ -20,6 +20,8 @@ #include #include #include +#include +#include // Apart from the below definitions, the following code is OS independent, // though it does not make sense to be used on non WIN machines. @@ -47,9 +49,24 @@ namespace BlackMisc Q_ENUMS(SIMCONNECT_SURFACE) public: + //! Filename of the file + static const QString &simConnectFilename(); + //! Path to local config file static QString getLocalSimConnectCfgFilename(); + //! Path to local config file + static bool hasLocalSimConnectCfgFilename(); + + //! The simconnect.cfg as settings (or nullptr settings if no such file) + static QSharedPointer simConnectFileAsSettings(const QString &fileName = getLocalSimConnectCfgFilename()); + + //! IP address from settings (of simconnect.cfg), "" if not available + static QString ipAddress(const QSettings *simConnectSettings); + + //! IP port from settings (of simconnect.cfg), -1 if not available + static int ipPort(const QSettings *simConnectSettings); + //! Content for FSX simconnect.cfg file //! \param ip IP address of FSX //! \param port Port of FSX (e.g. 500)