diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index 6709e50309462c76be9ac8dd4d8ff7abff1b735c..7abc033aa72d1a49973d9552e1049234d38403e2 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -79,6 +79,7 @@ #include "QGCMapPolygon.h" #include "ParameterManager.h" #include "SettingsManager.h" +#include "QGCCorePlugin.h" #ifndef NO_SERIAL_LINK #include "SerialLink.h" @@ -395,11 +396,7 @@ bool QGCApplication::_initForNormalAppBoot(void) connect(this, &QGCApplication::lastWindowClosed, this, QGCApplication::quit); #ifdef __mobile__ - _qmlAppEngine = new QQmlApplicationEngine(this); - _qmlAppEngine->addImportPath("qrc:/qml"); - _qmlAppEngine->rootContext()->setContextProperty("joystickManager", toolbox()->joystickManager()); - _qmlAppEngine->rootContext()->setContextProperty("debugMessageModel", AppMessages::getModel()); - _qmlAppEngine->load(QUrl(QStringLiteral("qrc:/qml/MainWindowNative.qml"))); + _qmlAppEngine = toolbox()->corePlugin()->createRootWindow(this); #else // Start the user interface MainWindow* mainWindow = MainWindow::_create(); diff --git a/src/api/QGCCorePlugin.cc b/src/api/QGCCorePlugin.cc index dfb444d05108ddb0018b57284e93b69f716662b1..c450528061c8fb262c6a32060ccb6dc718aebc9e 100644 --- a/src/api/QGCCorePlugin.cc +++ b/src/api/QGCCorePlugin.cc @@ -7,11 +7,13 @@ * ****************************************************************************/ +#include "QGCApplication.h" #include "QGCCorePlugin.h" #include "QGCOptions.h" #include "QGCSettings.h" #include "FactMetaData.h" #include "SettingsManager.h" +#include "AppMessages.h" #include #include @@ -213,3 +215,13 @@ void QGCCorePlugin::valuesWidgetDefaultSettings(QStringList& largeValues, QStrin Q_UNUSED(smallValues); largeValues << "Vehicle.altitudeRelative" << "Vehicle.groundSpeed" << "Vehicle.flightTime"; } + +QQmlApplicationEngine* QGCCorePlugin::createRootWindow(QObject *parent) +{ + QQmlApplicationEngine* pEngine = new QQmlApplicationEngine(parent); + pEngine->addImportPath("qrc:/qml"); + pEngine->rootContext()->setContextProperty("joystickManager", qgcApp()->toolbox()->joystickManager()); + pEngine->rootContext()->setContextProperty("debugMessageModel", AppMessages::getModel()); + pEngine->load(QUrl(QStringLiteral("qrc:/qml/MainWindowNative.qml"))); + return pEngine; +} diff --git a/src/api/QGCCorePlugin.h b/src/api/QGCCorePlugin.h index 567e8512c235fc788b8d780c32251514f0424224..9e996f7221ec3215195384b232b0cfad1ee2e2c6 100644 --- a/src/api/QGCCorePlugin.h +++ b/src/api/QGCCorePlugin.h @@ -27,6 +27,7 @@ class QGCSettings; class QGCCorePlugin_p; class FactMetaData; class QGeoPositionInfoSource; +class QQmlApplicationEngine; class QGCCorePlugin : public QGCTool { @@ -83,9 +84,12 @@ public: /// Allows a plugin to override the specified color name from the palette virtual void paletteOverride(QString colorName, QGCPalette::PaletteColorInfo_t& colorInfo); - /// Allows the plugin the override the default settings for the Values Widget large and small values + /// Allows the plugin to override the default settings for the Values Widget large and small values virtual void valuesWidgetDefaultSettings(QStringList& largeValues, QStringList& smallValues); + /// Allows the plugin to override the creation of the root (native) window. + virtual QQmlApplicationEngine* createRootWindow(QObject* parent); + bool showTouchAreas(void) const { return _showTouchAreas; } bool showAdvancedUI(void) const { return _showAdvancedUI; } void setShowTouchAreas(bool show);