10 changed files with 0 additions and 349 deletions
@ -1,16 +0,0 @@
@@ -1,16 +0,0 @@
|
||||
|
||||
add_library(ViewWidgets |
||||
ViewWidgetController.cc |
||||
) |
||||
|
||||
target_link_libraries(ViewWidgets |
||||
PUBLIC |
||||
qgc |
||||
) |
||||
|
||||
add_custom_target(ViewWidgetsQml |
||||
SOURCE |
||||
ViewWidget.qml |
||||
) |
||||
|
||||
target_include_directories(ViewWidgets INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) |
@ -1,121 +0,0 @@
@@ -1,121 +0,0 @@
|
||||
/**************************************************************************** |
||||
* |
||||
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org> |
||||
* |
||||
* QGroundControl is licensed according to the terms in the file |
||||
* COPYING.md in the root of the source code directory. |
||||
* |
||||
****************************************************************************/ |
||||
|
||||
import QtQuick 2.3 |
||||
import QtQuick.Controls 1.2 |
||||
import QtQuick.Controls.Styles 1.4 |
||||
import QtQuick.Dialogs 1.2 |
||||
|
||||
import QGroundControl 1.0 |
||||
import QGroundControl.Palette 1.0 |
||||
import QGroundControl.Controls 1.0 |
||||
import QGroundControl.Controllers 1.0 |
||||
import QGroundControl.ScreenTools 1.0 |
||||
|
||||
Item { |
||||
|
||||
property var _activeVehicle: QGroundControl.multiVehicleManager.parameterReadyVehicleAvailable ? QGroundControl.multiVehicleManager.activeVehicle : null |
||||
property real _margins: ScreenTools.defaultFontPixelHeight |
||||
property string _noVehicleText: qsTr("No vehicle connected") |
||||
property string _assignQmlFile: "<p>" + |
||||
"You can create your own commands and parameter editing user interface in this widget. " + |
||||
"You do this by providing your own Qml file. " + |
||||
"This support is a work in progress and the details may change somewhat in the future. " + |
||||
"By using this feature you are connecting directly to the internals of QGroundControl. " + |
||||
"Doing so incorrectly may cause instability both in QGroundControl and/or your vehicle. " + |
||||
"So make sure to test your changes thoroughly before using them in flight.</p>" + |
||||
"<p>Click 'Load Custom Qml file' to provide your custom qml file.</p>" + |
||||
"<p>Click 'Reset' to reset to none.</p>" + |
||||
"<p>Example usage: <a href='https://docs.qgroundcontrol.com/en/app_menu/custom_command_widget.html'>https://docs.qgroundcontrol.com/en/app_menu/custom_command_widget.html</a></p>" |
||||
|
||||
QGCPalette { id: qgcPal; colorGroupEnabled: enabled } |
||||
|
||||
CustomCommandWidgetController { |
||||
id: controller |
||||
onCustomQmlFileChanged: _updateLoader() |
||||
} |
||||
|
||||
Component.onCompleted: _updateLoader() |
||||
|
||||
on_ActiveVehicleChanged: _updateLoader() |
||||
|
||||
function _updateLoader() { |
||||
loader.sourceComponent = undefined |
||||
loader.visible = false |
||||
textOutput.text = _noVehicleText |
||||
if (_activeVehicle) { |
||||
if (controller.customQmlFile === "") { |
||||
textOutput.text = _assignQmlFile |
||||
} else { |
||||
loader.source = controller.customQmlFile |
||||
} |
||||
} |
||||
} |
||||
|
||||
Item { |
||||
anchors.fill: parent |
||||
|
||||
Rectangle { |
||||
anchors.fill: parent |
||||
color: qgcPal.window |
||||
|
||||
Loader { |
||||
id: loader |
||||
anchors.margins: _margins |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
anchors.top: parent.top |
||||
anchors.bottom: buttonRow.top |
||||
visible: false |
||||
|
||||
onStatusChanged: { |
||||
if (loader.status == Loader.Error) { |
||||
textOutput.text = sourceComponent.errorString() |
||||
} else if (loader.status == Loader.Ready) { |
||||
loader.visible = true |
||||
} |
||||
} |
||||
} |
||||
QGCFlickable { |
||||
id: container |
||||
anchors.fill: loader |
||||
contentHeight: textOutput.height |
||||
flickableDirection: QGCFlickable.VerticalFlick |
||||
visible: !loader.visible |
||||
QGCLabel { |
||||
id: textOutput |
||||
width: container.width |
||||
wrapMode: Text.WordWrap |
||||
textFormat: Text.RichText |
||||
onLinkActivated: Qt.openUrlExternally(link) |
||||
} |
||||
} |
||||
Row { |
||||
id: buttonRow |
||||
spacing: ScreenTools.defaultFontPixelWidth |
||||
anchors.margins: _margins |
||||
anchors.bottom: parent.bottom |
||||
anchors.horizontalCenter: parent.horizontalCenter |
||||
|
||||
QGCButton { |
||||
text: qsTr("Load Custom Qml file...") |
||||
width: ScreenTools.defaultFontPixelWidth * 22 |
||||
onClicked: controller.selectQmlFile() |
||||
} |
||||
|
||||
QGCButton { |
||||
text: qsTr("Reset") |
||||
width: ScreenTools.defaultFontPixelWidth * 22 |
||||
onClicked: controller.clearQmlFile() |
||||
} |
||||
} |
||||
|
||||
} |
||||
} |
||||
} |
@ -1,39 +0,0 @@
@@ -1,39 +0,0 @@
|
||||
/****************************************************************************
|
||||
* |
||||
* (c) 2009-2018 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
* |
||||
* QGroundControl is licensed according to the terms in the file |
||||
* COPYING.md in the root of the source code directory. |
||||
* |
||||
****************************************************************************/ |
||||
|
||||
|
||||
#pragma once |
||||
|
||||
#include <QObject> |
||||
|
||||
#include "AutoPilotPlugin.h" |
||||
#include "FactPanelController.h" |
||||
|
||||
class CustomCommandWidgetController : public FactPanelController |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
CustomCommandWidgetController(void); |
||||
|
||||
Q_PROPERTY(QString customQmlFile MEMBER _customQmlFile NOTIFY customQmlFileChanged) |
||||
|
||||
Q_INVOKABLE void sendCommand (int commandId, QVariant componentId, QVariant confirm, QVariant param1, QVariant param2, QVariant param3, QVariant param4, QVariant param5, QVariant param6, QVariant param7); |
||||
Q_INVOKABLE void selectQmlFile (void); |
||||
Q_INVOKABLE void clearQmlFile (void); |
||||
|
||||
signals: |
||||
void customQmlFileChanged (const QString& customQmlFile); |
||||
|
||||
private: |
||||
Vehicle* _vehicle; |
||||
QString _customQmlFile; |
||||
static const char* _settingsKey; |
||||
}; |
||||
|
@ -1,85 +0,0 @@
@@ -1,85 +0,0 @@
|
||||
import QtQuick 2.3 |
||||
import QtQuick.Controls 1.2 |
||||
import QtQuick.Controls.Styles 1.4 |
||||
|
||||
import QGroundControl 1.0 |
||||
import QGroundControl.Controls 1.0 |
||||
import QGroundControl.Controllers 1.0 |
||||
import QGroundControl.Palette 1.0 |
||||
|
||||
Rectangle { |
||||
property Component connectedComponent: __componentConnected |
||||
property Component disconnectedComponent: __componentDisconnected |
||||
|
||||
QGCPalette { id: __qgcPal; colorGroupEnabled: enabled } |
||||
ViewWidgetController { id: __controller } |
||||
|
||||
color: __qgcPal.window |
||||
|
||||
Component.onCompleted: __controller.checkForVehicle() |
||||
|
||||
Connections { |
||||
target: __controller |
||||
|
||||
onPluginConnected: { |
||||
pageLoader.autopilot = autopilot |
||||
pageLoader.sourceComponent = connectedComponent |
||||
} |
||||
|
||||
onPluginDisconnected: { |
||||
pageLoader.sourceComponent = null |
||||
pageLoader.sourceComponent = disconnectedComponent |
||||
pageLoader.autopilot = null |
||||
} |
||||
} |
||||
|
||||
Loader { |
||||
id: pageLoader |
||||
|
||||
anchors.fill: parent |
||||
|
||||
property var autopilot |
||||
|
||||
sourceComponent: __componentDisconnected |
||||
} |
||||
|
||||
Component { |
||||
id: __componentConnected |
||||
|
||||
Rectangle { |
||||
QGCPalette { id: __qgcPal; colorGroupEnabled: enabled } |
||||
|
||||
anchors.fill: parent |
||||
color: __qgcPal.window |
||||
|
||||
QGCLabel { |
||||
anchors.fill: parent |
||||
|
||||
horizontalAlignment: Text.AlignHCenter |
||||
verticalAlignment: Text.AlignVCenter |
||||
|
||||
text: qsTr("missing connected implementation") |
||||
} |
||||
} |
||||
} |
||||
|
||||
Component { |
||||
id: __componentDisconnected |
||||
|
||||
Rectangle { |
||||
QGCPalette { id: __qgcPal; colorGroupEnabled: enabled } |
||||
|
||||
anchors.fill: parent |
||||
color: __qgcPal.window |
||||
|
||||
QGCLabel { |
||||
anchors.fill: parent |
||||
|
||||
horizontalAlignment: Text.AlignHCenter |
||||
verticalAlignment: Text.AlignVCenter |
||||
|
||||
text: qsTr("no vehicle connected") |
||||
} |
||||
} |
||||
} |
||||
} |
@ -1,43 +0,0 @@
@@ -1,43 +0,0 @@
|
||||
/****************************************************************************
|
||||
* |
||||
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
* |
||||
* QGroundControl is licensed according to the terms in the file |
||||
* COPYING.md in the root of the source code directory. |
||||
* |
||||
****************************************************************************/ |
||||
|
||||
|
||||
#include "ViewWidgetController.h" |
||||
#include "MultiVehicleManager.h" |
||||
#include "UAS.h" |
||||
#include "QGCApplication.h" |
||||
|
||||
ViewWidgetController::ViewWidgetController(void) : |
||||
_autopilot(NULL), |
||||
_uas(NULL) |
||||
{ |
||||
connect(qgcApp()->toolbox()->multiVehicleManager(), &MultiVehicleManager::parameterReadyVehicleAvailableChanged, this, &ViewWidgetController::_vehicleAvailable); |
||||
} |
||||
|
||||
void ViewWidgetController::_vehicleAvailable(bool available) |
||||
{ |
||||
if (_uas) { |
||||
_uas = NULL; |
||||
_autopilot = NULL; |
||||
emit pluginDisconnected(); |
||||
} |
||||
|
||||
if (available) { |
||||
Vehicle* vehicle = qgcApp()->toolbox()->multiVehicleManager()->activeVehicle(); |
||||
|
||||
_uas = vehicle->uas(); |
||||
_autopilot = vehicle->autopilotPlugin(); |
||||
emit pluginConnected(QVariant::fromValue(_autopilot)); |
||||
} |
||||
} |
||||
|
||||
void ViewWidgetController::checkForVehicle(void) |
||||
{ |
||||
_vehicleAvailable(qgcApp()->toolbox()->multiVehicleManager()->activeVehicle()); |
||||
} |
@ -1,39 +0,0 @@
@@ -1,39 +0,0 @@
|
||||
/****************************************************************************
|
||||
* |
||||
* (c) 2009-2018 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
* |
||||
* QGroundControl is licensed according to the terms in the file |
||||
* COPYING.md in the root of the source code directory. |
||||
* |
||||
****************************************************************************/ |
||||
|
||||
|
||||
#pragma once |
||||
|
||||
#include <QObject> |
||||
|
||||
#include "UASInterface.h" |
||||
#include "AutoPilotPlugin.h" |
||||
#include "Vehicle.h" |
||||
|
||||
class ViewWidgetController : public QObject |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
ViewWidgetController(void); |
||||
|
||||
Q_INVOKABLE void checkForVehicle(void); |
||||
|
||||
signals: |
||||
void pluginConnected(QVariant autopilot); |
||||
void pluginDisconnected(void); |
||||
|
||||
private slots: |
||||
void _vehicleAvailable(bool available); |
||||
|
||||
private: |
||||
AutoPilotPlugin* _autopilot; |
||||
UASInterface* _uas; |
||||
}; |
||||
|
Loading…
Reference in new issue