From 65bd2d20ad997123b9eea14f21b893d02871d3a3 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 12 Aug 2017 13:21:33 +0200 Subject: [PATCH] Ref T125, X-Plan utility functions and moved XSwiftBus settings in own file --- .../simulation/settings/xswiftbussettings.h | 43 +++++++++++++++++++ .../simulation/xplane/xplaneutil.cpp | 21 ++++++++- src/blackmisc/simulation/xplane/xplaneutil.h | 10 +++++ .../simulator/xplane/simulatorxplane.h | 3 +- 4 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 src/blackmisc/simulation/settings/xswiftbussettings.h diff --git a/src/blackmisc/simulation/settings/xswiftbussettings.h b/src/blackmisc/simulation/settings/xswiftbussettings.h new file mode 100644 index 000000000..316b3ce0e --- /dev/null +++ b/src/blackmisc/simulation/settings/xswiftbussettings.h @@ -0,0 +1,43 @@ +/* Copyright (C) 2017 + * swift project community / contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKMISC_SIMULATION_SETTINGS_XSWIFTBUSSETTINGS_H +#define BLACKMISC_SIMULATION_SETTINGS_XSWIFTBUSSETTINGS_H + +#include +#include "blackmisc/settingscache.h" +#include "blackmisc/dbusserver.h" + +namespace BlackMisc +{ + namespace Simulation + { + namespace Settings + { + /*! + * Setting for XSwiftBus. + */ + struct TXSwiftBusServer : public BlackMisc::TSettingTrait + { + //! \copydoc BlackMisc::TSettingTrait::key + static const char *key() { return "xswiftbus/server"; } + + //! \copydoc BlackMisc::TSettingTrait::defaultValue + static QString defaultValue() { return BlackMisc::CDBusServer::sessionBusAddress(); } + + //! \copydoc BlackMisc::TSettingTrait::defaultValue + static bool isValid(const QString &dBusAddress) { return BlackMisc::CDBusServer::isSessionOrSystemAddress(dBusAddress); } + }; + } // ns + } // ns +} // ns + +#endif // guard diff --git a/src/blackmisc/simulation/xplane/xplaneutil.cpp b/src/blackmisc/simulation/xplane/xplaneutil.cpp index 5bd30feda..4c72706f1 100644 --- a/src/blackmisc/simulation/xplane/xplaneutil.cpp +++ b/src/blackmisc/simulation/xplane/xplaneutil.cpp @@ -89,6 +89,7 @@ namespace BlackMisc QString CXPlaneUtil::xplaneDir(const QString &xplaneInstallFile) { + //! \fixme KB 8/17 we could also use the runtime CBuildConfig decision here, which looks nicer (I personally always try to avoid ifdef) #if defined(Q_OS_WIN) return CFileUtils::appendFilePaths(getWindowsLocalAppDataPath(), xplaneInstallFile); #elif defined (Q_OS_LINUX) @@ -108,6 +109,25 @@ namespace BlackMisc else { return {}; } } + bool CXPlaneUtil::isXplaneRootDirExisting() + { + const QDir dir(xplaneRootDir()); + return dir.exists(); + } + + QString CXPlaneUtil::xplanePluginDir() + { + const QString xp = xplaneRootDir(); + if (xp.isEmpty()) { return xp; } + return CFileUtils::appendFilePaths(xp, "/Resources/plugins"); + } + + bool CXPlaneUtil::isXplanePluginDirDirExisting() + { + const QDir dir(xplanePluginDir()); + return dir.exists(); + } + QStringList CXPlaneUtil::xplaneModelDirectories() { if (xplaneRootDir().isEmpty()) { return QStringList(); } @@ -142,7 +162,6 @@ namespace BlackMisc } return {}; } - } // namespace } // namespace } // namespace diff --git a/src/blackmisc/simulation/xplane/xplaneutil.h b/src/blackmisc/simulation/xplane/xplaneutil.h index 3261d81c7..a3eb6f642 100644 --- a/src/blackmisc/simulation/xplane/xplaneutil.h +++ b/src/blackmisc/simulation/xplane/xplaneutil.h @@ -42,6 +42,16 @@ namespace BlackMisc //! In case more then one XPlane version is found, the path to the highest version is used static QString xplaneRootDir(); + //! Is the xplaneRootDir existing? + static bool isXplaneRootDirExisting(); + + //! XPlane root directory + //! In case more then one XPlane version is found, the path to the highest version is used + static QString xplanePluginDir(); + + //! Is the xplanePluginDir existing? + static bool isXplanePluginDirDirExisting(); + //! Directories with models static QStringList xplaneModelDirectories(); diff --git a/src/plugins/simulator/xplane/simulatorxplane.h b/src/plugins/simulator/xplane/simulatorxplane.h index c1165e36b..6f81d43c4 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.h +++ b/src/plugins/simulator/xplane/simulatorxplane.h @@ -23,6 +23,7 @@ #include "blackmisc/simulation/aircraftmodellist.h" #include "blackmisc/simulation/data/modelcaches.h" #include "blackmisc/simulation/settings/simulatorsettings.h" +#include "blackmisc/simulation/settings/xswiftbussettings.h" #include "blackmisc/weather/weathergrid.h" #include "blackmisc/settingscache.h" #include "blackmisc/statusmessage.h" @@ -224,7 +225,7 @@ namespace BlackSimPlugin private: QDBusConnection m_conn { "default" }; QDBusServiceWatcher *m_watcher { nullptr }; - BlackMisc::CSetting m_xswiftbusServerSetting { this, &CSimulatorXPlaneListener::ps_xswiftbusServerSettingChanged }; + BlackMisc::CSettingReadOnly m_xswiftbusServerSetting { this, &CSimulatorXPlaneListener::ps_xswiftbusServerSettingChanged }; }; //! Factory for creating CSimulatorXPlane instance