diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index a6ef69da848fa895df3de4b45d98c5e9f37bf00d..10976f279778378ca9cc94b4578aa9516145fa4d 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -1137,8 +1137,15 @@ contains (DEFINES, QGC_AIRMAP_ENABLED) { src/Airmap/AirMapWeatherInfoManager.cc \ } else { + #-- Dummies + INCLUDEPATH += \ + src/Airmap/dummy RESOURCES += \ src/Airmap/dummy/airmap_dummy.qrc + HEADERS += \ + src/Airmap/dummy/AirspaceManager.h + SOURCES += \ + src/Airmap/dummy/AirspaceManager.cc } #------------------------------------------------------------------------------------- diff --git a/src/Airmap/dummy/AirspaceManager.cc b/src/Airmap/dummy/AirspaceManager.cc new file mode 100644 index 0000000000000000000000000000000000000000..938d102f924dbfad89d1b015843c41b7244dc207 --- /dev/null +++ b/src/Airmap/dummy/AirspaceManager.cc @@ -0,0 +1,34 @@ +/**************************************************************************** + * + * (c) 2017 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +#include "AirspaceManager.h" +#include "QGCApplication.h" + +AirspaceManager::AirspaceManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) +{ + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceManager", "Reference only"); +} + +AirspaceManager::~AirspaceManager() +{ +} + +void AirspaceManager::setToolbox(QGCToolbox* toolbox) +{ + QGCTool::setToolbox(toolbox); +} + +void AirspaceManager::setROI(const QGeoCoordinate& pointNW, const QGeoCoordinate& pointSE, bool planView) +{ + Q_UNUSED(pointNW); + Q_UNUSED(pointSE); + Q_UNUSED(planView); +} diff --git a/src/Airmap/dummy/AirspaceManager.h b/src/Airmap/dummy/AirspaceManager.h new file mode 100644 index 0000000000000000000000000000000000000000..cd762d0aa0da3586468d507840c171cc9d37381f --- /dev/null +++ b/src/Airmap/dummy/AirspaceManager.h @@ -0,0 +1,54 @@ +/**************************************************************************** + * + * (c) 2017 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +/** + * @file AirspaceManager.h + * Dummy file for when airspace management is disabled + */ + +#include "QGCToolbox.h" +#include + +//----------------------------------------------------------------------------- +/** + * @class AirspaceManager + * Base class for airspace management. There is one (global) instantiation of this + */ +class AirspaceManager : public QGCTool { + Q_OBJECT +public: + AirspaceManager(QGCApplication* app, QGCToolbox* toolbox); + virtual ~AirspaceManager(); + + Q_PROPERTY(QString providerName READ providerName CONSTANT) + Q_PROPERTY(QObject* weatherInfo READ weatherInfo CONSTANT) + Q_PROPERTY(QObject* advisories READ advisories CONSTANT) + Q_PROPERTY(QObject* ruleSets READ ruleSets CONSTANT) + Q_PROPERTY(QObject* airspaces READ airspaces CONSTANT) + Q_PROPERTY(QObject* flightPlan READ flightPlan CONSTANT) + Q_PROPERTY(bool airspaceVisible READ airspaceVisible CONSTANT) + + Q_INVOKABLE void setROI (const QGeoCoordinate& pointNW, const QGeoCoordinate& pointSE, bool planView); + + QObject* weatherInfo () { return &_dummy; } + QObject* advisories () { return &_dummy; } + QObject* ruleSets () { return &_dummy; } + QObject* airspaces () { return &_dummy; } + QObject* flightPlan () { return &_dummy; } + + void setToolbox(QGCToolbox* toolbox) override; + + virtual QString providerName () const { return QString("None"); } + + virtual bool airspaceVisible () { return false; } +private: + QObject _dummy; +}; diff --git a/src/Airmap/dummy/ComplianceRules.qml b/src/Airmap/dummy/ComplianceRules.qml new file mode 100644 index 0000000000000000000000000000000000000000..5c0536c80a741b79cdfae2faac799539ac6e706e --- /dev/null +++ b/src/Airmap/dummy/ComplianceRules.qml @@ -0,0 +1,5 @@ +import QtQuick 2.3 + +Item { + +} diff --git a/src/Airmap/dummy/FlightBrief.qml b/src/Airmap/dummy/FlightBrief.qml new file mode 100644 index 0000000000000000000000000000000000000000..5c0536c80a741b79cdfae2faac799539ac6e706e --- /dev/null +++ b/src/Airmap/dummy/FlightBrief.qml @@ -0,0 +1,5 @@ +import QtQuick 2.3 + +Item { + +} diff --git a/src/Airmap/dummy/FlightDetails.qml b/src/Airmap/dummy/FlightDetails.qml new file mode 100644 index 0000000000000000000000000000000000000000..5c0536c80a741b79cdfae2faac799539ac6e706e --- /dev/null +++ b/src/Airmap/dummy/FlightDetails.qml @@ -0,0 +1,5 @@ +import QtQuick 2.3 + +Item { + +} diff --git a/src/Airmap/dummy/FlightFeature.qml b/src/Airmap/dummy/FlightFeature.qml new file mode 100644 index 0000000000000000000000000000000000000000..5c0536c80a741b79cdfae2faac799539ac6e706e --- /dev/null +++ b/src/Airmap/dummy/FlightFeature.qml @@ -0,0 +1,5 @@ +import QtQuick 2.3 + +Item { + +} diff --git a/src/Airmap/dummy/RuleSelector.qml b/src/Airmap/dummy/RuleSelector.qml new file mode 100644 index 0000000000000000000000000000000000000000..5c0536c80a741b79cdfae2faac799539ac6e706e --- /dev/null +++ b/src/Airmap/dummy/RuleSelector.qml @@ -0,0 +1,5 @@ +import QtQuick 2.3 + +Item { + +} diff --git a/src/Airmap/dummy/airmap_dummy.qrc b/src/Airmap/dummy/airmap_dummy.qrc index 364d9ca58eeb752c1310070a2c6be805f1d7d18d..ea382774032019aa49b26aa1ae30fbb00aaf64ee 100644 --- a/src/Airmap/dummy/airmap_dummy.qrc +++ b/src/Airmap/dummy/airmap_dummy.qrc @@ -4,5 +4,10 @@ AirspaceControl.qml AirspaceRegulation.qml AirspaceWeather.qml + ComplianceRules.qml + FlightBrief.qml + FlightDetails.qml + FlightFeature.qml + RuleSelector.qml diff --git a/src/QGCToolbox.cc b/src/QGCToolbox.cc index da94858af7d8562ead179e7367137f75b75f2b28..386b8139f6d08ece4c7c5f3e48556e17836ac9da 100644 --- a/src/QGCToolbox.cc +++ b/src/QGCToolbox.cc @@ -32,6 +32,8 @@ #include "QGCApplication.h" #if defined(QGC_AIRMAP_ENABLED) #include "AirMapManager.h" +#else +#include "AirspaceManager.h" #endif #if defined(QGC_CUSTOM_BUILD) @@ -59,9 +61,7 @@ QGCToolbox::QGCToolbox(QGCApplication* app) , _mavlinkLogManager (NULL) , _corePlugin (NULL) , _settingsManager (NULL) -#if defined(QGC_AIRMAP_ENABLED) , _airspaceManager (NULL) -#endif { // SettingsManager must be first so settings are available to any subsequent tools _settingsManager = new SettingsManager(app, this); @@ -91,6 +91,8 @@ QGCToolbox::QGCToolbox(QGCApplication* app) //-- For now, we instantiate the one and only AirMap provider #if defined(QGC_AIRMAP_ENABLED) _airspaceManager = new AirMapManager (app, this); +#else + _airspaceManager = new AirspaceManager (app, this); #endif } @@ -118,9 +120,7 @@ void QGCToolbox::setChildToolboxes(void) _qgcPositionManager->setToolbox(this); _videoManager->setToolbox(this); _mavlinkLogManager->setToolbox(this); -#if defined(QGC_AIRMAP_ENABLED) _airspaceManager->setToolbox(this); -#endif } void QGCToolbox::_scanAndLoadPlugins(QGCApplication* app) diff --git a/src/QGCToolbox.h b/src/QGCToolbox.h index ab197987a1e70e33afb7c0f14f7ebae01b311cf5..3c5476fbcdd073006c78ae7f277f8a5dbb876aba 100644 --- a/src/QGCToolbox.h +++ b/src/QGCToolbox.h @@ -32,9 +32,7 @@ class VideoManager; class MAVLinkLogManager; class QGCCorePlugin; class SettingsManager; -#if defined(QGC_AIRMAP_ENABLED) class AirspaceManager; -#endif /// This is used to manage all of our top level services/tools class QGCToolbox : public QObject { @@ -59,9 +57,7 @@ public: MAVLinkLogManager* mavlinkLogManager(void) { return _mavlinkLogManager; } QGCCorePlugin* corePlugin(void) { return _corePlugin; } SettingsManager* settingsManager(void) { return _settingsManager; } -#if defined(QGC_AIRMAP_ENABLED) AirspaceManager* airspaceManager(void) { return _airspaceManager; } -#endif #ifndef __mobile__ GPSManager* gpsManager(void) { return _gpsManager; } #endif @@ -91,9 +87,7 @@ private: MAVLinkLogManager* _mavlinkLogManager; QGCCorePlugin* _corePlugin; SettingsManager* _settingsManager; -#if defined(QGC_AIRMAP_ENABLED) AirspaceManager* _airspaceManager; -#endif friend class QGCApplication; };