diff --git a/src/FirmwarePlugin/FirmwarePlugin.cc b/src/FirmwarePlugin/FirmwarePlugin.cc index 42aa28387fd0dc93619c2e13036311b5bb4a5bc7..fb6d02816ff6e32b23d09814d2867872cea807c2 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.cc +++ b/src/FirmwarePlugin/FirmwarePlugin.cc @@ -302,3 +302,21 @@ QString FirmwarePlugin::takeControlFlightMode(void) { return QString(); } + +QString FirmwarePlugin::vehicleImageOpaque(const Vehicle* vehicle) const +{ + Q_UNUSED(vehicle); + return QStringLiteral("/qmlimages/vehicleArrowOpaque.svg"); +} + +QString FirmwarePlugin::vehicleImageOutline(const Vehicle* vehicle) const +{ + Q_UNUSED(vehicle); + return QStringLiteral("/qmlimages/vehicleArrowOutline.svg"); +} + +QString FirmwarePlugin::vehicleImageCompass(const Vehicle* vehicle) const +{ + Q_UNUSED(vehicle); + return QStringLiteral("/qmlimages/compassInstrumentArrow.svg"); +} diff --git a/src/FirmwarePlugin/FirmwarePlugin.h b/src/FirmwarePlugin/FirmwarePlugin.h index 3e8ededb995f5093a04a7c9be725c56cdfa3fa43..0c0eb0f77fbe1bbcf233a073725977511c481d44 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.h +++ b/src/FirmwarePlugin/FirmwarePlugin.h @@ -242,6 +242,15 @@ public: /// Return the resource file which contains the brand image for the vehicle. virtual QString brandImage(const Vehicle* vehicle) const { Q_UNUSED(vehicle) return QString(); } + /// Return the resource file which contains the vehicle icon used in the flight view when the view is dark (Satellite for instance) + virtual QString vehicleImageOpaque(const Vehicle* vehicle) const; + + /// Return the resource file which contains the vehicle icon used in the flight view when the view is light (Map for instance) + virtual QString vehicleImageOutline(const Vehicle* vehicle) const; + + /// Return the resource file which contains the vehicle icon used in the compass + virtual QString vehicleImageCompass(const Vehicle* vehicle) const; + // FIXME: Hack workaround for non pluginize FollowMe support static const char* px4FollowMeFlightMode; }; diff --git a/src/FlightDisplay/FlightDisplayViewWidgets.qml b/src/FlightDisplay/FlightDisplayViewWidgets.qml index 9e564002b7e819b9e99aec3054fee916b1009170..9743c72f3a25f454963d2931f8b923d8cd496a04 100644 --- a/src/FlightDisplay/FlightDisplayViewWidgets.qml +++ b/src/FlightDisplay/FlightDisplayViewWidgets.qml @@ -81,7 +81,6 @@ Item { anchors.verticalCenter: parent.verticalCenter visible: !_useAlternateInstruments size: getGadgetWidth() - active: _activeVehicle != null heading: _heading rollAngle: _roll pitchAngle: _pitch @@ -100,7 +99,6 @@ Item { anchors.right: altitudeSlider.visible ? altitudeSlider.left : parent.right visible: _useAlternateInstruments width: ScreenTools.isTinyScreen ? getGadgetWidth() * 1.5 : getGadgetWidth() - active: _activeVehicle != null heading: _heading rollAngle: _roll pitchAngle: _pitch diff --git a/src/FlightDisplay/MultiVehicleList.qml b/src/FlightDisplay/MultiVehicleList.qml index c59f876b8f8bfc9009e8eb282dcdaa861cb97251..9278056d6753451436fb36fdc7367132708fafc3 100644 --- a/src/FlightDisplay/MultiVehicleList.qml +++ b/src/FlightDisplay/MultiVehicleList.qml @@ -52,8 +52,8 @@ QGCListView { QGCCompassWidget { size: _widgetHeight - active: true heading: _vehicle.heading.rawValue + vehicle: _vehicle } QGCAttitudeWidget { diff --git a/src/FlightMap/MapItems/VehicleMapItem.qml b/src/FlightMap/MapItems/VehicleMapItem.qml index 8940e563d686f09ed7b5bb35e1c87787be14b04d..fa1988a2e70bcf5beb6af25012af3ada1a8c99a1 100644 --- a/src/FlightMap/MapItems/VehicleMapItem.qml +++ b/src/FlightMap/MapItems/VehicleMapItem.qml @@ -30,7 +30,7 @@ MapQuickItem { sourceItem: Image { id: vehicleIcon - source: isSatellite ? "/qmlimages/vehicleArrowOpaque.svg" : "/qmlimages/vehicleArrowOutline.svg" + source: isSatellite ? vehicle.vehicleImageOpaque : vehicle.vehicleImageOutline mipmap: true width: size sourceSize.width: size diff --git a/src/FlightMap/Widgets/QGCCompassWidget.qml b/src/FlightMap/Widgets/QGCCompassWidget.qml index 2a3aff1e5d86de185e0cbb55e983b5557acd47f2..b941fbf919f8fbd9663aba8f0822738e39942ae1 100644 --- a/src/FlightMap/Widgets/QGCCompassWidget.qml +++ b/src/FlightMap/Widgets/QGCCompassWidget.qml @@ -17,15 +17,16 @@ import QtQuick 2.4 import QtGraphicalEffects 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.ScreenTools 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Vehicle 1.0 Item { id: root - property bool active: false ///< true: actively connected to data provider, false: show inactive control - property real heading: 0 property real size: _defaultSize + property real heading: 0 + property var vehicle: null property real _defaultSize: ScreenTools.defaultFontPixelHeight * (10) property real _sizeRatio: ScreenTools.isTinyScreen ? (size / _defaultSize) * 0.5 : size / _defaultSize @@ -48,7 +49,7 @@ Item { Image { id: pointer - source: "/qmlimages/compassInstrumentArrow.svg" + source: vehicle ? vehicle.vehicleImageCompass : "" mipmap: true width: size * 0.75 sourceSize.width: width @@ -78,8 +79,8 @@ Item { color: Qt.rgba(0,0,0,0.65) QGCLabel { - text: active ? heading.toFixed(0) : qsTr("OFF") - font.family: active ? ScreenTools.demiboldFontFamily : ScreenTools.normalFontFamily + text: vehicle ? heading.toFixed(0) : qsTr("OFF") + font.family: vehicle ? ScreenTools.demiboldFontFamily : ScreenTools.normalFontFamily font.pointSize: _fontSize < 8 ? 8 : _fontSize; color: "white" anchors.centerIn: parent diff --git a/src/FlightMap/Widgets/QGCInstrumentWidget.qml b/src/FlightMap/Widgets/QGCInstrumentWidget.qml index a5352549c559cc3517c51604905396bc358a9aaf..879f740c4295eb240ff6e996802618cec944ba4e 100644 --- a/src/FlightMap/Widgets/QGCInstrumentWidget.qml +++ b/src/FlightMap/Widgets/QGCInstrumentWidget.qml @@ -150,8 +150,8 @@ Item { QGCCompassWidget { id: compass size: parent.width * 0.95 - active: instrumentPanel.active visible: _showCompass + vehicle: _activeVehicle anchors.horizontalCenter: parent.horizontalCenter } } diff --git a/src/FlightMap/Widgets/QGCInstrumentWidgetAlternate.qml b/src/FlightMap/Widgets/QGCInstrumentWidgetAlternate.qml index ad11cf65beb17225b1be2fea168e341cce0a969f..2ce355663276064feb8f7139dc6fec8d6b11fca2 100644 --- a/src/FlightMap/Widgets/QGCInstrumentWidgetAlternate.qml +++ b/src/FlightMap/Widgets/QGCInstrumentWidgetAlternate.qml @@ -10,6 +10,7 @@ import QtQuick 2.4 +import QGroundControl 1.0 import QGroundControl.Controls 1.0 import QGroundControl.ScreenTools 1.0 import QGroundControl.FactSystem 1.0 @@ -68,7 +69,7 @@ Rectangle { anchors.leftMargin: _spacing anchors.left: attitude.right size: _innerRadius * 2 - active: root.active + vehicle: QGroundControl.multiVehicleManager.activeVehicle anchors.verticalCenter: parent.verticalCenter } diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 10c7deee44222ad43d2d4f07d893497c3f735bfe..4876910d6678c949dad39b89c93f04909dd442b9 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -2203,6 +2203,30 @@ QString Vehicle::takeControlFlightMode(void) const return _firmwarePlugin->takeControlFlightMode(); } +QString Vehicle::vehicleImageOpaque() const +{ + if(_firmwarePlugin) + return _firmwarePlugin->vehicleImageOpaque(this); + else + return QString(); +} + +QString Vehicle::vehicleImageOutline() const +{ + if(_firmwarePlugin) + return _firmwarePlugin->vehicleImageOutline(this); + else + return QString(); +} + +QString Vehicle::vehicleImageCompass() const +{ + if(_firmwarePlugin) + return _firmwarePlugin->vehicleImageCompass(this); + else + return QString(); +} + //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index c9d2c01140dc14871dfec21d9502cc1b375f12d2..a765f876af55215205e291f611b3a90c62e67311 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -264,6 +264,9 @@ public: Q_PROPERTY(QString takeControlFlightMode READ takeControlFlightMode CONSTANT) Q_PROPERTY(QString firmwareTypeString READ firmwareTypeString NOTIFY firmwareTypeChanged) Q_PROPERTY(QString vehicleTypeString READ vehicleTypeString NOTIFY vehicleTypeChanged) + Q_PROPERTY(QString vehicleImageOpaque READ vehicleImageOpaque CONSTANT) + Q_PROPERTY(QString vehicleImageOutline READ vehicleImageOutline CONSTANT) + Q_PROPERTY(QString vehicleImageCompass READ vehicleImageCompass CONSTANT) /// true: Vehicle is flying, false: Vehicle is on ground Q_PROPERTY(bool flying READ flying WRITE setFlying NOTIFY flyingChanged) @@ -582,6 +585,10 @@ public: /// and destroyed when the vehicle goes away. void setFirmwarePluginInstanceData(QObject* firmwarePluginInstanceData); + QString vehicleImageOpaque () const; + QString vehicleImageOutline () const; + QString vehicleImageCompass () const; + public slots: void setLatitude(double latitude); void setLongitude(double longitude);