refs #911, allow to obtain address/port from simConnect.cfg file

This commit is contained in:
Klaus Basan
2017-03-16 01:54:06 +01:00
committed by Mathew Sutcliffe
parent b21f5f18e7
commit f82f04275b
2 changed files with 52 additions and 2 deletions

View File

@@ -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<QSettings> CSimConnectUtilities::simConnectFileAsSettings(const QString &fileName)
{
QSharedPointer<QSettings> 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);

View File

@@ -20,6 +20,8 @@
#include <QMetaType>
#include <QObject>
#include <QString>
#include <QSettings>
#include <QSharedPointer>
// 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<QSettings> 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)