From 6e7c9f32f135fb31364788dc921c0ed1cbbe2400 Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Wed, 7 Mar 2018 05:30:33 -0500 Subject: [PATCH] (Unsuccessful) attempt at a build with AirMap disabled (not present). It builds clean but the resources still get messed up (loads true qml files instead of dummy ones, and it crashes...) --- qgroundcontrol.pro | 7 ++++ src/Airmap/dummy/AirspaceManager.cc | 34 ++++++++++++++++++ src/Airmap/dummy/AirspaceManager.h | 54 ++++++++++++++++++++++++++++ src/Airmap/dummy/ComplianceRules.qml | 5 +++ src/Airmap/dummy/FlightBrief.qml | 5 +++ src/Airmap/dummy/FlightDetails.qml | 5 +++ src/Airmap/dummy/FlightFeature.qml | 5 +++ src/Airmap/dummy/RuleSelector.qml | 5 +++ src/Airmap/dummy/airmap_dummy.qrc | 5 +++ src/QGCToolbox.cc | 8 ++--- src/QGCToolbox.h | 6 ---- 11 files changed, 129 insertions(+), 10 deletions(-) create mode 100644 src/Airmap/dummy/AirspaceManager.cc create mode 100644 src/Airmap/dummy/AirspaceManager.h create mode 100644 src/Airmap/dummy/ComplianceRules.qml create mode 100644 src/Airmap/dummy/FlightBrief.qml create mode 100644 src/Airmap/dummy/FlightDetails.qml create mode 100644 src/Airmap/dummy/FlightFeature.qml create mode 100644 src/Airmap/dummy/RuleSelector.qml diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index a6ef69da8..10976f279 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 000000000..938d102f9 --- /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 000000000..cd762d0aa --- /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 000000000..5c0536c80 --- /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 000000000..5c0536c80 --- /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 000000000..5c0536c80 --- /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 000000000..5c0536c80 --- /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 000000000..5c0536c80 --- /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 364d9ca58..ea3827740 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 da94858af..386b8139f 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 ab197987a..3c5476fbc 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; }; -- 2.22.0