Commit d8cb9592 authored by Don Gagne's avatar Don Gagne

Merge pull request #2005 from DonLakeFlyer/FullQml

MainWindow is now 100% Qml
parents 3ba9c2f8 57c34c1c
...@@ -216,7 +216,7 @@ HEADERS += \ ...@@ -216,7 +216,7 @@ HEADERS += \
src/comm/TCPLink.h \ src/comm/TCPLink.h \
src/comm/UDPLink.h \ src/comm/UDPLink.h \
src/FlightDisplay/FlightDisplayWidget.h \ src/FlightDisplay/FlightDisplayWidget.h \
src/FlightDisplay/FlightDisplayView.h \ src/FlightDisplay/FlightDisplayViewController.h \
src/FlightMap/FlightMapSettings.h \ src/FlightMap/FlightMapSettings.h \
src/GAudioOutput.h \ src/GAudioOutput.h \
src/HomePositionManager.h \ src/HomePositionManager.h \
...@@ -224,7 +224,7 @@ HEADERS += \ ...@@ -224,7 +224,7 @@ HEADERS += \
src/Joystick/JoystickManager.h \ src/Joystick/JoystickManager.h \
src/LogCompressor.h \ src/LogCompressor.h \
src/MG.h \ src/MG.h \
src/MissionEditor/MissionEditor.h \ src/MissionEditor/MissionEditorController.h \
src/MissionManager/MissionManager.h \ src/MissionManager/MissionManager.h \
src/QGC.h \ src/QGC.h \
src/QGCApplication.h \ src/QGCApplication.h \
...@@ -264,7 +264,7 @@ HEADERS += \ ...@@ -264,7 +264,7 @@ HEADERS += \
src/ui/QGCTCPLinkConfiguration.h \ src/ui/QGCTCPLinkConfiguration.h \
src/ui/QGCUDPLinkConfiguration.h \ src/ui/QGCUDPLinkConfiguration.h \
src/ui/SettingsDialog.h \ src/ui/SettingsDialog.h \
src/ui/toolbar/MainToolBar.h \ src/ui/toolbar/MainToolBarController.h \
src/ui/uas/QGCUnconnectedInfoWidget.h \ src/ui/uas/QGCUnconnectedInfoWidget.h \
src/ui/uas/UASMessageView.h \ src/ui/uas/UASMessageView.h \
src/MissionItem.h \ src/MissionItem.h \
...@@ -327,7 +327,7 @@ SOURCES += \ ...@@ -327,7 +327,7 @@ SOURCES += \
src/comm/TCPLink.cc \ src/comm/TCPLink.cc \
src/comm/UDPLink.cc \ src/comm/UDPLink.cc \
src/FlightDisplay/FlightDisplayWidget.cc \ src/FlightDisplay/FlightDisplayWidget.cc \
src/FlightDisplay/FlightDisplayView.cc \ src/FlightDisplay/FlightDisplayViewController.cc \
src/FlightMap/FlightMapSettings.cc \ src/FlightMap/FlightMapSettings.cc \
src/GAudioOutput.cc \ src/GAudioOutput.cc \
src/HomePositionManager.cc \ src/HomePositionManager.cc \
...@@ -335,7 +335,7 @@ SOURCES += \ ...@@ -335,7 +335,7 @@ SOURCES += \
src/Joystick/JoystickManager.cc \ src/Joystick/JoystickManager.cc \
src/LogCompressor.cc \ src/LogCompressor.cc \
src/main.cc \ src/main.cc \
src/MissionEditor/MissionEditor.cc \ src/MissionEditor/MissionEditorController.cc \
src/MissionManager/MissionManager.cc \ src/MissionManager/MissionManager.cc \
src/QGC.cc \ src/QGC.cc \
src/QGCApplication.cc \ src/QGCApplication.cc \
...@@ -369,7 +369,7 @@ SOURCES += \ ...@@ -369,7 +369,7 @@ SOURCES += \
src/ui/QGCTCPLinkConfiguration.cc \ src/ui/QGCTCPLinkConfiguration.cc \
src/ui/QGCUDPLinkConfiguration.cc \ src/ui/QGCUDPLinkConfiguration.cc \
src/ui/SettingsDialog.cc \ src/ui/SettingsDialog.cc \
src/ui/toolbar/MainToolBar.cc \ src/ui/toolbar/MainToolBarController.cc \
src/ui/uas/QGCUnconnectedInfoWidget.cc \ src/ui/uas/QGCUnconnectedInfoWidget.cc \
src/ui/uas/UASMessageView.cc \ src/ui/uas/UASMessageView.cc \
src/MissionItem.cc \ src/MissionItem.cc \
...@@ -518,7 +518,6 @@ HEADERS+= \ ...@@ -518,7 +518,6 @@ HEADERS+= \
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h \ src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h \
src/Vehicle/MultiVehicleManager.h \ src/Vehicle/MultiVehicleManager.h \
src/Vehicle/Vehicle.h \ src/Vehicle/Vehicle.h \
src/VehicleSetup/SetupView.h \
src/VehicleSetup/VehicleComponent.h \ src/VehicleSetup/VehicleComponent.h \
!MobileBuild { !MobileBuild {
...@@ -557,7 +556,6 @@ SOURCES += \ ...@@ -557,7 +556,6 @@ SOURCES += \
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc \ src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc \
src/Vehicle/MultiVehicleManager.cc \ src/Vehicle/MultiVehicleManager.cc \
src/Vehicle/Vehicle.cc \ src/Vehicle/Vehicle.cc \
src/VehicleSetup/SetupView.cc \
src/VehicleSetup/VehicleComponent.cc \ src/VehicleSetup/VehicleComponent.cc \
!MobileBuild { !MobileBuild {
......
...@@ -119,6 +119,11 @@ ...@@ -119,6 +119,11 @@
<file alias="QGroundControl/Controls/QGCCanvas.qml">src/QmlControls/QGCCanvas.qml</file> <file alias="QGroundControl/Controls/QGCCanvas.qml">src/QmlControls/QGCCanvas.qml</file>
<file alias="QGroundControl/Controls/ExclusiveGroupItem.qml">src/QmlControls/ExclusiveGroupItem.qml</file> <file alias="QGroundControl/Controls/ExclusiveGroupItem.qml">src/QmlControls/ExclusiveGroupItem.qml</file>
<!-- Main Window -->
<file alias="MainWindow.qml">src/ui/MainWindow.qml</file>
<file alias="QGroundControl/Controls/MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file>
<file alias="QGroundControl/Controls/FlightDisplayView.qml">src/FlightDisplay/FlightDisplayView.qml</file>
<!-- Vehicle Setup --> <!-- Vehicle Setup -->
<file alias="SetupView.qml">src/VehicleSetup/SetupView.qml</file> <file alias="SetupView.qml">src/VehicleSetup/SetupView.qml</file>
<file alias="VehicleSummary.qml">src/VehicleSetup/VehicleSummary.qml</file> <file alias="VehicleSummary.qml">src/VehicleSetup/VehicleSummary.qml</file>
......
...@@ -64,9 +64,7 @@ void AutoPilotPlugin::_parametersReadyChanged(bool parametersReady) ...@@ -64,9 +64,7 @@ void AutoPilotPlugin::_parametersReadyChanged(bool parametersReady)
QGCMessageBox::warning("Setup", "One or more vehicle components require setup prior to flight."); QGCMessageBox::warning("Setup", "One or more vehicle components require setup prior to flight.");
// Take the user to Vehicle Summary // Take the user to Vehicle Summary
MainWindow* mainWindow = MainWindow::instance(); MainWindow::instance()->showSetupView();
Q_ASSERT(mainWindow);
mainWindow->getMainToolBar()->onSetupView();
qgcApp()->processEvents(QEventLoop::ExcludeUserInputEvents); qgcApp()->processEvents(QEventLoop::ExcludeUserInputEvents);
} }
} }
......
...@@ -34,11 +34,23 @@ import QGroundControl.ScreenTools 1.0 ...@@ -34,11 +34,23 @@ import QGroundControl.ScreenTools 1.0
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
import QGroundControl.Vehicle 1.0 import QGroundControl.Vehicle 1.0
import QGroundControl.Controllers 1.0
/// Flight Display View /// Flight Display View
Item { Item {
id: root id: root
// Top margin for all widgets. Used to prevent overlap with the toolbar
property real topMargin: 0
// Used by parent to hide widgets when it displays something above in the z order.
// Prevents z order drawing problems.
property bool hideWidgets: false
readonly property alias zOrderTopMost: flightMap.zOrderTopMost
readonly property alias zOrderWidgets: flightMap.zOrderWidgets
readonly property alias zOrderMapItems: flightMap.zOrderMapItems
property var __qgcPal: QGCPalette { colorGroupEnabled: enabled } property var __qgcPal: QGCPalette { colorGroupEnabled: enabled }
property var _activeVehicle: multiVehicleManager.activeVehicle property var _activeVehicle: multiVehicleManager.activeVehicle
...@@ -70,6 +82,8 @@ Item { ...@@ -70,6 +82,8 @@ Item {
property bool _showMap: getBool(QGroundControl.flightMapSettings.loadMapSetting(flightMap.mapName, _showMapBackgroundKey, "1")) property bool _showMap: getBool(QGroundControl.flightMapSettings.loadMapSetting(flightMap.mapName, _showMapBackgroundKey, "1"))
FlightDisplayViewController { id: _controller; }
ExclusiveGroup { ExclusiveGroup {
id: _dropButtonsExclusiveGroup id: _dropButtonsExclusiveGroup
} }
...@@ -86,7 +100,7 @@ Item { ...@@ -86,7 +100,7 @@ Item {
} }
function _setShowMap(showMap) { function _setShowMap(showMap) {
_showMap = flightDisplay.hasVideo ? showMap : true _showMap = _controller.hasVideo ? showMap : true
QGroundControl.flightMapSettings.saveMapSetting(flightMap.mapName, _showMapBackgroundKey, setBool(_showMap)) QGroundControl.flightMapSettings.saveMapSetting(flightMap.mapName, _showMapBackgroundKey, setBool(_showMap))
} }
...@@ -118,6 +132,7 @@ Item { ...@@ -118,6 +132,7 @@ Item {
label: "H" label: "H"
coordinate: (_activeVehicle && _activeVehicle.homePositionAvailable) ? _activeVehicle.homePosition : QtPositioning.coordinate(0, 0) coordinate: (_activeVehicle && _activeVehicle.homePositionAvailable) ? _activeVehicle.homePosition : QtPositioning.coordinate(0, 0)
visible: _activeVehicle ? _activeVehicle.homePositionAvailable : false visible: _activeVehicle ? _activeVehicle.homePositionAvailable : false
z: flightMap.zOrderMapItems
} }
// Add trajectory points to the map // Add trajectory points to the map
...@@ -128,6 +143,8 @@ Item { ...@@ -128,6 +143,8 @@ Item {
MapPolyline { MapPolyline {
line.width: 3 line.width: 3
line.color: "orange" line.color: "orange"
z: flightMap.zOrderMapItems - 1
path: [ path: [
{ latitude: object.coordinate1.latitude, longitude: object.coordinate1.longitude }, { latitude: object.coordinate1.latitude, longitude: object.coordinate1.longitude },
...@@ -145,6 +162,7 @@ Item { ...@@ -145,6 +162,7 @@ Item {
vehicle: object vehicle: object
coordinate: object.coordinate coordinate: object.coordinate
isSatellite: flightMap.isSatelliteMap isSatellite: flightMap.isSatelliteMap
z: flightMap.zOrderMapItems
} }
} }
...@@ -157,6 +175,7 @@ Item { ...@@ -157,6 +175,7 @@ Item {
label: object.sequenceNumber label: object.sequenceNumber
isCurrentItem: object.isCurrentItem isCurrentItem: object.isCurrentItem
coordinate: object.coordinate coordinate: object.coordinate
z: flightMap.zOrderMapItems
} }
} }
...@@ -175,17 +194,20 @@ Item { ...@@ -175,17 +194,20 @@ Item {
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
visible: object.satelliteLock < 2 visible: object.satelliteLock < 2
text: "No GPS Lock for Vehicle #" + object.id text: "No GPS Lock for Vehicle #" + object.id
z: flightMap.zOrderMapItems - 2
} }
} }
} }
QGCCompassWidget { QGCCompassWidget {
anchors.margins: ScreenTools.defaultFontPixelHeight anchors.leftMargin: ScreenTools.defaultFontPixelHeight
anchors.topMargin: topMargin
anchors.left: parent.left anchors.left: parent.left
anchors.top: parent.top anchors.top: parent.top
size: ScreenTools.defaultFontPixelSize * (13.3) size: ScreenTools.defaultFontPixelSize * (13.3)
heading: _heading heading: _heading
active: multiVehicleManager.activeVehicleAvailable active: multiVehicleManager.activeVehicleAvailable
z: flightMap.zOrderWidgets
} }
QGCAttitudeWidget { QGCAttitudeWidget {
...@@ -196,6 +218,7 @@ Item { ...@@ -196,6 +218,7 @@ Item {
rollAngle: _roll rollAngle: _roll
pitchAngle: _pitch pitchAngle: _pitch
active: multiVehicleManager.activeVehicleAvailable active: multiVehicleManager.activeVehicleAvailable
z: flightMap.zOrderWidgets
} }
DropButton { DropButton {
...@@ -207,6 +230,7 @@ Item { ...@@ -207,6 +230,7 @@ Item {
buttonImage: "/qmlimages/MapCenter.svg" buttonImage: "/qmlimages/MapCenter.svg"
viewportMargins: ScreenTools.defaultFontPixelWidth / 2 viewportMargins: ScreenTools.defaultFontPixelWidth / 2
exclusiveGroup: _dropButtonsExclusiveGroup exclusiveGroup: _dropButtonsExclusiveGroup
z: flightMap.zOrderWidgets
dropDownComponent: Component { dropDownComponent: Component {
Row { Row {
...@@ -243,13 +267,15 @@ Item { ...@@ -243,13 +267,15 @@ Item {
DropButton { DropButton {
id: mapTypeButton id: mapTypeButton
anchors.margins: ScreenTools.defaultFontPixelHeight anchors.topMargin: topMargin
anchors.rightMargin: ScreenTools.defaultFontPixelHeight
anchors.top: parent.top anchors.top: parent.top
anchors.right: parent.right anchors.right: parent.right
dropDirection: dropDown dropDirection: dropDown
buttonImage: "/qmlimages/MapType.svg" buttonImage: "/qmlimages/MapType.svg"
viewportMargins: ScreenTools.defaultFontPixelWidth / 2 viewportMargins: ScreenTools.defaultFontPixelWidth / 2
exclusiveGroup: _dropButtonsExclusiveGroup exclusiveGroup: _dropButtonsExclusiveGroup
z: flightMap.zOrderWidgets
dropDownComponent: Component { dropDownComponent: Component {
Row { Row {
...@@ -277,8 +303,8 @@ Item { ...@@ -277,8 +303,8 @@ Item {
QGCVideoBackground { QGCVideoBackground {
anchors.fill: parent anchors.fill: parent
display: videoDisplay display: _controller.videoSurface
receiver: videoReceiver receiver: _controller.videoReceiver
visible: !_showMap visible: !_showMap
QGCCompassHUD { QGCCompassHUD {
...@@ -289,7 +315,7 @@ Item { ...@@ -289,7 +315,7 @@ Item {
height: ScreenTools.defaultFontPixelSize * (10) height: ScreenTools.defaultFontPixelSize * (10)
heading: _heading heading: _heading
active: multiVehicleManager.activeVehicleAvailable active: multiVehicleManager.activeVehicleAvailable
z: 70 z: flightMap.zOrderWidgets
} }
QGCAttitudeHUD { QGCAttitudeHUD {
...@@ -299,6 +325,7 @@ Item { ...@@ -299,6 +325,7 @@ Item {
width: ScreenTools.defaultFontPixelSize * (30) width: ScreenTools.defaultFontPixelSize * (30)
height: ScreenTools.defaultFontPixelSize * (30) height: ScreenTools.defaultFontPixelSize * (30)
active: multiVehicleManager.activeVehicleAvailable active: multiVehicleManager.activeVehicleAvailable
z: flightMap.zOrderWidgets
} }
} }
...@@ -307,7 +334,8 @@ Item { ...@@ -307,7 +334,8 @@ Item {
height: parent.height * 0.65 > ScreenTools.defaultFontPixelSize * (23.4) ? ScreenTools.defaultFontPixelSize * (23.4) : parent.height * 0.65 height: parent.height * 0.65 > ScreenTools.defaultFontPixelSize * (23.4) ? ScreenTools.defaultFontPixelSize * (23.4) : parent.height * 0.65
width: ScreenTools.defaultFontPixelSize * (5) width: ScreenTools.defaultFontPixelSize * (5)
altitude: _altitudeWGS84 altitude: _altitudeWGS84
z: 30 z: flightMap.zOrderWidgets
visible: !hideWidgets
} }
QGCSpeedWidget { QGCSpeedWidget {
...@@ -315,7 +343,8 @@ Item { ...@@ -315,7 +343,8 @@ Item {
width: ScreenTools.defaultFontPixelSize * (5) width: ScreenTools.defaultFontPixelSize * (5)
height: parent.height * 0.65 > ScreenTools.defaultFontPixelSize * (23.4) ? ScreenTools.defaultFontPixelSize * (23.4) : parent.height * 0.65 height: parent.height * 0.65 > ScreenTools.defaultFontPixelSize * (23.4) ? ScreenTools.defaultFontPixelSize * (23.4) : parent.height * 0.65
speed: _groundSpeed speed: _groundSpeed
z: 40 z: flightMap.zOrderWidgets
visible: !hideWidgets
} }
QGCCurrentSpeed { QGCCurrentSpeed {
...@@ -324,7 +353,8 @@ Item { ...@@ -324,7 +353,8 @@ Item {
airspeed: _airSpeed airspeed: _airSpeed
groundspeed: _groundSpeed groundspeed: _groundSpeed
active: multiVehicleManager.activeVehicleAvailable active: multiVehicleManager.activeVehicleAvailable
z: 50 z: flightMap.zOrderWidgets
visible: !hideWidgets
} }
QGCCurrentAltitude { QGCCurrentAltitude {
...@@ -333,7 +363,8 @@ Item { ...@@ -333,7 +363,8 @@ Item {
altitude: _altitudeWGS84 altitude: _altitudeWGS84
vertZ: _climbRate vertZ: _climbRate
active: multiVehicleManager.activeVehicleAvailable active: multiVehicleManager.activeVehicleAvailable
z: 60 z: flightMap.zOrderWidgets
visible: !hideWidgets
} }
// Mission item list // Mission item list
...@@ -348,6 +379,8 @@ Item { ...@@ -348,6 +379,8 @@ Item {
opacity: 0.75 opacity: 0.75
orientation: ListView.Horizontal orientation: ListView.Horizontal
model: multiVehicleManager.activeVehicle ? multiVehicleManager.activeVehicle.missionItems : 0 model: multiVehicleManager.activeVehicle ? multiVehicleManager.activeVehicle.missionItems : 0
z: flightMap.zOrderWidgets
visible: !hideWidgets
property real _maxItemHeight: 0 property real _maxItemHeight: 0
...@@ -363,9 +396,11 @@ Item { ...@@ -363,9 +396,11 @@ Item {
id: optionsButton id: optionsButton
x: flightMap.mapWidgets.x x: flightMap.mapWidgets.x
y: flightMap.mapWidgets.y - height - (ScreenTools.defaultFontPixelHeight / 2) y: flightMap.mapWidgets.y - height - (ScreenTools.defaultFontPixelHeight / 2)
z: flightMap.zOrderWidgets
width: flightMap.mapWidgets.width width: flightMap.mapWidgets.width
text: "Options" text: "Options"
menu: optionsMenu menu: optionsMenu
visible: _controller.hasVideo && !hideWidgets
ExclusiveGroup { ExclusiveGroup {
id: backgroundTypeGroup id: backgroundTypeGroup
...@@ -380,7 +415,6 @@ Item { ...@@ -380,7 +415,6 @@ Item {
checkable: true checkable: true
checked: _showMap checked: _showMap
text: "Show map as background" text: "Show map as background"
visible: flightDisplay.hasVideo
onTriggered: _setShowMap(true) onTriggered: _setShowMap(true)
} }
...@@ -391,14 +425,9 @@ Item { ...@@ -391,14 +425,9 @@ Item {
checkable: true checkable: true
checked: !_showMap checked: !_showMap
text: "Show video as background" text: "Show video as background"
visible: flightDisplay.hasVideo
onTriggered: _setShowMap(false) onTriggered: _setShowMap(false)
} }
MenuSeparator {
visible: flightDisplay.hasVideo && _showMap
}
} }
} }
} }
...@@ -26,30 +26,15 @@ This file is part of the QGROUNDCONTROL project ...@@ -26,30 +26,15 @@ This file is part of the QGROUNDCONTROL project
#include <QSettings> #include <QSettings>
#include <VideoItem.h> #include <VideoItem.h>
#include <VideoSurface.h>
#include "VideoReceiver.h"
#include "ScreenToolsController.h" #include "ScreenToolsController.h"
#include "FlightDisplayView.h" #include "FlightDisplayViewController.h"
const char* kMainFlightDisplayViewGroup = "FlightDisplayView"; const char* kMainFlightDisplayViewControllerGroup = "FlightDisplayViewController";
FlightDisplayView::FlightDisplayView(QWidget *parent) FlightDisplayViewController::FlightDisplayViewController(QObject *parent)
: QGCQmlWidgetHolder(QString(), NULL, parent) : QObject(parent)
{ {
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
setObjectName("FlightDisplayView");
// Get rid of layout default margins
QLayout* pl = layout();
if(pl) {
pl->setContentsMargins(0,0,0,0);
}
#ifndef __android__
setMinimumWidth( 31 * ScreenToolsController::defaultFontPixelSize_s());
setMinimumHeight(33 * ScreenToolsController::defaultFontPixelSize_s());
#endif
setContextPropertyObject("flightDisplay", this);
/* /*
* This is the receiving end of an UDP RTP stream. The sender can be setup with this command: * This is the receiving end of an UDP RTP stream. The sender can be setup with this command:
* *
...@@ -75,19 +60,15 @@ FlightDisplayView::FlightDisplayView(QWidget *parent) ...@@ -75,19 +60,15 @@ FlightDisplayView::FlightDisplayView(QWidget *parent)
* Do not change anything else unless you know what you are doing. Any other change will require a matching change on the receiving end. * Do not change anything else unless you know what you are doing. Any other change will require a matching change on the receiving end.
* *
*/ */
VideoSurface* pSurface = new VideoSurface; _videoSurface = new VideoSurface;
setContextPropertyObject("videoDisplay", pSurface); _videoReceiver = new VideoReceiver(this);
VideoReceiver* pReceiver = new VideoReceiver(this); _videoReceiver->setUri(QLatin1Literal("udp://0.0.0.0:5000"));
pReceiver->setUri(QLatin1Literal("udp://0.0.0.0:5000"));
#if defined(QGC_GST_STREAMING) #if defined(QGC_GST_STREAMING)
pReceiver->setVideoSink(pSurface->videoSink()); _videoReceiver->setVideoSink(_videoSurface->videoSink());
#endif #endif
setContextPropertyObject("videoReceiver", pReceiver);
setSource(QUrl::fromUserInput("qrc:/qml/FlightDisplayView.qml"));
setVisible(true);
} }
FlightDisplayView::~FlightDisplayView() FlightDisplayViewController::~FlightDisplayViewController()
{ {
} }
...@@ -21,32 +21,36 @@ This file is part of the QGROUNDCONTROL project ...@@ -21,32 +21,36 @@ This file is part of the QGROUNDCONTROL project
======================================================================*/ ======================================================================*/
#ifndef FlightDisplayView_H #ifndef FlightDisplayViewController_H
#define FlightDisplayView_H #define FlightDisplayViewController_H
#include "QGCQmlWidgetHolder.h" #include <QObject>
class FlightDisplayView : public QGCQmlWidgetHolder #include "VideoSurface.h"
#include "VideoReceiver.h"
class FlightDisplayViewController : public QObject
{ {
Q_OBJECT Q_OBJECT
public:
FlightDisplayView(QWidget* parent = NULL);
~FlightDisplayView();
/// @brief Invokes the Flight Display Options menu public:
void showOptionsMenu() { emit showOptionsMenuChanged(); } FlightDisplayViewController(QObject* parent = NULL);
~FlightDisplayViewController();
Q_PROPERTY(bool hasVideo READ hasVideo CONSTANT) Q_PROPERTY(bool hasVideo READ hasVideo CONSTANT)
Q_PROPERTY(VideoSurface* videoSurface MEMBER _videoSurface CONSTANT);
Q_PROPERTY(VideoReceiver* videoReceiver MEMBER _videoReceiver CONSTANT);
#if defined(QGC_GST_STREAMING) #if defined(QGC_GST_STREAMING)
bool hasVideo () { return true; } bool hasVideo () { return true; }
#else #else
bool hasVideo () { return false; } bool hasVideo () { return false; }
#endif #endif
signals: private:
void showOptionsMenuChanged (); VideoSurface* _videoSurface;
VideoReceiver* _videoReceiver;
}; };
#endif #endif
...@@ -55,6 +55,10 @@ Map { ...@@ -55,6 +55,10 @@ Map {
property real lon: (longitude >= -180 && longitude <= 180) ? longitude : 0 property real lon: (longitude >= -180 && longitude <= 180) ? longitude : 0
property real lat: (latitude >= -90 && latitude <= 90) ? latitude : 0 property real lat: (latitude >= -90 && latitude <= 90) ? latitude : 0
readonly property real zOrderTopMost: 1000 ///< z order for top most items, toolbar, main window sub view
readonly property real zOrderWidgets: 100 ///< z order value to widgets, for example: zoom controls, hud widgetss
readonly property real zOrderMapItems: 50 ///< z order value for map items, for example: mission item indicators
zoomLevel: 18 zoomLevel: 18
center: QtPositioning.coordinate(lat, lon) center: QtPositioning.coordinate(lat, lon)
gesture.flickDeceleration: 3000 gesture.flickDeceleration: 3000
...@@ -115,6 +119,7 @@ Map { ...@@ -115,6 +119,7 @@ Map {
QGCButton { QGCButton {
width: parent._buttonWidth width: parent._buttonWidth
z: zOrderWidgets
//iconSource: "/qmlimages/ZoomPlus.svg" //iconSource: "/qmlimages/ZoomPlus.svg"
text: "+" text: "+"
...@@ -131,6 +136,7 @@ Map { ...@@ -131,6 +136,7 @@ Map {
QGCButton { QGCButton {
width: parent._buttonWidth width: parent._buttonWidth
z: zOrderWidgets
//iconSource: "/qmlimages/ZoomMinus.svg" //iconSource: "/qmlimages/ZoomMinus.svg"
text: "-" text: "-"
......
...@@ -33,28 +33,34 @@ import QGroundControl.ScreenTools 1.0 ...@@ -33,28 +33,34 @@ import QGroundControl.ScreenTools 1.0
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
import QGroundControl.Mavlink 1.0 import QGroundControl.Mavlink 1.0
import QGroundControl.Controllers 1.0
/// Mission Editor /// Mission Editor
QGCView { QGCView {
viewPanel: panel viewPanel: panel
// zOrder comes from the Loader in MainWindow.qml
z: zOrder
readonly property int _decimalPlaces: 7 readonly property int _decimalPlaces: 7
readonly property real _horizontalMargin: ScreenTools.defaultFontPixelWidth / 2 readonly property real _horizontalMargin: ScreenTools.defaultFontPixelWidth / 2
readonly property real _verticalMargin: ScreenTools.defaultFontPixelHeight / 2 readonly property real _verticalMargin: ScreenTools.defaultFontPixelHeight / 2
readonly property var _activeVehicle: multiVehicleManager.activeVehicle readonly property var _activeVehicle: multiVehicleManager.activeVehicle
readonly property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 16 readonly property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 16
property var _missionItems: controller.missionItems property var _missionItems: _controller.missionItems
property var _homePositionManager: QGroundControl.homePositionManager property var _homePositionManager: QGroundControl.homePositionManager
property string _homePositionName: _homePositionManager.homePositions.get(0).name property string _homePositionName: _homePositionManager.homePositions.get(0).name
property var offlineHomePosition: _homePositionManager.homePositions.get(0).coordinate property var offlineHomePosition: _homePositionManager.homePositions.get(0).coordinate
property var liveHomePosition: controller.liveHomePosition property var liveHomePosition: _controller.liveHomePosition
property var liveHomePositionAvailable: controller.liveHomePositionAvailable property var liveHomePositionAvailable: _controller.liveHomePositionAvailable
property var homePosition: offlineHomePosition // live or offline depending on state property var homePosition: offlineHomePosition // live or offline depending on state
MissionEditorController { id: _controller }
QGCPalette { id: _qgcPal; colorGroupEnabled: enabled } QGCPalette { id: _qgcPal; colorGroupEnabled: enabled }
ExclusiveGroup { ExclusiveGroup {
...@@ -86,7 +92,7 @@ QGCView { ...@@ -86,7 +92,7 @@ QGCView {
onLiveHomePositionChanged: updateHomePosition() onLiveHomePositionChanged: updateHomePosition()
Connections { Connections {
target: controller target: _controller
// When the mission items change _missionsItems[0] changes as well so we need to reset it to home // When the mission items change _missionsItems[0] changes as well so we need to reset it to home
onMissionItemsChanged: updateHomePosition onMissionItemsChanged: updateHomePosition
...@@ -123,7 +129,7 @@ QGCView { ...@@ -123,7 +129,7 @@ QGCView {
if (homePositionManagerButton.checked) { if (homePositionManagerButton.checked) {
offlineHomePosition = coordinate offlineHomePosition = coordinate
} else if (addMissionItemsButton.checked) { } else if (addMissionItemsButton.checked) {
var index = controller.addMissionItem(coordinate) var index = _controller.addMissionItem(coordinate)
setCurrentItem(index) setCurrentItem(index)
} }
} }
...@@ -138,7 +144,7 @@ QGCView { ...@@ -138,7 +144,7 @@ QGCView {
border.color: "white" border.color: "white"
color: "black" color: "black"
opacity: 0.75 opacity: 0.75
visible: controller.missionItems.dirty visible: _controller.missionItems.dirty
QGCLabel { QGCLabel {
id: syncNeededText id: syncNeededText
...@@ -154,26 +160,29 @@ QGCView { ...@@ -154,26 +160,29 @@ QGCView {
} }
} }
Row {
spacing: ScreenTools.defaultFontPixelWidth
anchors.top: parent.top
anchors.right: parent.right
anchors.margins: ScreenTools.defaultFontPixelWidth
RoundButton { RoundButton {
id: addMissionItemsButton id: addMissionItemsButton
anchors.rightMargin: ScreenTools.defaultFontPixelWidth
anchors.right: homePositionManagerButton.left
anchors.top: helpButton.top
buttonImage: "/qmlimages/MapAddMission.svg" buttonImage: "/qmlimages/MapAddMission.svg"
exclusiveGroup: _dropButtonsExclusiveGroup exclusiveGroup: _dropButtonsExclusiveGroup
} }
RoundButton { RoundButton {
id: homePositionManagerButton id: homePositionManagerButton
anchors.rightMargin: ScreenTools.defaultFontPixelWidth
anchors.right: centerMapButton.left
anchors.top: helpButton.top
buttonImage: "/qmlimages/MapHome.svg" buttonImage: "/qmlimages/MapHome.svg"
exclusiveGroup: _dropButtonsExclusiveGroup exclusiveGroup: _dropButtonsExclusiveGroup
} }
DropButton { DropButton {
id: centerMapButton id: centerMapButton
anchors.rightMargin: ScreenTools.defaultFontPixelWidth
anchors.right: syncButton.left
anchors.top: helpButton.top
dropDirection: dropDown dropDirection: dropDown
buttonImage: "/qmlimages/MapCenter.svg" buttonImage: "/qmlimages/MapCenter.svg"
viewportMargins: ScreenTools.defaultFontPixelWidth / 2 viewportMargins: ScreenTools.defaultFontPixelWidth / 2
...@@ -246,6 +255,9 @@ QGCView { ...@@ -246,6 +255,9 @@ QGCView {
DropButton { DropButton {
id: syncButton id: syncButton
anchors.rightMargin: ScreenTools.defaultFontPixelWidth
anchors.right: mapTypeButton.left
anchors.top: helpButton.top
dropDirection: dropDown dropDirection: dropDown
buttonImage: "/qmlimages/MapSync.svg" buttonImage: "/qmlimages/MapSync.svg"
viewportMargins: ScreenTools.defaultFontPixelWidth / 2 viewportMargins: ScreenTools.defaultFontPixelWidth / 2
...@@ -261,7 +273,7 @@ QGCView { ...@@ -261,7 +273,7 @@ QGCView {
onClicked: { onClicked: {
syncButton.hideDropDown() syncButton.hideDropDown()
controller.getMissionItems() _controller.getMissionItems()
} }
} }
...@@ -271,7 +283,7 @@ QGCView { ...@@ -271,7 +283,7 @@ QGCView {
onClicked: { onClicked: {
syncButton.hideDropDown() syncButton.hideDropDown()
controller.setMissionItems() _controller.setMissionItems()
} }
} }
...@@ -280,7 +292,7 @@ QGCView { ...@@ -280,7 +292,7 @@ QGCView {
onClicked: { onClicked: {
syncButton.hideDropDown() syncButton.hideDropDown()
controller.loadMissionFromFile() _controller.loadMissionFromFile()
} }
} }
...@@ -289,7 +301,7 @@ QGCView { ...@@ -289,7 +301,7 @@ QGCView {
onClicked: { onClicked: {
syncButton.hideDropDown() syncButton.hideDropDown()
controller.saveMissionToFile() _controller.saveMissionToFile()
} }
} }
} }
...@@ -298,6 +310,9 @@ QGCView { ...@@ -298,6 +310,9 @@ QGCView {
DropButton { DropButton {
id: mapTypeButton id: mapTypeButton
anchors.rightMargin: ScreenTools.defaultFontPixelWidth
anchors.right: helpButton.left
anchors.top: helpButton.top
dropDirection: dropDown dropDirection: dropDown
buttonImage: "/qmlimages/MapType.svg" buttonImage: "/qmlimages/MapType.svg"
viewportMargins: ScreenTools.defaultFontPixelWidth / 2 viewportMargins: ScreenTools.defaultFontPixelWidth / 2
...@@ -329,15 +344,16 @@ QGCView { ...@@ -329,15 +344,16 @@ QGCView {
RoundButton { RoundButton {
id: helpButton id: helpButton
anchors.margins: ScreenTools.defaultFontPixelWidth
anchors.right: parent.right
anchors.top: parent.top
buttonImage: "/qmlimages/Help.svg" buttonImage: "/qmlimages/Help.svg"
exclusiveGroup: _dropButtonsExclusiveGroup exclusiveGroup: _dropButtonsExclusiveGroup
} }
}
// Add the mission items to the map // Add the mission items to the map
MapItemView { MapItemView {
model: controller.missionItems model: _controller.missionItems
delegate: delegate:
MissionItemIndicator { MissionItemIndicator {
...@@ -379,7 +395,7 @@ QGCView { ...@@ -379,7 +395,7 @@ QGCView {
// Add lines between waypoints // Add lines between waypoints
MapItemView { MapItemView {
model: controller.waypointLines model: _controller.waypointLines
delegate: delegate:
MapPolyline { MapPolyline {
...@@ -432,7 +448,7 @@ QGCView { ...@@ -432,7 +448,7 @@ QGCView {
anchors.fill: parent anchors.fill: parent
spacing: _verticalMargin spacing: _verticalMargin
orientation: ListView.Vertical orientation: ListView.Vertical
model: controller.canEdit ? controller.missionItems : 0 model: _controller.canEdit ? _controller.missionItems : 0
property real _maxItemHeight: 0 property real _maxItemHeight: 0
...@@ -446,7 +462,7 @@ QGCView { ...@@ -446,7 +462,7 @@ QGCView {
onRemove: { onRemove: {
var newCurrentItem = object.sequenceNumber - 1 var newCurrentItem = object.sequenceNumber - 1
controller.removeMissionItem(object.sequenceNumber) _controller.removeMissionItem(object.sequenceNumber)
if (_missionItems.count > 1) { if (_missionItems.count > 1) {
newCurrentItem = Math.min(_missionItems.count - 1, newCurrentItem) newCurrentItem = Math.min(_missionItems.count - 1, newCurrentItem)
setCurrentItem(newCurrentItem) setCurrentItem(newCurrentItem)
...@@ -457,7 +473,7 @@ QGCView { ...@@ -457,7 +473,7 @@ QGCView {
QGCLabel { QGCLabel {
anchors.fill: parent anchors.fill: parent
visible: !controller.canEdit visible: !_controller.canEdit
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
text: "The set of mission items you have loaded cannot be edited by QGroundControl. " + text: "The set of mission items you have loaded cannot be edited by QGroundControl. " +
"You will only be able to save these to a file, or send them to a vehicle." "You will only be able to save these to a file, or send them to a vehicle."
......
...@@ -21,20 +21,21 @@ This file is part of the QGROUNDCONTROL project ...@@ -21,20 +21,21 @@ This file is part of the QGROUNDCONTROL project
======================================================================*/ ======================================================================*/
#ifndef MissionEditor_H #ifndef MissionEditorController_H
#define MissionEditor_H #define MissionEditorController_H
#include <QObject>
#include "QGCQmlWidgetHolder.h"
#include "QmlObjectListModel.h" #include "QmlObjectListModel.h"
#include "Vehicle.h" #include "Vehicle.h"
class MissionEditor : public QGCQmlWidgetHolder class MissionEditorController : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
MissionEditor(QWidget* parent = NULL); MissionEditorController(QWidget* parent = NULL);
~MissionEditor(); ~MissionEditorController();
Q_PROPERTY(QmlObjectListModel* missionItems READ missionItems NOTIFY missionItemsChanged) Q_PROPERTY(QmlObjectListModel* missionItems READ missionItems NOTIFY missionItemsChanged)
Q_PROPERTY(QmlObjectListModel* waypointLines READ waypointLines NOTIFY waypointLinesChanged) Q_PROPERTY(QmlObjectListModel* waypointLines READ waypointLines NOTIFY waypointLinesChanged)
......
...@@ -85,6 +85,11 @@ ...@@ -85,6 +85,11 @@
#include "FlightMapSettings.h" #include "FlightMapSettings.h"
#include "QGCQGeoCoordinate.h" #include "QGCQGeoCoordinate.h"
#include "CoordinateVector.h" #include "CoordinateVector.h"
#include "MainToolBarController.h"
#include "MissionEditorController.h"
#include "FlightDisplayViewController.h"
#include "VideoSurface.h"
#include "VideoReceiver.h"
#ifndef __ios__ #ifndef __ios__
#include "SerialLink.h" #include "SerialLink.h"
...@@ -333,6 +338,8 @@ void QGCApplication::_initCommon(void) ...@@ -333,6 +338,8 @@ void QGCApplication::_initCommon(void)
qmlRegisterUncreatableType<QmlObjectListModel> ("QGroundControl", 1, 0, "QmlObjectListModel", "Reference only"); qmlRegisterUncreatableType<QmlObjectListModel> ("QGroundControl", 1, 0, "QmlObjectListModel", "Reference only");
qmlRegisterUncreatableType<QGCQGeoCoordinate> ("QGroundControl", 1, 0, "QGCQGeoCoordinate", "Reference only"); qmlRegisterUncreatableType<QGCQGeoCoordinate> ("QGroundControl", 1, 0, "QGCQGeoCoordinate", "Reference only");
qmlRegisterUncreatableType<CoordinateVector> ("QGroundControl", 1, 0, "CoordinateVector", "Reference only"); qmlRegisterUncreatableType<CoordinateVector> ("QGroundControl", 1, 0, "CoordinateVector", "Reference only");
qmlRegisterUncreatableType<VideoSurface> ("QGroundControl", 1, 0, "VideoSurface", "Reference only");
qmlRegisterUncreatableType<VideoReceiver> ("QGroundControl", 1, 0, "VideoReceiver", "Reference only");
qmlRegisterType<ParameterEditorController> ("QGroundControl.Controllers", 1, 0, "ParameterEditorController"); qmlRegisterType<ParameterEditorController> ("QGroundControl.Controllers", 1, 0, "ParameterEditorController");
qmlRegisterType<FlightModesComponentController> ("QGroundControl.Controllers", 1, 0, "FlightModesComponentController"); qmlRegisterType<FlightModesComponentController> ("QGroundControl.Controllers", 1, 0, "FlightModesComponentController");
...@@ -341,6 +348,9 @@ void QGCApplication::_initCommon(void) ...@@ -341,6 +348,9 @@ void QGCApplication::_initCommon(void)
qmlRegisterType<PowerComponentController> ("QGroundControl.Controllers", 1, 0, "PowerComponentController"); qmlRegisterType<PowerComponentController> ("QGroundControl.Controllers", 1, 0, "PowerComponentController");
qmlRegisterType<RadioComponentController> ("QGroundControl.Controllers", 1, 0, "RadioComponentController"); qmlRegisterType<RadioComponentController> ("QGroundControl.Controllers", 1, 0, "RadioComponentController");
qmlRegisterType<ScreenToolsController> ("QGroundControl.Controllers", 1, 0, "ScreenToolsController"); qmlRegisterType<ScreenToolsController> ("QGroundControl.Controllers", 1, 0, "ScreenToolsController");
qmlRegisterType<MainToolBarController> ("QGroundControl.Controllers", 1, 0, "MainToolBarController");
qmlRegisterType<MissionEditorController> ("QGroundControl.Controllers", 1, 0, "MissionEditorController");
qmlRegisterType<FlightDisplayViewController> ("QGroundControl.Controllers", 1, 0, "FlightDisplayViewController");
#ifndef __mobile__ #ifndef __mobile__
qmlRegisterType<ViewWidgetController> ("QGroundControl.Controllers", 1, 0, "ViewWidgetController"); qmlRegisterType<ViewWidgetController> ("QGroundControl.Controllers", 1, 0, "ViewWidgetController");
...@@ -636,8 +646,9 @@ void QGCApplication::_createSingletons(void) ...@@ -636,8 +646,9 @@ void QGCApplication::_createSingletons(void)
void QGCApplication::_destroySingletons(void) void QGCApplication::_destroySingletons(void)
{ {
if (MainWindow::instance()) { MainWindow* mainWindow = MainWindow::instance();
delete MainWindow::instance(); if (mainWindow) {
delete mainWindow;
} }
if (LinkManager::instance(true /* nullOk */)) { if (LinkManager::instance(true /* nullOk */)) {
...@@ -804,7 +815,7 @@ void QGCApplication::showToolBarMessage(const QString& message) ...@@ -804,7 +815,7 @@ void QGCApplication::showToolBarMessage(const QString& message)
{ {
MainWindow* mainWindow = MainWindow::instance(); MainWindow* mainWindow = MainWindow::instance();
if (mainWindow) { if (mainWindow) {
mainWindow->getMainToolBar()->showToolBarMessage(message); mainWindow->showToolbarMessage(message);
} else { } else {
QGCMessageBox::information("", message); QGCMessageBox::information("", message);
} }
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "QGCFileDialog.h" #include "QGCFileDialog.h"
#include "QGCApplication.h" #include "QGCApplication.h"
#include "MainWindow.h" #include "MainWindow.h"
#ifdef QT_DEBUG #ifdef QT_DEBUG
#ifndef __mobile__ #ifndef __mobile__
#include "UnitTest.h" #include "UnitTest.h"
......
...@@ -28,10 +28,12 @@ ...@@ -28,10 +28,12 @@
#include "MainWindow.h" #include "MainWindow.h"
#include "QGCApplication.h" #include "QGCApplication.h"
#ifdef QT_DEBUG #ifdef QT_DEBUG
#ifndef __mobile__ #ifndef __mobile__
#include "UnitTest.h" #include "UnitTest.h"
#endif #endif
#endif #endif
/// @file /// @file
......
...@@ -31,6 +31,8 @@ QGCQmlWidgetHolder::QGCQmlWidgetHolder(const QString& title, QAction* action, QW ...@@ -31,6 +31,8 @@ QGCQmlWidgetHolder::QGCQmlWidgetHolder(const QString& title, QAction* action, QW
{ {
_ui.setupUi(this); _ui.setupUi(this);
layout()->setContentsMargins(0,0,0,0);
if (action) { if (action) {
setWindowTitle(title); setWindowTitle(title);
} }
......
...@@ -34,3 +34,6 @@ MissionItemIndexLabel 1.0 MissionItemIndexLabel.qml ...@@ -34,3 +34,6 @@ MissionItemIndexLabel 1.0 MissionItemIndexLabel.qml
MissionItemSummary 1.0 MissionItemSummary.qml MissionItemSummary 1.0 MissionItemSummary.qml
MissionItemEditor 1.0 MissionItemEditor.qml MissionItemEditor 1.0 MissionItemEditor.qml
MainToolBar 1.0 MainToolBar.qml
FlightDisplayView 1.0 FlightDisplayView.qml
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2015 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/>.
======================================================================*/
/// @file
/// @author Don Gagne <don@thegagnes.com>
#include "SetupView.h"
#include "AutoPilotPluginManager.h"
#include "VehicleComponent.h"
#include "QGCQmlWidgetHolder.h"
#include "MainWindow.h"
#include "QGCMessageBox.h"
#ifndef __mobile__
#include "FirmwareUpgradeController.h"
#endif
#include "ParameterEditorController.h"
#include <QQmlError>
#include <QQmlContext>
#include <QDebug>
SetupView::SetupView(QWidget* parent) :
QGCQmlWidgetHolder(QString(), NULL, parent)
{
setSource(QUrl::fromUserInput("qrc:/qml/SetupView.qml"));
}
SetupView::~SetupView()
{
}
#ifdef UNITTEST_BUILD
void SetupView::showFirmware(void)
{
#ifndef __mobile__
QVariant returnedValue;
bool success = QMetaObject::invokeMethod(getRootObject(),
"showFirmwarePanel",
Q_RETURN_ARG(QVariant, returnedValue));
Q_ASSERT(success);
Q_UNUSED(success);
#endif
}
void SetupView::showParameters(void)
{
QVariant returnedValue;
bool success = QMetaObject::invokeMethod(getRootObject(),
"showParametersPanel",
Q_RETURN_ARG(QVariant, returnedValue));
Q_ASSERT(success);
Q_UNUSED(success);
}
void SetupView::showSummary(void)
{
QVariant returnedValue;
bool success = QMetaObject::invokeMethod(getRootObject(),
"showSummaryPanel",
Q_RETURN_ARG(QVariant, returnedValue));
Q_ASSERT(success);
Q_UNUSED(success);
}
void SetupView::showVehicleComponentSetup(VehicleComponent* vehicleComponent)
{
QVariant returnedValue;
bool success = QMetaObject::invokeMethod(getRootObject(),
"showVehicleComponentPanel",
Q_RETURN_ARG(QVariant, returnedValue),
Q_ARG(QVariant, QVariant::fromValue((VehicleComponent*)vehicleComponent)));
Q_ASSERT(success);
Q_UNUSED(success);
}
#endif
/*=====================================================================
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 SETUPVIEW_H
#define SETUPVIEW_H
#include "UASInterface.h"
#include "VehicleComponent.h"
#include "AutoPilotPlugin.h"
#include "QGCQmlWidgetHolder.h"
#include <QWidget>
/// @file
/// @brief This class is used to display the UI for the VehicleComponent objects.
/// @author Don Gagne <don@thegagnes.com>
class SetupView : public QGCQmlWidgetHolder
{
Q_OBJECT
public:
explicit SetupView(QWidget* parent = 0);
~SetupView();
#ifdef UNITTEST_BUILD
void showFirmware(void);
void showParameters(void);
void showSummary(void);
void showVehicleComponentSetup(VehicleComponent* vehicleComponent);
#endif
};
#endif
...@@ -37,6 +37,7 @@ import QGroundControl.MultiVehicleManager 1.0 ...@@ -37,6 +37,7 @@ import QGroundControl.MultiVehicleManager 1.0
Rectangle { Rectangle {
id: topLevel id: topLevel
color: palette.window color: palette.window
z: zOrder // zOrder comes from the Loader in MainWindow.qml
QGCPalette { id: palette; colorGroupEnabled: true } QGCPalette { id: palette; colorGroupEnabled: true }
......
...@@ -27,14 +27,12 @@ ...@@ -27,14 +27,12 @@
#include "SetupViewTest.h" #include "SetupViewTest.h"
#include "MockLink.h" #include "MockLink.h"
#include "QGCMessageBox.h" #include "QGCMessageBox.h"
#include "SetupView.h"
#include "MultiVehicleManager.h" #include "MultiVehicleManager.h"
UT_REGISTER_TEST(SetupViewTest) UT_REGISTER_TEST(SetupViewTest)
SetupViewTest::SetupViewTest(void) : SetupViewTest::SetupViewTest(void) :
_mainWindow(NULL), _mainWindow(NULL)
_mainToolBar(NULL)
{ {
} }
...@@ -45,9 +43,6 @@ void SetupViewTest::init(void) ...@@ -45,9 +43,6 @@ void SetupViewTest::init(void)
_mainWindow = MainWindow::_create(NULL); _mainWindow = MainWindow::_create(NULL);
Q_CHECK_PTR(_mainWindow); Q_CHECK_PTR(_mainWindow);
_mainToolBar = _mainWindow->getMainToolBar();
Q_ASSERT(_mainToolBar);
} }
void SetupViewTest::cleanup(void) void SetupViewTest::cleanup(void)
...@@ -78,33 +73,29 @@ void SetupViewTest::_clickThrough_test(void) ...@@ -78,33 +73,29 @@ void SetupViewTest::_clickThrough_test(void)
AutoPilotPlugin* autopilot = MultiVehicleManager::instance()->activeVehicle()->autopilotPlugin(); AutoPilotPlugin* autopilot = MultiVehicleManager::instance()->activeVehicle()->autopilotPlugin();
Q_ASSERT(autopilot); Q_ASSERT(autopilot);
// Switch to the Setup view
_mainToolBar->onSetupView();
QTest::qWait(1000);
MainWindow* mainWindow = MainWindow::instance(); MainWindow* mainWindow = MainWindow::instance();
Q_ASSERT(mainWindow); Q_ASSERT(mainWindow);
QWidget* setupViewWidget = mainWindow->getCurrentViewWidget();
Q_ASSERT(setupViewWidget); // Switch to the Setup view
SetupView* setupView = qobject_cast<SetupView*>(setupViewWidget); _mainWindow->showSetupView();
Q_ASSERT(setupView); QTest::qWait(1000);
// Click through fixed buttons // Click through fixed buttons
qDebug() << "Showing firmware"; qDebug() << "Showing firmware";
setupView->showFirmware(); _mainWindow->showSetupFirmware();
QTest::qWait(1000); QTest::qWait(1000);
qDebug() << "Showing parameters"; qDebug() << "Showing parameters";
setupView->showParameters(); _mainWindow->showSetupParameters();
QTest::qWait(1000); QTest::qWait(1000);
qDebug() << "Showing summary"; qDebug() << "Showing summary";
setupView->showSummary(); _mainWindow->showSetupSummary();
QTest::qWait(1000); QTest::qWait(1000);
const QVariantList& components = autopilot->vehicleComponents(); const QVariantList& components = autopilot->vehicleComponents();
foreach(QVariant varComponent, components) { foreach(QVariant varComponent, components) {
VehicleComponent* component = qobject_cast<VehicleComponent*>(qvariant_cast<QObject *>(varComponent)); VehicleComponent* component = qobject_cast<VehicleComponent*>(qvariant_cast<QObject *>(varComponent));
qDebug() << "Showing" << component->name(); qDebug() << "Showing" << component->name();
setupView->showVehicleComponentSetup(component); _mainWindow->showSetupVehicleComponent(component);
QTest::qWait(1000); QTest::qWait(1000);
} }
......
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include "UnitTest.h" #include "UnitTest.h"
#include "MainWindow.h" #include "MainWindow.h"
#include "MainToolBar.h"
/// Click through test for Setup View buttons /// Click through test for Setup View buttons
class SetupViewTest : public UnitTest class SetupViewTest : public UnitTest
...@@ -47,7 +46,6 @@ private slots: ...@@ -47,7 +46,6 @@ private slots:
private: private:
MainWindow* _mainWindow; MainWindow* _mainWindow;
MainToolBar* _mainToolBar;
}; };
#endif #endif
...@@ -67,6 +67,10 @@ union px4_custom_mode { ...@@ -67,6 +67,10 @@ union px4_custom_mode {
float data_float; float data_float;
}; };
float MockLink::_vehicleLatitude = 47.633033f;
float MockLink::_vehicleLongitude = -122.08794f;
float MockLink::_vehicleAltitude = 2.5f;
MockLink::MockLink(MockConfiguration* config) MockLink::MockLink(MockConfiguration* config)
: _missionItemHandler(this) : _missionItemHandler(this)
, _name("MockLink") , _name("MockLink")
...@@ -164,6 +168,7 @@ void MockLink::_run1HzTasks(void) ...@@ -164,6 +168,7 @@ void MockLink::_run1HzTasks(void)
void MockLink::_run10HzTasks(void) void MockLink::_run10HzTasks(void)
{ {
if (_mavlinkStarted && _connected) { if (_mavlinkStarted && _connected) {
_sendGpsRawInt();
} }
} }
...@@ -707,11 +712,31 @@ void MockLink::_sendHomePosition(void) ...@@ -707,11 +712,31 @@ void MockLink::_sendHomePosition(void)
mavlink_msg_home_position_pack(_vehicleSystemId, mavlink_msg_home_position_pack(_vehicleSystemId,
_vehicleComponentId, _vehicleComponentId,
&msg, &msg,
(int32_t)(47.633033f * 1E7), (int32_t)(_vehicleLatitude * 1E7),
(int32_t)(-122.08794f * 1E7), (int32_t)(_vehicleLongitude * 1E7),
(int32_t)(2.0f * 1000), (int32_t)(_vehicleAltitude * 1000),
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
&bogus[0], &bogus[0],
0.0f, 0.0f, 0.0f); 0.0f, 0.0f, 0.0f);
respondWithMavlinkMessage(msg); respondWithMavlinkMessage(msg);
} }
void MockLink::_sendGpsRawInt(void)
{
static uint64_t timeTick = 0;
mavlink_message_t msg;
mavlink_msg_gps_raw_int_pack(_vehicleSystemId,
_vehicleComponentId,
&msg,
timeTick++, // time since boot
3, // 3D fix
(int32_t)(_vehicleLatitude * 1E7),
(int32_t)(_vehicleLongitude * 1E7),
(int32_t)(_vehicleAltitude * 1000),
UINT16_MAX, UINT16_MAX, // HDOP/VDOP not known
UINT16_MAX, // velocity not known
UINT16_MAX, // course over ground not known
8); // satellite count
respondWithMavlinkMessage(msg);
}
...@@ -144,6 +144,7 @@ private: ...@@ -144,6 +144,7 @@ private:
float _floatUnionForParam(int componentId, const QString& paramName); float _floatUnionForParam(int componentId, const QString& paramName);
void _setParamFloatUnionIntoMap(int componentId, const QString& paramName, float paramFloat); void _setParamFloatUnionIntoMap(int componentId, const QString& paramName, float paramFloat);
void _sendHomePosition(void); void _sendHomePosition(void);
void _sendGpsRawInt(void);
MockLinkMissionItemHandler _missionItemHandler; MockLinkMissionItemHandler _missionItemHandler;
...@@ -167,6 +168,10 @@ private: ...@@ -167,6 +168,10 @@ private:
MAV_AUTOPILOT _autopilotType; MAV_AUTOPILOT _autopilotType;
MockLinkFileServer* _fileServer; MockLinkFileServer* _fileServer;
static float _vehicleLatitude;
static float _vehicleLongitude;
static float _vehicleAltitude;
}; };
#endif #endif
...@@ -34,8 +34,7 @@ ...@@ -34,8 +34,7 @@
UT_REGISTER_TEST(MainWindowTest) UT_REGISTER_TEST(MainWindowTest)
MainWindowTest::MainWindowTest(void) : MainWindowTest::MainWindowTest(void) :
_mainWindow(NULL), _mainWindow(NULL)
_mainToolBar(NULL)
{ {
} }
...@@ -46,14 +45,12 @@ void MainWindowTest::init(void) ...@@ -46,14 +45,12 @@ void MainWindowTest::init(void)
_mainWindow = MainWindow::_create(NULL); _mainWindow = MainWindow::_create(NULL);
Q_CHECK_PTR(_mainWindow); Q_CHECK_PTR(_mainWindow);
_mainToolBar = _mainWindow->getMainToolBar();
Q_ASSERT(_mainToolBar);
} }
void MainWindowTest::cleanup(void) void MainWindowTest::cleanup(void)
{ {
_mainWindow->close(); _mainWindow->close();
QTest::qWait(200);
delete _mainWindow; delete _mainWindow;
UnitTest::cleanup(); UnitTest::cleanup();
...@@ -78,11 +75,11 @@ void MainWindowTest::_connectWindowClose_test(MAV_AUTOPILOT autopilot) ...@@ -78,11 +75,11 @@ void MainWindowTest::_connectWindowClose_test(MAV_AUTOPILOT autopilot)
// Cycle through all the top level views // Cycle through all the top level views
_mainToolBar->onSetupView(); _mainWindow->showSetupView();
QTest::qWait(200); QTest::qWait(200);
_mainToolBar->onPlanView(); _mainWindow->showPlanView();
QTest::qWait(200); QTest::qWait(200);
_mainToolBar->onFlyView(); _mainWindow->showFlyView();
QTest::qWait(200); QTest::qWait(200);
// On MainWindow close we should get a message box telling the user to disconnect first. Cancel should do nothing. // On MainWindow close we should get a message box telling the user to disconnect first. Cancel should do nothing.
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include "UnitTest.h" #include "UnitTest.h"
#include "MainWindow.h" #include "MainWindow.h"
#include "MainToolBar.h"
class MainWindowTest : public UnitTest class MainWindowTest : public UnitTest
{ {
...@@ -51,7 +50,6 @@ private: ...@@ -51,7 +50,6 @@ private:
void _connectWindowClose_test(MAV_AUTOPILOT autopilot); void _connectWindowClose_test(MAV_AUTOPILOT autopilot);
MainWindow* _mainWindow; MainWindow* _mainWindow;
MainToolBar* _mainToolBar;
}; };
#endif #endif
This diff is collapsed.
...@@ -37,25 +37,24 @@ This file is part of the QGROUNDCONTROL project ...@@ -37,25 +37,24 @@ This file is part of the QGROUNDCONTROL project
#include <QSettings> #include <QSettings>
#include <QList> #include <QList>
#include "ui_MainWindow.h"
#include "LinkManager.h" #include "LinkManager.h"
#include "LinkInterface.h" #include "LinkInterface.h"
#include "UASInterface.h" #include "UASInterface.h"
#include "CameraView.h" #include "CameraView.h"
#include "MainToolBar.h"
#include "LogCompressor.h" #include "LogCompressor.h"
#include "FlightDisplayView.h"
#include "QGCMAVLinkInspector.h" #include "QGCMAVLinkInspector.h"
#include "QGCMAVLinkLogPlayer.h" #include "QGCMAVLinkLogPlayer.h"
#include "MAVLinkDecoder.h" #include "MAVLinkDecoder.h"
#include "Vehicle.h" #include "Vehicle.h"
#include "QGCDockWidget.h" #include "QGCDockWidget.h"
#include "QGCQmlWidgetHolder.h"
#include "ui_MainWindow.h"
#if (defined QGC_MOUSE_ENABLED_WIN) | (defined QGC_MOUSE_ENABLED_LINUX) #if (defined QGC_MOUSE_ENABLED_WIN) | (defined QGC_MOUSE_ENABLED_LINUX)
#include "Mouse6dofInput.h" #include "Mouse6dofInput.h"
#endif // QGC_MOUSE_ENABLED_WIN #endif // QGC_MOUSE_ENABLED_WIN
class QSplashScreen; class QSplashScreen;
class QGCStatusBar; class QGCStatusBar;
class Linecharts; class Linecharts;
...@@ -67,7 +66,6 @@ class QGCDataPlot2D; ...@@ -67,7 +66,6 @@ class QGCDataPlot2D;
**/ **/
class MainWindow : public QMainWindow class MainWindow : public QMainWindow
{ {
friend class MainToolBar;
Q_OBJECT Q_OBJECT
public: public:
...@@ -107,31 +105,12 @@ public: ...@@ -107,31 +105,12 @@ public:
/// @brief Restore (and connects) the last used connection (if any) /// @brief Restore (and connects) the last used connection (if any)
void restoreLastUsedConnection(); void restoreLastUsedConnection();
/// @brief Gets a pointer to the Main Tool Bar
MainToolBar* getMainToolBar(void) { return _mainToolBar; }
/// @brief Gets a pointer to the Main Flight Display
FlightDisplayView* getFlightDisplay() { return dynamic_cast<FlightDisplayView*>(_flightView.data()); }
QWidget* getCurrentViewWidget(void) { return _currentViewWidget; }
public slots: public slots:
/** @brief Show the application settings */ /** @brief Show the application settings */
void showSettings(); void showSettings();
void loadSetupView();
void loadFlightView();
void loadPlanView();
void manageLinks(); void manageLinks();
/** @brief Show the online help for users */
void showHelp();
/** @brief Show the authors / credits */
void showCredits();
/** @brief Show the project roadmap */
void showRoadMap();
/** @brief Automatically reconnect last link */ /** @brief Automatically reconnect last link */
void enableAutoReconnect(bool enabled); void enableAutoReconnect(bool enabled);
...@@ -143,8 +122,6 @@ public slots: ...@@ -143,8 +122,6 @@ public slots:
/** @brief Update the window name */ /** @brief Update the window name */
void configureWindowName(); void configureWindowName();
void commsWidgetDestroyed(QObject *obj);
protected slots: protected slots:
/** /**
* @brief Unchecks the normalActionItem. * @brief Unchecks the normalActionItem.
...@@ -164,6 +141,19 @@ protected slots: ...@@ -164,6 +141,19 @@ protected slots:
void showStatusBarCallback(bool checked); void showStatusBarCallback(bool checked);
signals: signals:
// Signals the Qml to show the specified view
void showFlyView(void);
void showPlanView(void);
void showSetupView(void);
void showToolbarMessage(const QString& message);
// These are used for unit testing
void showSetupFirmware(void);
void showSetupParameters(void);
void showSetupSummary(void);
void showSetupVehicleComponent(VehicleComponent* vehicleComponent);
void initStatusChanged(const QString& message, int alignment, const QColor &color); void initStatusChanged(const QString& message, int alignment, const QColor &color);
/** Emitted when any value changes from any source */ /** Emitted when any value changes from any source */
void valueChanged(const int uasId, const QString& name, const QString& unit, const QVariant& value, const quint64 msec); void valueChanged(const int uasId, const QString& name, const QString& unit, const QVariant& value, const quint64 msec);
...@@ -182,22 +172,6 @@ public: ...@@ -182,22 +172,6 @@ public:
} }
protected: protected:
typedef enum _VIEW_SECTIONS
{
VIEW_UNUSED5, // Unused (don't remove, or it will screw up saved settigns indices)
VIEW_UNUSED3, // Unused (don't remove, or it will screw up saved settigns indices)
VIEW_FLIGHT, // Flight/Fly/Operate view mode. Used for 1st-person observation of the vehicle.
VIEW_UNUSED4, // Unused (don't remove, or it will screw up saved settigns indices)
VIEW_SETUP, // Setup view. Used for initializing the system for operation.
VIEW_UNUSED1, // Unused (don't remove, or it will screw up saved settigns indices)
VIEW_UNUSED2, // Unused (don't remove, or it will screw up saved settigns indices)
VIEW_MISSIONEDITOR, // New mission editor
} VIEW_SECTIONS;
/** @brief Catch window resize events */
void resizeEvent(QResizeEvent * event);
void connectCommonActions(); void connectCommonActions();
void loadSettings(); void loadSettings();
...@@ -205,10 +179,6 @@ protected: ...@@ -205,10 +179,6 @@ protected:
QSettings settings; QSettings settings;
// Center widgets
QPointer<Linecharts> linechartWidget;
QPointer<MainToolBar> _mainToolBar;
QPointer<MAVLinkDecoder> mavlinkDecoder; QPointer<MAVLinkDecoder> mavlinkDecoder;
QGCMAVLinkLogPlayer* logPlayer; QGCMAVLinkLogPlayer* logPlayer;
...@@ -277,12 +247,6 @@ private: ...@@ -277,12 +247,6 @@ private:
QMap<QString, QAction*> _mapName2Action; QMap<QString, QAction*> _mapName2Action;
#endif #endif
void _buildPlanView(void);
void _buildFlightView(void);
void _buildSetupView(void);
void _buildTerminalView(void);
void _buildMissionEditorView(void);
void _storeCurrentViewState(void); void _storeCurrentViewState(void);
void _loadCurrentViewState(void); void _loadCurrentViewState(void);
...@@ -300,16 +264,12 @@ private: ...@@ -300,16 +264,12 @@ private:
bool _autoReconnect; bool _autoReconnect;
bool _lowPowerMode; ///< If enabled, QGC reduces the update rates of all widgets bool _lowPowerMode; ///< If enabled, QGC reduces the update rates of all widgets
bool _showStatusBar; bool _showStatusBar;
QActionGroup* _centerStackActionGroup;
QVBoxLayout* _centralLayout; QVBoxLayout* _centralLayout;
QList<QObject*> _commsWidgetList;
QWidget* _currentViewWidget; ///< Currently displayed view widget
QSplashScreen* _splashScreen; ///< Splash screen, NULL is splash screen not currently being shown QSplashScreen* _splashScreen; ///< Splash screen, NULL is splash screen not currently being shown
VIEW_SECTIONS _currentView; ///< Currently displayed view
Ui::MainWindow _ui; Ui::MainWindow _ui;
QString _screenFileName;
QString _getWindowStateKey(); QGCQmlWidgetHolder* _mainQmlWidgetHolder;
QString _getWindowGeometryKey(); QString _getWindowGeometryKey();
}; };
......
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009, 2015 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/>.
======================================================================*/
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtPositioning 5.2
import QGroundControl.Controls 1.0
import QGroundControl.FlightMap 1.0
import QGroundControl.ScreenTools 1.0
/// Qml for MainWindow
FlightDisplayView {
id: _root
// sets the top margin soo map widgets are not under toolbar
topMargin: toolbar.height + ScreenTools.defaultFontPixelWidth
readonly property string _planViewSource: "MissionEditor.qml"
readonly property string _setupViewSource: "SetupView.qml"
Connections {
target: controller
onShowFlyView: {
setupViewLoader.visible = false
planViewLoader.visible = false
_root.hideWidgets = false
}
onShowPlanView: {
if (planViewLoader.source != _planViewSource) {
planViewLoader.source = _planViewSource
}
setupViewLoader.visible = false
planViewLoader.visible = true
_root.hideWidgets = true
}
onShowSetupView: {
if (setupViewLoader.source != _setupViewSource) {
setupViewLoader.source = _setupViewSource
}
setupViewLoader.visible = true
planViewLoader.visible = false
_root.hideWidgets = true
}
onShowToolbarMessage: toolbar.showToolbarMessage(message)
// The following are use for unit testing only
onShowSetupFirmware: setupViewLoader.item.showFirmwarePanel()
onShowSetupParameters: setupViewLoader.item.showParametersPanel()
onShowSetupSummary: setupViewLoader.item.showSummaryPanel()
onShowSetupVehicleComponent: setupViewLoader.item.showVehicleComponentPanel(vechicleComponent)
}
MainToolBar {
id: toolbar
width: parent.width
z: _root.zOrderTopMost
}
Loader {
id: planViewLoader
anchors.left: parent.left
anchors.right: parent.right
anchors.top: toolbar.bottom
anchors.bottom: parent.bottom
visible: false
property real zOrder: _root.zOrderTopMost
}
Loader {
id: setupViewLoader
anchors.margins: ScreenTools.defaultFontPixelWidth
anchors.left: parent.left
anchors.right: parent.right
anchors.top: toolbar.bottom
anchors.bottom: parent.bottom
visible: false
property real zOrder: _root.zOrderTopMost
}
}
#include "QGCHilFlightGearConfiguration.h" #include "QGCHilFlightGearConfiguration.h"
#include "MainWindow.h" #include "MainWindow.h"
#include <QMenu>
// Various settings groups and keys // Various settings groups and keys
const char* QGCHilFlightGearConfiguration::_settingsGroup = "QGC_HILCONFIG_FLIGHTGEAR"; const char* QGCHilFlightGearConfiguration::_settingsGroup = "QGC_HILCONFIG_FLIGHTGEAR";
const char* QGCHilFlightGearConfiguration::_mavSettingsSubGroupFixedWing = "FIXED_WING"; const char* QGCHilFlightGearConfiguration::_mavSettingsSubGroupFixedWing = "FIXED_WING";
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
#include "QGCApplication.h" #include "QGCApplication.h"
#include "QGCFileDialog.h" #include "QGCFileDialog.h"
#include "QGCMessageBox.h" #include "QGCMessageBox.h"
#include "MainToolBar.h" #include "MainToolBarController.h"
#include "FlightMapSettings.h" #include "FlightMapSettings.h"
SettingsDialog::SettingsDialog(QWidget *parent, int showTab, Qt::WindowFlags flags) : SettingsDialog::SettingsDialog(QWidget *parent, int showTab, Qt::WindowFlags flags) :
...@@ -61,15 +61,6 @@ _ui(new Ui::SettingsDialog) ...@@ -61,15 +61,6 @@ _ui(new Ui::SettingsDialog)
this->window()->setWindowTitle(tr("QGroundControl Settings")); this->window()->setWindowTitle(tr("QGroundControl Settings"));
// Tool Bar Preferences
QSettings settings;
settings.beginGroup(TOOL_BAR_SETTINGS_GROUP);
_ui->showBattery->setChecked(settings.value( TOOL_BAR_SHOW_BATTERY, true).toBool());
_ui->showGPS->setChecked(settings.value( TOOL_BAR_SHOW_GPS, true).toBool());
_ui->showMav->setChecked(settings.value( TOOL_BAR_SHOW_MAV, true).toBool());
_ui->showMessages->setChecked(settings.value(TOOL_BAR_SHOW_MESSAGES, true).toBool());
_ui->showRSSI->setChecked(settings.value( TOOL_BAR_SHOW_RSSI, true).toBool());
settings.endGroup();
// Audio preferences // Audio preferences
_ui->audioMuteCheckBox->setChecked(GAudioOutput::instance()->isMuted()); _ui->audioMuteCheckBox->setChecked(GAudioOutput::instance()->isMuted());
connect(_ui->audioMuteCheckBox, SIGNAL(toggled(bool)), GAudioOutput::instance(), SLOT(mute(bool))); connect(_ui->audioMuteCheckBox, SIGNAL(toggled(bool)), GAudioOutput::instance(), SLOT(mute(bool)));
...@@ -181,31 +172,6 @@ void SettingsDialog::_selectSavedFilesDirectory(void) ...@@ -181,31 +172,6 @@ void SettingsDialog::_selectSavedFilesDirectory(void)
// * Parameters // * Parameters
} }
void SettingsDialog::on_showGPS_clicked(bool checked)
{
_mainWindow->getMainToolBar()->viewStateChanged(TOOL_BAR_SHOW_GPS, checked);
}
void SettingsDialog::on_showBattery_clicked(bool checked)
{
_mainWindow->getMainToolBar()->viewStateChanged(TOOL_BAR_SHOW_BATTERY, checked);
}
void SettingsDialog::on_showMessages_clicked(bool checked)
{
_mainWindow->getMainToolBar()->viewStateChanged(TOOL_BAR_SHOW_MESSAGES, checked);
}
void SettingsDialog::on_showMav_clicked(bool checked)
{
_mainWindow->getMainToolBar()->viewStateChanged(TOOL_BAR_SHOW_MAV, checked);
}
void SettingsDialog::on_showRSSI_clicked(bool checked)
{
_mainWindow->getMainToolBar()->viewStateChanged(TOOL_BAR_SHOW_RSSI, checked);
}
void SettingsDialog::_bingMapRadioClicked(bool checked) void SettingsDialog::_bingMapRadioClicked(bool checked)
{ {
if (checked) { if (checked) {
......
...@@ -56,13 +56,6 @@ private slots: ...@@ -56,13 +56,6 @@ private slots:
void _selectSavedFilesDirectory(void); void _selectSavedFilesDirectory(void);
void _validateBeforeClose(void); void _validateBeforeClose(void);
void on_showGPS_clicked(bool checked);
void on_showBattery_clicked(bool checked);
void on_showMessages_clicked(bool checked);
void on_showMav_clicked(bool checked);
void on_showRSSI_clicked(bool checked);
void _bingMapRadioClicked(bool checked); void _bingMapRadioClicked(bool checked);
void _googleMapRadioClicked(bool checked); void _googleMapRadioClicked(bool checked);
void _openMapRadioClicked(bool checked); void _openMapRadioClicked(bool checked);
......
...@@ -281,80 +281,6 @@ ...@@ -281,80 +281,6 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Tool Bar</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QCheckBox" name="showGPS">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Show GPS</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="showMessages">
<property name="text">
<string>Show Messages</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QCheckBox" name="showBattery">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Show Battery</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="showMav">
<property name="text">
<string>Show Mav Icon</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="showRSSI">
<property name="text">
<string>Show RSSI</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QGroupBox" name="groupBox_2"> <widget class="QGroupBox" name="groupBox_2">
<property name="title"> <property name="title">
......
This diff is collapsed.
...@@ -27,10 +27,13 @@ This file is part of the QGROUNDCONTROL project ...@@ -27,10 +27,13 @@ This file is part of the QGROUNDCONTROL project
* @author Gus Grubba <mavlink@grubba.com> * @author Gus Grubba <mavlink@grubba.com>
*/ */
#ifndef MAINTOOLBAR_H #ifndef MainToolBarController_H
#define MAINTOOLBAR_H #define MainToolBarController_H
#include "QGCQmlWidgetHolder.h" #include <QObject>
#include "Vehicle.h"
#include "UASMessageView.h"
#define TOOL_BAR_SETTINGS_GROUP "TOOLBAR_SETTINGS_GROUP" #define TOOL_BAR_SETTINGS_GROUP "TOOLBAR_SETTINGS_GROUP"
#define TOOL_BAR_SHOW_BATTERY "ShowBattery" #define TOOL_BAR_SHOW_BATTERY "ShowBattery"
...@@ -39,52 +42,31 @@ This file is part of the QGROUNDCONTROL project ...@@ -39,52 +42,31 @@ This file is part of the QGROUNDCONTROL project
#define TOOL_BAR_SHOW_MESSAGES "ShowMessages" #define TOOL_BAR_SHOW_MESSAGES "ShowMessages"
#define TOOL_BAR_SHOW_RSSI "ShowRSSI" #define TOOL_BAR_SHOW_RSSI "ShowRSSI"
class UASInterface; class MainToolBarController : public QObject
class UASMessage;
class UASMessageViewRollDown;
class MainToolBar : public QGCQmlWidgetHolder
{ {
Q_OBJECT Q_OBJECT
Q_ENUMS(ViewType_t)
public:
typedef enum { public:
ViewNone = -1, MainToolBarController(QObject* parent = NULL);
ViewAnalyze, // MainWindow::VIEW_ENGINEER ~MainToolBarController();
ViewPlan , // MainWindow::VIEW_MISSION_EDITOR
ViewFly , // MainWindow::VIEW_FLIGHT
ViewSetup , // MainWindow::VIEW_SETUP
} ViewType_t;
MainToolBar(QWidget* parent = NULL);
~MainToolBar();
Q_INVOKABLE void onSetupView(); Q_INVOKABLE void onSetupView();
Q_INVOKABLE void onPlanView(); Q_INVOKABLE void onPlanView();
Q_INVOKABLE void onFlyView(); Q_INVOKABLE void onFlyView();
Q_INVOKABLE void onFlyViewMenu();
Q_INVOKABLE void onConnect(QString conf); Q_INVOKABLE void onConnect(QString conf);
Q_INVOKABLE void onDisconnect(QString conf); Q_INVOKABLE void onDisconnect(QString conf);
Q_INVOKABLE void onEnterMessageArea(int x, int y); Q_INVOKABLE void onEnterMessageArea(int x, int y);
Q_INVOKABLE void onToolBarMessageClosed(void); Q_INVOKABLE void onToolBarMessageClosed(void);
Q_PROPERTY(double height MEMBER _toolbarHeight NOTIFY heightChanged) Q_PROPERTY(double height MEMBER _toolbarHeight NOTIFY heightChanged)
Q_PROPERTY(ViewType_t currentView MEMBER _currentView NOTIFY currentViewChanged)
Q_PROPERTY(QStringList configList MEMBER _linkConfigurations NOTIFY configListChanged) Q_PROPERTY(QStringList configList MEMBER _linkConfigurations NOTIFY configListChanged)
Q_PROPERTY(int connectionCount READ connectionCount NOTIFY connectionCountChanged) Q_PROPERTY(int connectionCount READ connectionCount NOTIFY connectionCountChanged)
Q_PROPERTY(QStringList connectedList MEMBER _connectedList NOTIFY connectedListChanged) Q_PROPERTY(QStringList connectedList MEMBER _connectedList NOTIFY connectedListChanged)
Q_PROPERTY(bool showGPS MEMBER _showGPS NOTIFY showGPSChanged)
Q_PROPERTY(bool showMav MEMBER _showMav NOTIFY showMavChanged)
Q_PROPERTY(bool showMessages MEMBER _showMessages NOTIFY showMessagesChanged)
Q_PROPERTY(bool showBattery MEMBER _showBattery NOTIFY showBatteryChanged)
Q_PROPERTY(bool showRSSI MEMBER _showRSSI NOTIFY showRSSIChanged)
Q_PROPERTY(float progressBarValue MEMBER _progressBarValue NOTIFY progressBarValueChanged) Q_PROPERTY(float progressBarValue MEMBER _progressBarValue NOTIFY progressBarValueChanged)
Q_PROPERTY(int remoteRSSI READ remoteRSSI NOTIFY remoteRSSIChanged) Q_PROPERTY(int remoteRSSI READ remoteRSSI NOTIFY remoteRSSIChanged)
Q_PROPERTY(int telemetryRRSSI READ telemetryRRSSI NOTIFY telemetryRRSSIChanged) Q_PROPERTY(int telemetryRRSSI READ telemetryRRSSI NOTIFY telemetryRRSSIChanged)
Q_PROPERTY(int telemetryLRSSI READ telemetryLRSSI NOTIFY telemetryLRSSIChanged) Q_PROPERTY(int telemetryLRSSI READ telemetryLRSSI NOTIFY telemetryLRSSIChanged)
void setCurrentView (int currentView);
void viewStateChanged (const QString& key, bool value); void viewStateChanged (const QString& key, bool value);
int remoteRSSI () { return _remoteRSSI; } int remoteRSSI () { return _remoteRSSI; }
int telemetryRRSSI () { return _telemetryRRSSI; } int telemetryRRSSI () { return _telemetryRRSSI; }
...@@ -95,14 +77,8 @@ public: ...@@ -95,14 +77,8 @@ public:
signals: signals:
void connectionCountChanged (int count); void connectionCountChanged (int count);
void currentViewChanged ();
void configListChanged (); void configListChanged ();
void connectedListChanged (QStringList connectedList); void connectedListChanged (QStringList connectedList);
void showGPSChanged (bool value);
void showMavChanged (bool value);
void showMessagesChanged (bool value);
void showBatteryChanged (bool value);
void showRSSIChanged (bool value);
void progressBarValueChanged (float value); void progressBarValueChanged (float value);
void remoteRSSIChanged (int value); void remoteRSSIChanged (int value);
void telemetryRRSSIChanged (int value); void telemetryRRSSIChanged (int value);
...@@ -121,26 +97,17 @@ private slots: ...@@ -121,26 +97,17 @@ private slots:
void _setProgressBarValue (float value); void _setProgressBarValue (float value);
void _remoteControlRSSIChanged (uint8_t rssi); void _remoteControlRSSIChanged (uint8_t rssi);
void _telemetryChanged (LinkInterface* link, unsigned rxerrors, unsigned fixed, unsigned rssi, unsigned remrssi, unsigned txbuf, unsigned noise, unsigned remnoise); void _telemetryChanged (LinkInterface* link, unsigned rxerrors, unsigned fixed, unsigned rssi, unsigned remrssi, unsigned txbuf, unsigned noise, unsigned remnoise);
void _heightChanged (double height);
void _delayedShowToolBarMessage (void); void _delayedShowToolBarMessage (void);
private: private:
void _updateConnection (LinkInterface *disconnectedLink = NULL); void _updateConnection (LinkInterface *disconnectedLink = NULL);
void _setToolBarState (const QString& key, bool value);
private: private:
Vehicle* _vehicle; Vehicle* _vehicle;
UASInterface* _mav; UASInterface* _mav;
QQuickItem* _toolBar;
ViewType_t _currentView;
QStringList _linkConfigurations; QStringList _linkConfigurations;
int _connectionCount; int _connectionCount;
QStringList _connectedList; QStringList _connectedList;
bool _showGPS;
bool _showMav;
bool _showMessages;
bool _showRSSI;
bool _showBattery;
float _progressBarValue; float _progressBarValue;
int _remoteRSSI; int _remoteRSSI;
double _remoteRSSIstore; double _remoteRSSIstore;
...@@ -155,4 +122,4 @@ private: ...@@ -155,4 +122,4 @@ private:
QMutex _toolbarMessageQueueMutex; QMutex _toolbarMessageQueueMutex;
}; };
#endif // MAINTOOLBAR_H #endif // MainToolBarController_H
...@@ -24,7 +24,6 @@ This file is part of the QGROUNDCONTROL project ...@@ -24,7 +24,6 @@ This file is part of the QGROUNDCONTROL project
#include <QMenu> #include <QMenu>
#include <QScrollBar> #include <QScrollBar>
#include "MainToolBar.h"
#include "UASMessageView.h" #include "UASMessageView.h"
#include "QGCUnconnectedInfoWidget.h" #include "QGCUnconnectedInfoWidget.h"
#include "UASMessageHandler.h" #include "UASMessageHandler.h"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment