diff --git a/CMakeLists.txt b/CMakeLists.txt index d3cf4e7b6309..0736e1bd3469 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -219,18 +219,18 @@ elseif(ANDROID) include(Android) endif() +qt_add_qml_module(${CMAKE_PROJECT_NAME} + URI QGC + VERSION 1.0 + RESOURCE_PREFIX /qml +) + add_subdirectory(src) if(QGC_BUILD_TESTING) add_subdirectory(test) set_property(DIRECTORY test PROPERTY QT_EXCLUDE_FROM_TRANSLATION ON) endif() -qt_add_qml_module(${CMAKE_PROJECT_NAME} - URI QGroundControl - VERSION 1.0 - RESOURCE_PREFIX /qml -) - file(GLOB TS_SOURCES ${CMAKE_SOURCE_DIR}/translations/qgc_*.ts) set_source_files_properties(${TS_SOURCES} PROPERTIES OUTPUT_LOCATION "${CMAKE_BINARY_DIR}/i18n") diff --git a/src/API/QGCCorePlugin.cc b/src/API/QGCCorePlugin.cc index 61169d9a1c25..ce38f6cba60a 100644 --- a/src/API/QGCCorePlugin.cc +++ b/src/API/QGCCorePlugin.cc @@ -18,7 +18,6 @@ #include "HorizontalFactValueGrid.h" #include "InstrumentValueData.h" #include "JoystickManager.h" -#include "LogDownloadController.h" #include "MAVLinkLib.h" #include "QGCLoggingCategory.h" #include "QGCOptions.h" @@ -269,7 +268,6 @@ QQmlApplicationEngine *QGCCorePlugin::createQmlApplicationEngine(QObject *parent qmlEngine->addImportPath(QStringLiteral("qrc:/qml")); qmlEngine->rootContext()->setContextProperty(QStringLiteral("joystickManager"), JoystickManager::instance()); qmlEngine->rootContext()->setContextProperty(QStringLiteral("debugMessageModel"), QGCLogging::instance()); - qmlEngine->rootContext()->setContextProperty(QStringLiteral("logDownloadController"), LogDownloadController::instance()); return qmlEngine; } diff --git a/src/AnalyzeView/LogDownloadController.cc b/src/AnalyzeView/LogDownloadController.cc index 1b0bca658115..cd8b88201d4c 100644 --- a/src/AnalyzeView/LogDownloadController.cc +++ b/src/AnalyzeView/LogDownloadController.cc @@ -24,14 +24,12 @@ QGC_LOGGING_CATEGORY(LogDownloadControllerLog, "qgc.analyzeview.logdownloadcontroller") -Q_APPLICATION_STATIC(LogDownloadController, _logDownloadControllerInstance); - LogDownloadController::LogDownloadController(QObject *parent) : QObject(parent) , _timer(new QTimer(this)) , _logEntriesModel(new QmlObjectListModel(this)) { - // qCDebug(LogDownloadControllerLog) << Q_FUNC_INFO << this; + qCDebug(LogDownloadControllerLog) << this; (void) connect(MultiVehicleManager::instance(), &MultiVehicleManager::activeVehicleChanged, this, &LogDownloadController::_setActiveVehicle); (void) connect(_timer, &QTimer::timeout, this, &LogDownloadController::_processDownload); @@ -43,12 +41,7 @@ LogDownloadController::LogDownloadController(QObject *parent) LogDownloadController::~LogDownloadController() { - // qCDebug(LogDownloadControllerLog) << Q_FUNC_INFO << this; -} - -LogDownloadController *LogDownloadController::instance() -{ - return _logDownloadControllerInstance(); + qCDebug(LogDownloadControllerLog) << this; } void LogDownloadController::download(const QString &path) diff --git a/src/AnalyzeView/LogDownloadController.h b/src/AnalyzeView/LogDownloadController.h index 58c1c60b2350..bcb39d9d637e 100644 --- a/src/AnalyzeView/LogDownloadController.h +++ b/src/AnalyzeView/LogDownloadController.h @@ -26,8 +26,8 @@ class LogDownloadTest; class LogDownloadController : public QObject { Q_OBJECT - // QML_ELEMENT - // QML_SINGLETON + QML_ELEMENT + QML_SINGLETON Q_MOC_INCLUDE("Vehicle.h") Q_MOC_INCLUDE("QmlObjectListModel.h") Q_PROPERTY(QmlObjectListModel *model READ _getModel CONSTANT) @@ -40,8 +40,6 @@ class LogDownloadController : public QObject explicit LogDownloadController(QObject *parent = nullptr); ~LogDownloadController(); - static LogDownloadController *instance(); - Q_INVOKABLE void refresh(); Q_INVOKABLE void download(const QString &path = QString()); Q_INVOKABLE void eraseAll(); diff --git a/src/AnalyzeView/LogDownloadPage.qml b/src/AnalyzeView/LogDownloadPage.qml index c13dd1fb98e1..ca0cc7691be1 100644 --- a/src/AnalyzeView/LogDownloadPage.qml +++ b/src/AnalyzeView/LogDownloadPage.qml @@ -37,7 +37,7 @@ AnalyzePage { GridLayout { id: gridLayout - rows: logDownloadController.model.count + 1 + rows: LogDownloadController.model.count + 1 columns: 5 flow: GridLayout.TopToBottom columnSpacing: ScreenTools.defaultFontPixelWidth @@ -49,7 +49,7 @@ AnalyzePage { } Repeater { - model: logDownloadController.model + model: LogDownloadController.model QGCCheckBox { Binding on checkState { @@ -63,7 +63,7 @@ AnalyzePage { QGCLabel { text: qsTr("Id") } Repeater { - model: logDownloadController.model + model: LogDownloadController.model QGCLabel { text: object.id } } @@ -71,7 +71,7 @@ AnalyzePage { QGCLabel { text: qsTr("Date") } Repeater { - model: logDownloadController.model + model: LogDownloadController.model QGCLabel { text: { @@ -91,7 +91,7 @@ AnalyzePage { QGCLabel { text: qsTr("Size") } Repeater { - model: logDownloadController.model + model: LogDownloadController.model QGCLabel { text: object.sizeStr } } @@ -99,7 +99,7 @@ AnalyzePage { QGCLabel { text: qsTr("Status") } Repeater { - model: logDownloadController.model + model: LogDownloadController.model QGCLabel { text: object.status } } @@ -113,7 +113,7 @@ AnalyzePage { QGCButton { Layout.fillWidth: true - enabled: !logDownloadController.requestingList && !logDownloadController.downloadingLogs + enabled: !LogDownloadController.requestingList && !LogDownloadController.downloadingLogs text: qsTr("Refresh") onClicked: { @@ -122,19 +122,19 @@ AnalyzePage { return } - logDownloadController.refresh() + LogDownloadController.refresh() } } QGCButton { Layout.fillWidth: true - enabled: !logDownloadController.requestingList && !logDownloadController.downloadingLogs + enabled: !LogDownloadController.requestingList && !LogDownloadController.downloadingLogs text: qsTr("Download") onClicked: { var logsSelected = false - for (var i = 0; i < logDownloadController.model.count; i++) { - if (logDownloadController.model.get(i).selected) { + for (var i = 0; i < LogDownloadController.model.count; i++) { + if (LogDownloadController.model.get(i).selected) { logsSelected = true break } @@ -146,7 +146,7 @@ AnalyzePage { } if (ScreenTools.isMobile) { - logDownloadController.download() + LogDownloadController.download() return } @@ -159,7 +159,7 @@ AnalyzePage { QGCFileDialog { id: fileDialog onAcceptedForLoad: (file) => { - logDownloadController.download(file) + LogDownloadController.download(file) close() } } @@ -167,21 +167,21 @@ AnalyzePage { QGCButton { Layout.fillWidth: true - enabled: !logDownloadController.requestingList && !logDownloadController.downloadingLogs && (logDownloadController.model.count > 0) + enabled: !LogDownloadController.requestingList && !LogDownloadController.downloadingLogs && (LogDownloadController.model.count > 0) text: qsTr("Erase All") onClicked: mainWindow.showMessageDialog( qsTr("Delete All Log Files"), qsTr("All log files will be erased permanently. Is this really what you want?"), Dialog.Yes | Dialog.No, - function() { logDownloadController.eraseAll() } + function() { LogDownloadController.eraseAll() } ) } QGCButton { Layout.fillWidth: true text: qsTr("Cancel") - enabled: logDownloadController.requestingList || logDownloadController.downloadingLogs - onClicked: logDownloadController.cancel() + enabled: LogDownloadController.requestingList || LogDownloadController.downloadingLogs + onClicked: LogDownloadController.cancel() } } } diff --git a/src/AnalyzeView/MAVLinkMessage.cc b/src/AnalyzeView/MAVLinkMessage.cc index 1c8d8e6c80dc..0771fab06b4c 100644 --- a/src/AnalyzeView/MAVLinkMessage.cc +++ b/src/AnalyzeView/MAVLinkMessage.cc @@ -22,7 +22,7 @@ QGCMAVLinkMessage::QGCMAVLinkMessage(const mavlink_message_t &message, QObject * , _fields(new QmlObjectListModel(this)) { - // qCDebug(LogDownloadControllerLog) << Q_FUNC_INFO << this; + qCDebug(MAVLinkMessageLog) << this; const mavlink_message_info_t *const msgInfo = mavlink_get_message_info(&message); if (!msgInfo) { @@ -57,6 +57,8 @@ QGCMAVLinkMessage::QGCMAVLinkMessage(const mavlink_message_t &message, QObject * QGCMAVLinkMessage::~QGCMAVLinkMessage() { _fields->clearAndDeleteContents(); + + qCDebug(MAVLinkMessageLog) << this; } void QGCMAVLinkMessage::updateFieldSelection() diff --git a/src/AutoPilotPlugins/APM/APMSensorsComponent.qml b/src/AutoPilotPlugins/APM/APMSensorsComponent.qml index bfd5fa45f08d..c6e791a8145d 100644 --- a/src/AutoPilotPlugins/APM/APMSensorsComponent.qml +++ b/src/AutoPilotPlugins/APM/APMSensorsComponent.qml @@ -21,7 +21,6 @@ import QGroundControl.Controls import QGroundControl.ScreenTools import QGroundControl.Controllers import QGroundControl.QGCPositionManager -import MAVLink SetupPage { id: sensorsPage diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8c6238929530..b484cc84be03 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,14 @@ +qt_add_library(QGroundControlModule STATIC) + +qt_add_qml_module(QGroundControlModule + URI QGroundControl + VERSION 1.0 + RESOURCE_PREFIX /qml + IMPORTS + QGC + NO_PLUGIN +) + add_subdirectory(ADSB) add_subdirectory(AnalyzeView) add_subdirectory(Android) @@ -84,6 +95,7 @@ target_link_libraries(${CMAKE_PROJECT_NAME} FlightMapModule MainWindowModule QGroundControlControlsModule + QGroundControlModule ScreenToolsModule ToolbarModule UTMSPModule diff --git a/src/FirmwarePlugin/PX4/PX4BatteryIndicator.qml b/src/FirmwarePlugin/PX4/PX4BatteryIndicator.qml index 0c89ecbd20a3..fde264c54763 100644 --- a/src/FirmwarePlugin/PX4/PX4BatteryIndicator.qml +++ b/src/FirmwarePlugin/PX4/PX4BatteryIndicator.qml @@ -17,7 +17,6 @@ import QGroundControl.ScreenTools import QGroundControl.Palette import QGroundControl.FactSystem import QGroundControl.FactControls -import MAVLink BatteryIndicator { waitForParameters: true diff --git a/src/FlightMap/MapItems/QGCMapPolygonVisuals.qml b/src/FlightMap/MapItems/QGCMapPolygonVisuals.qml index daeed5560dfa..e40613a9e4c0 100644 --- a/src/FlightMap/MapItems/QGCMapPolygonVisuals.qml +++ b/src/FlightMap/MapItems/QGCMapPolygonVisuals.qml @@ -19,7 +19,6 @@ import QGroundControl.ScreenTools import QGroundControl.Palette import QGroundControl.Controls import QGroundControl.FlightMap -import QGroundControl.ShapeFileHelper /// QGCMapPolygon map visuals Item { diff --git a/src/FlightMap/MapItems/QGCMapPolylineVisuals.qml b/src/FlightMap/MapItems/QGCMapPolylineVisuals.qml index 965a63b4ac5d..a636df7e5215 100644 --- a/src/FlightMap/MapItems/QGCMapPolylineVisuals.qml +++ b/src/FlightMap/MapItems/QGCMapPolylineVisuals.qml @@ -18,7 +18,6 @@ import QGroundControl.ScreenTools import QGroundControl.Palette import QGroundControl.Controls import QGroundControl.FlightMap -import QGroundControl.ShapeFileHelper /// QGCMapPolyline map visuals Item { diff --git a/src/MAVLink/QGCMAVLink.h b/src/MAVLink/QGCMAVLink.h index c572f7cc79f3..281c5e5816a6 100644 --- a/src/MAVLink/QGCMAVLink.h +++ b/src/MAVLink/QGCMAVLink.h @@ -22,12 +22,11 @@ Q_DECLARE_LOGGING_CATEGORY(QGCMAVLinkLog) Q_DECLARE_METATYPE(MAV_TYPE) Q_DECLARE_METATYPE(MAV_AUTOPILOT) -// TODO: Q_NAMESPACE class QGCMAVLink : public QObject { Q_OBJECT - // QML_ELEMENT - // QML_UNCREATABLE("") + QML_NAMED_ELEMENT(MAVLink) + QML_SINGLETON public: // Creating an instance of QGCMAVLink is only meant to be used for the Qml Singleton diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index ff6076240c25..de59af4119e7 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -47,7 +47,6 @@ #include "JoystickManager.h" #include "JsonHelper.h" #include "LinkManager.h" -#include "LogDownloadController.h" #include "MAVLinkChartController.h" #include "MAVLinkConsoleController.h" #include "MAVLinkProtocol.h" @@ -63,7 +62,6 @@ #include "QGroundControlQmlGlobal.h" #include "SettingsManager.h" #include "AppSettings.h" -#include "ShapeFileHelper.h" #include "SyslinkComponentController.h" #include "UDPLink.h" #include "Vehicle.h" @@ -83,13 +81,6 @@ QGC_LOGGING_CATEGORY(QGCApplicationLog, "qgc.qgcapplication") -// Qml Singleton factories - -static QObject *mavlinkSingletonFactory(QQmlEngine*, QJSEngine*) -{ - return new QGCMAVLink(); -} - QGCApplication::QGCApplication(int &argc, char *argv[], bool unitTesting, bool simpleBootTest) : QApplication(argc, argv) , _runningUnitTests(unitTesting) @@ -283,7 +274,6 @@ void QGCApplication::init() qmlRegisterType("QGroundControl.Controllers", 1, 0, "MAVLinkInspectorController"); #endif qmlRegisterType("QGroundControl.Controllers", 1, 0, "GeoTagController"); - qmlRegisterType("QGroundControl.Controllers", 1, 0, "LogDownloadController"); qmlRegisterType("QGroundControl.Controllers", 1, 0, "MAVLinkConsoleController"); @@ -298,10 +288,6 @@ void QGCApplication::init() #endif qmlRegisterType("QGroundControl.Controllers", 1, 0, "JoystickConfigController"); - (void) qmlRegisterSingletonType("QGroundControl.ShapeFileHelper", 1, 0, "ShapeFileHelper", [](QQmlEngine *, QJSEngine *) { return new ShapeFileHelper(); }); - - qmlRegisterSingletonType("MAVLink", 1, 0, "MAVLink", mavlinkSingletonFactory); - // Although this should really be in _initForNormalAppBoot putting it here allowws us to create unit tests which pop up more easily if(QFontDatabase::addApplicationFont(":/fonts/opensans") < 0) { qCWarning(QGCApplicationLog) << "Could not load /fonts/opensans font"; diff --git a/src/QmlControls/BatteryIndicator.qml b/src/QmlControls/BatteryIndicator.qml index 254c01bc912a..333df467b15f 100644 --- a/src/QmlControls/BatteryIndicator.qml +++ b/src/QmlControls/BatteryIndicator.qml @@ -18,7 +18,6 @@ import QGroundControl.Palette import QGroundControl.FactSystem import QGroundControl.FactControls import QGroundControl.AutoPilotPlugin -import MAVLink //------------------------------------------------------------------------- //-- Battery Indicator diff --git a/src/QmlControls/KMLOrSHPFileDialog.qml b/src/QmlControls/KMLOrSHPFileDialog.qml index 249885d8744e..cee4b145160e 100644 --- a/src/QmlControls/KMLOrSHPFileDialog.qml +++ b/src/QmlControls/KMLOrSHPFileDialog.qml @@ -11,7 +11,6 @@ import QtQuick import QGroundControl import QGroundControl.Controls -import QGroundControl.ShapeFileHelper QGCFileDialog { id: kmlOrSHPLoadDialog diff --git a/src/QmlControls/PlanView.qml b/src/QmlControls/PlanView.qml index 7b2b6c378824..21570d353986 100644 --- a/src/QmlControls/PlanView.qml +++ b/src/QmlControls/PlanView.qml @@ -23,7 +23,6 @@ import QGroundControl.FactSystem import QGroundControl.FactControls import QGroundControl.Palette import QGroundControl.Controllers -import QGroundControl.ShapeFileHelper import QGroundControl.FlightDisplay import QGroundControl.UTMSP diff --git a/src/QmlControls/QGroundControlQmlGlobal.cc b/src/QmlControls/QGroundControlQmlGlobal.cc index 2d7157e97155..95d5ea8f7b31 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.cc +++ b/src/QmlControls/QGroundControlQmlGlobal.cc @@ -33,7 +33,6 @@ #include "ParameterEditorController.h" #include "QGCFileDialogController.h" #include "RCChannelMonitorController.h" -#include "ScreenToolsController.h" #include "QGCMapPalette.h" #include "QGCPalette.h" #include "QmlObjectListModel.h" @@ -66,18 +65,6 @@ QGC_LOGGING_CATEGORY(GuidedActionsControllerLog, "GuidedActionsControllerLog") QGeoCoordinate QGroundControlQmlGlobal::_coord = QGeoCoordinate(0.0,0.0); double QGroundControlQmlGlobal::_zoom = 2; -static QObject* screenToolsControllerSingletonFactory(QQmlEngine*, QJSEngine*) -{ - ScreenToolsController* screenToolsController = new ScreenToolsController(); - return screenToolsController; -} - -static QObject* qgroundcontrolQmlGlobalSingletonFactory(QQmlEngine*, QJSEngine*) -{ - QGroundControlQmlGlobal *const qmlGlobal = new QGroundControlQmlGlobal(); - return qmlGlobal; -} - void QGroundControlQmlGlobal::registerQmlTypes() { qmlRegisterUncreatableType ("QGroundControl.Templates", 1, 0, "FactValueGrid", "Reference only"); @@ -98,13 +85,9 @@ void QGroundControlQmlGlobal::registerQmlTypes() qmlRegisterType ("QGroundControl.Palette", 1, 0, "QGCPalette"); qmlRegisterType ("QGroundControl.Controllers", 1, 0, "RCChannelMonitorController"); qmlRegisterType ("QGroundControl.Controllers", 1, 0, "RCToParamDialogController"); - qmlRegisterType ("QGroundControl.Controllers", 1, 0, "ScreenToolsController"); qmlRegisterType ("QGroundControl.Controls", 1, 0, "TerrainProfile"); qmlRegisterType ("QGroundControl.Controls", 1, 0, "ToolStripAction"); qmlRegisterType ("QGroundControl.Controls", 1, 0, "ToolStripActionList"); - - qmlRegisterSingletonType ("QGroundControl", 1, 0, "QGroundControl", qgroundcontrolQmlGlobalSingletonFactory); - qmlRegisterSingletonType ("QGroundControl.ScreenToolsController", 1, 0, "ScreenToolsController", screenToolsControllerSingletonFactory); } QGroundControlQmlGlobal::QGroundControlQmlGlobal(QObject *parent) diff --git a/src/QmlControls/QGroundControlQmlGlobal.h b/src/QmlControls/QGroundControlQmlGlobal.h index bc1cd6b879e1..c999c95f6572 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.h +++ b/src/QmlControls/QGroundControlQmlGlobal.h @@ -13,6 +13,7 @@ #include #include #include +#include #include "QmlUnitsConversion.h" @@ -53,6 +54,8 @@ Q_MOC_INCLUDE("AirLinkManager.h") class QGroundControlQmlGlobal : public QObject { Q_OBJECT + QML_NAMED_ELEMENT(QGroundControl) + QML_SINGLETON public: QGroundControlQmlGlobal(QObject *parent = nullptr); diff --git a/src/QmlControls/ScreenTools.qml b/src/QmlControls/ScreenTools.qml index 4f4ef3de366d..7e6f17c35699 100644 --- a/src/QmlControls/ScreenTools.qml +++ b/src/QmlControls/ScreenTools.qml @@ -5,7 +5,6 @@ import QtQuick.Controls import QtQuick.Window import QGroundControl -import QGroundControl.ScreenToolsController /*! The ScreenTools Singleton provides information on QGC's standard font metrics. It also provides information on screen diff --git a/src/QmlControls/ScreenToolsController.h b/src/QmlControls/ScreenToolsController.h index a207d34d46b9..d6afb566617c 100644 --- a/src/QmlControls/ScreenToolsController.h +++ b/src/QmlControls/ScreenToolsController.h @@ -23,8 +23,8 @@ Q_DECLARE_LOGGING_CATEGORY(ScreenToolsControllerLog) class ScreenToolsController : public QObject { Q_OBJECT - // QML_ELEMENT - // TODO: Q_NAMESPACE + QML_ELEMENT + QML_SINGLETON Q_PROPERTY(bool isAndroid READ isAndroid CONSTANT) Q_PROPERTY(bool isiOS READ isiOS CONSTANT) Q_PROPERTY(bool isMobile READ isMobile CONSTANT) diff --git a/src/UI/toolbar/APMBatteryIndicator.qml b/src/UI/toolbar/APMBatteryIndicator.qml index c418711fe69e..f640fab99d96 100644 --- a/src/UI/toolbar/APMBatteryIndicator.qml +++ b/src/UI/toolbar/APMBatteryIndicator.qml @@ -17,7 +17,6 @@ import QGroundControl.ScreenTools import QGroundControl.Palette import QGroundControl.FactSystem import QGroundControl.FactControls -import MAVLink BatteryIndicator { waitForParameters: true diff --git a/src/UTMSP/UTMSPActivationStatusBar.qml b/src/UTMSP/UTMSPActivationStatusBar.qml index 68343acdc601..1133a301e1db 100644 --- a/src/UTMSP/UTMSPActivationStatusBar.qml +++ b/src/UTMSP/UTMSPActivationStatusBar.qml @@ -22,7 +22,6 @@ import QGroundControl.FactSystem import QGroundControl.FactControls import QGroundControl.Palette import QGroundControl.Controllers -import QGroundControl.ShapeFileHelper import QGroundControl.UTMSP import QGroundControl.FlightDisplay import QGroundControl.MultiVehicleManager diff --git a/src/UTMSP/UTMSPAdapterEditor.qml b/src/UTMSP/UTMSPAdapterEditor.qml index 735cda179835..6b4c67bd313b 100644 --- a/src/UTMSP/UTMSPAdapterEditor.qml +++ b/src/UTMSP/UTMSPAdapterEditor.qml @@ -22,7 +22,6 @@ import QGroundControl.FactControls import QGroundControl.Palette import QGroundControl.MultiVehicleManager import QGroundControl.FlightMap -import QGroundControl.ShapeFileHelper import QGroundControl.UTMSP QGCFlickable { diff --git a/src/UTMSP/UTMSPFlightStatusIndicator.qml b/src/UTMSP/UTMSPFlightStatusIndicator.qml index 5c4b193651c7..16e5bf3a4498 100644 --- a/src/UTMSP/UTMSPFlightStatusIndicator.qml +++ b/src/UTMSP/UTMSPFlightStatusIndicator.qml @@ -22,7 +22,6 @@ import QGroundControl.FactSystem import QGroundControl.FactControls import QGroundControl.Palette import QGroundControl.Controllers -import QGroundControl.ShapeFileHelper import QGroundControl.UTMSP import QGroundControl.FlightDisplay import QGroundControl.MultiVehicleManager diff --git a/src/UTMSP/UTMSPMapPolygonVisuals.qml b/src/UTMSP/UTMSPMapPolygonVisuals.qml index 84f298fb41b4..454c48e54273 100644 --- a/src/UTMSP/UTMSPMapPolygonVisuals.qml +++ b/src/UTMSP/UTMSPMapPolygonVisuals.qml @@ -19,7 +19,6 @@ import QGroundControl.ScreenTools import QGroundControl.Palette import QGroundControl.Controls import QGroundControl.FlightMap -import QGroundControl.ShapeFileHelper Item { id: _root diff --git a/src/UTMSP/UTMSPNotificationSlider.qml b/src/UTMSP/UTMSPNotificationSlider.qml index dd039925e770..4820b9a6e0b8 100644 --- a/src/UTMSP/UTMSPNotificationSlider.qml +++ b/src/UTMSP/UTMSPNotificationSlider.qml @@ -22,7 +22,6 @@ import QGroundControl.FactSystem import QGroundControl.FactControls import QGroundControl.Palette import QGroundControl.Controllers -import QGroundControl.ShapeFileHelper import QGroundControl.UTMSP import QGroundControl.FlightDisplay import QGroundControl.MultiVehicleManager diff --git a/src/Utilities/Shape/ShapeFileHelper.h b/src/Utilities/Shape/ShapeFileHelper.h index 7282292a0d17..558f37c0a6d6 100644 --- a/src/Utilities/Shape/ShapeFileHelper.h +++ b/src/Utilities/Shape/ShapeFileHelper.h @@ -12,11 +12,14 @@ #include #include #include +#include /// Routines for loading polygons or polylines from KML or SHP files. class ShapeFileHelper : public QObject { Q_OBJECT + QML_ELEMENT + QML_SINGLETON Q_PROPERTY(QStringList fileDialogKMLFilters READ fileDialogKMLFilters CONSTANT) ///< File filter list for load/save KML file dialogs Q_PROPERTY(QStringList fileDialogKMLOrSHPFilters READ fileDialogKMLOrSHPFilters CONSTANT) ///< File filter list for load/save shape file dialogs