3 changed files with 212 additions and 0 deletions
@ -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" |
||||
} |
||||
} |
||||
} |
||||
} |
@ -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()); |
||||
} |
@ -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…
Reference in new issue