/**************************************************************************** * * (c) 2009-2019 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. * * @brief Custom QGCCorePlugin Declaration * @author Gus Grubba */ #pragma once #include "QGCCorePlugin.h" #include "QGCOptions.h" #include "QGCLoggingCategory.h" #include "VideoReceiver.h" #include "SettingsManager.h" #include class CustomPlugin; class CustomSettings; Q_DECLARE_LOGGING_CATEGORY(CustomLog) //-- Our own, custom video receiver class CustomVideoReceiver : public VideoReceiver { Q_OBJECT public: explicit CustomVideoReceiver(QObject* parent = nullptr); ~CustomVideoReceiver(); }; //----------------------------------------------------------------------------- //-- Our own, custom options class CustomOptions : public QGCOptions { public: CustomOptions(CustomPlugin*, QObject* parent = nullptr); bool wifiReliableForCalibration () const final { return true; } QUrl flyViewOverlay () const final { return QUrl::fromUserInput("qrc:/custom/CustomFlyView.qml"); } QUrl preFlightChecklistUrl () const final { return QUrl::fromUserInput("qrc:/custom/PreFlightCheckList.qml"); } //-- We have our own toolbar QUrl mainToolbarUrl () const final { return QUrl::fromUserInput("qrc:/custom/CustomMainToolBar.qml"); } QUrl planToolbarUrl () const final { return QUrl::fromUserInput("qrc:/custom/CustomMainToolBar.qml"); } //-- Don't show instrument widget CustomInstrumentWidget* instrumentWidget () final { return nullptr; } bool showMavlinkLogOptions () const final { return false; } bool showFirmwareUpgrade () const final; //-- We handle multiple vehicles in a custom way bool enableMultiVehicleList () const final { return false; } //-- We handle our own map scale bool enableMapScale () const final { return false; } // TODO: Can't access QGCPalette without some workarounds, change this upstream QColor toolbarBackgroundLight () const final; QColor toolbarBackgroundDark () const final; }; //----------------------------------------------------------------------------- class CustomPlugin : public QGCCorePlugin { Q_OBJECT public: CustomPlugin(QGCApplication* app, QGCToolbox *toolbox); ~CustomPlugin(); // Overrides from QGCCorePlugin QVariantList& settingsPages () final; QGCOptions* options () final; QString brandImageIndoor () const final; QString brandImageOutdoor () const final; bool overrideSettingsGroupVisibility (QString name) final; VideoReceiver* createVideoReceiver (QObject* parent) final; QQmlApplicationEngine* createRootWindow (QObject* parent) final; bool adjustSettingMetaData (const QString& settingsGroup, FactMetaData& metaData) final; void paletteOverride (QString colorName, QGCPalette::PaletteColorInfo_t& colorInfo) final; // Overrides from QGCTool void setToolbox (QGCToolbox* toolbox); const static QColor _windowShadeEnabledLightColor; const static QColor _windowShadeEnabledDarkColor; private slots: void _advancedChanged (bool advanced); private: void addSettingsEntry( const QString& title, const char* qmlFile, const char* iconFile = nullptr); private: CustomOptions* _pOptions = nullptr; QVariantList _customSettingsList; // Not to be mixed up with QGCCorePlugin implementation };