Browse Source

New Qml based dock widget support

QGC4.4
Don Gagne 10 years ago
parent
commit
2fa10f5f4e
  1. 82
      src/ViewWidgets/ViewWidget.qml
  2. 74
      src/ViewWidgets/ViewWidgetController.cc
  3. 56
      src/ViewWidgets/ViewWidgetController.h

82
src/ViewWidgets/ViewWidget.qml

@ -0,0 +1,82 @@ @@ -0,0 +1,82 @@
import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import QGroundControl.Palette 1.0
import QGroundControl.Controllers 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 = disconnectedComponent
pageLoader.autopilot = {}
}
}
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: "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: "no vehicle connected"
}
}
}
}

74
src/ViewWidgets/ViewWidgetController.cc

@ -0,0 +1,74 @@ @@ -0,0 +1,74 @@
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
#include "ViewWidgetController.h"
#include "UASManager.h"
#include "AutoPilotPluginManager.h"
ViewWidgetController::ViewWidgetController(void) :
_autopilot(NULL)
{
_uasManager = UASManager::instance();
Q_ASSERT(_uasManager);
connect(_uasManager, &UASManagerInterface::activeUASSet, this, &ViewWidgetController::_activeUasChanged);
}
void ViewWidgetController::_activeUasChanged(UASInterface* currentUas)
{
if (currentUas != _uas) {
if (_uas) {
disconnect(_autopilot, &AutoPilotPlugin::pluginReadyChanged, this, &ViewWidgetController::_pluginReadyChanged);
_uas = NULL;
_autopilot = NULL;
emit pluginDisconnected();
}
if (currentUas) {
_uas = currentUas;
_autopilot = AutoPilotPluginManager::instance()->getInstanceForAutoPilotPlugin(currentUas);
Q_ASSERT(_autopilot);
connect(_autopilot, &AutoPilotPlugin::pluginReadyChanged, this, &ViewWidgetController::_pluginReadyChanged);
if (_autopilot->pluginReady()) {
_pluginReadyChanged(true);
}
}
}
}
void ViewWidgetController::_pluginReadyChanged(bool pluginReady)
{
Q_ASSERT(_autopilot);
if (pluginReady) {
emit pluginConnected(QVariant::fromValue(_autopilot));
} else {
_activeUasChanged(NULL);
}
}
Q_INVOKABLE void ViewWidgetController::checkForVehicle(void)
{
_activeUasChanged(_uasManager->getActiveUAS());
}

56
src/ViewWidgets/ViewWidgetController.h

@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
#ifndef VIEWWIDGETCONTROLLER_H
#define VIEWWIDGETCONTROLLER_H
#include <QObject>
#include "UASInterface.h"
#include "AutoPilotPlugin.h"
#include "UASManagerInterface.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 _activeUasChanged(UASInterface* UAS);
void _pluginReadyChanged(bool pluginReady);
private:
AutoPilotPlugin* _autopilot;
UASManagerInterface* _uasManager;
UASInterface* _uas;
};
#endif
Loading…
Cancel
Save