diff --git a/src/FlightDisplay/FlightDisplayViewMap.qml b/src/FlightDisplay/FlightDisplayViewMap.qml new file mode 100644 index 0000000000000000000000000000000000000000..a6473655caf9ec7bf3518a327ef98d2db62411d5 --- /dev/null +++ b/src/FlightDisplay/FlightDisplayViewMap.qml @@ -0,0 +1,111 @@ +/*===================================================================== + +QGroundControl Open Source Ground Control Station + +(c) 2009, 2015 QGROUNDCONTROL PROJECT + +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 . + +======================================================================*/ + +import QtQuick 2.4 +import QtQuick.Controls 1.3 +import QtLocation 5.3 +import QtPositioning 5.2 + +import QGroundControl 1.0 +import QGroundControl.FlightDisplay 1.0 +import QGroundControl.FlightMap 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.Vehicle 1.0 +import QGroundControl.Controllers 1.0 + +FlightMap { + id: flightMap + anchors.fill: parent + mapName: _mapName + latitude: root._defaultCoordinate.latitude + longitude: root._defaultCoordinate.longitude + + property var rootVehicleCoordinate: _vehicleCoordinate + property bool _followVehicle: true + + onRootVehicleCoordinateChanged: updateMapPosition(false /* force */) + + function updateMapPosition(force) { + if (_followVehicle || force) { + flightMap.latitude = root._vehicleCoordinate.latitude + flightMap.longitude = root._vehicleCoordinate.longitude + } + } + + // Home position + MissionItemIndicator { + label: "H" + coordinate: (_activeVehicle && _activeVehicle.homePositionAvailable) ? _activeVehicle.homePosition : QtPositioning.coordinate(0, 0) + visible: { + if(!_mainIsMap) + return false; + return _activeVehicle ? _activeVehicle.homePositionAvailable : false + } + z: QGroundControl.zOrderMapItems + } + + // Add trajectory points to the map + MapItemView { + model: _mainIsMap ? multiVehicleManager.activeVehicle ? multiVehicleManager.activeVehicle.trajectoryPoints : 0 : 0 + delegate: + MapPolyline { + line.width: 3 + line.color: "orange" + z: QGroundControl.zOrderMapItems - 1 + path: [ + { latitude: object.coordinate1.latitude, longitude: object.coordinate1.longitude }, + { latitude: object.coordinate2.latitude, longitude: object.coordinate2.longitude }, + ] + } + } + + // Add the vehicles to the map + MapItemView { + model: multiVehicleManager.vehicles + delegate: + VehicleMapItem { + vehicle: object + coordinate: object.coordinate + isSatellite: flightMap.isSatelliteMap + size: _mainIsMap ? ScreenTools.defaultFontPixelHeight * 5 : ScreenTools.defaultFontPixelHeight * 2 + z: QGroundControl.zOrderMapItems + } + } + + // Add the mission items to the map + MissionItemView { + model: _mainIsMap ? _missionController.missionItems : 0 + } + + // Add lines between waypoints + MissionLineView { + model: _mainIsMap ? _missionController.waypointLines : 0 + } + + // Used to make pinch zoom work + MouseArea { + anchors.fill: parent + } +} diff --git a/src/FlightDisplay/FlightDisplayViewVideo.qml b/src/FlightDisplay/FlightDisplayViewVideo.qml new file mode 100644 index 0000000000000000000000000000000000000000..8390277cf3962173a007ba5adc616b0a4bb6ed69 --- /dev/null +++ b/src/FlightDisplay/FlightDisplayViewVideo.qml @@ -0,0 +1,55 @@ +/*===================================================================== + +QGroundControl Open Source Ground Control Station + +(c) 2009, 2015 QGROUNDCONTROL PROJECT + +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 . + +======================================================================*/ + +import QtQuick 2.4 +import QtQuick.Controls 1.3 + +import QGroundControl 1.0 +import QGroundControl.FlightDisplay 1.0 +import QGroundControl.FlightMap 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.Vehicle 1.0 +import QGroundControl.Controllers 1.0 + + +QGCVideoBackground { + anchors.fill: parent + display: _controller.videoSurface + receiver: _controller.videoReceiver + + /* TODO: Come up with a way to make this an option + QGCAttitudeHUD { + id: attitudeHUD + visible: !_mainIsMap + rollAngle: _roll + pitchAngle: _pitch + width: ScreenTools.defaultFontPixelSize * (30) + height: ScreenTools.defaultFontPixelSize * (30) + active: multiVehicleManager.activeVehicleAvailable + z: QGroundControl.zOrderWidgets + } + */ + +} diff --git a/src/MissionEditor/MissionEditorHelp.qml b/src/MissionEditor/MissionEditorHelp.qml new file mode 100644 index 0000000000000000000000000000000000000000..6edf694e0e84865cda1820189ccd088b291865be --- /dev/null +++ b/src/MissionEditor/MissionEditorHelp.qml @@ -0,0 +1,225 @@ +/*===================================================================== + +QGroundControl Open Source Ground Control Station + +(c) 2009, 2015 QGROUNDCONTROL PROJECT + +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 . + +======================================================================*/ + +import QtQuick 2.4 +import QtQuick.Controls 1.3 +import QtQuick.Dialogs 1.2 + +import QGroundControl 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 + +Rectangle { + visible: helpButton.checked + color: qgcPal.window + opacity: _rightPanelOpacity + radius: ScreenTools.defaultFontPixelHeight + z: QGroundControl.zOrderTopMost + + readonly property real margins: ScreenTools.defaultFontPixelHeight + + Image { + anchors.margins: ScreenTools.defaultFontPixelHeight + anchors.top: parent.top + anchors.right: parent.right + width: ScreenTools.defaultFontPixelHeight * 1.5 + height: ScreenTools.defaultFontPixelHeight * 1.5 + source: (qgcPal.globalTheme === QGCPalette.Light) ? "/qmlimages/XDeleteBlack.svg" : "/qmlimages/XDelete.svg" + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + + MouseArea { + anchors.fill: parent + onClicked: helpButton.checked = false + } + } + + Item { + anchors.margins: _margin + anchors.fill: parent + + QGCLabel { + id: helpTitle + font.pixelSize: ScreenTools.mediumFontPixelSize + text: "Mission Planner" + } + + QGCLabel { + id: helpIconLabel + anchors.topMargin: ScreenTools.defaultFontPixelHeight + anchors.top: helpTitle.bottom + width: parent.width + wrapMode: Text.WordWrap + text: "Mission Planner tool buttons:" + } + + Image { + id: addMissionItemsHelpIcon + anchors.topMargin: ScreenTools.defaultFontPixelHeight + anchors.top: helpIconLabel.bottom + width: ScreenTools.defaultFontPixelHeight * 3 + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + source: (qgcPal.globalTheme === QGCPalette.Light) ? "/qmlimages/MapAddMissionBlack.svg" : "/qmlimages/MapAddMission.svg" + } + + QGCLabel { + id: addMissionItemsHelpText + anchors.leftMargin: ScreenTools.defaultFontPixelHeight + anchors.left: mapTypeHelpIcon.right + anchors.right: parent.right + anchors.top: addMissionItemsHelpIcon.top + wrapMode: Text.WordWrap + text: "Add Mission Items
" + + "When enabled, add mission items by clicking on the map." + } + + Image { + id: deleteHelpIcon + anchors.topMargin: ScreenTools.defaultFontPixelHeight + anchors.top: addMissionItemsHelpText.bottom + width: ScreenTools.defaultFontPixelHeight * 3 + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + source: (qgcPal.globalTheme === QGCPalette.Light) ? "/qmlimages/TrashDeleteBlack.svg" : "/qmlimages/TrashDelete.svg" + } + + QGCLabel { + id: deleteHelpText + anchors.leftMargin: ScreenTools.defaultFontPixelHeight + anchors.left: mapTypeHelpIcon.right + anchors.right: parent.right + anchors.top: deleteHelpIcon.top + wrapMode: Text.WordWrap + text: "Delete Mission Item
" + + "Delete the currently selected mission item." + } + + /* + Home Position Manager disabled + + Image { + id: homePositionManagerHelpIcon + anchors.topMargin: ScreenTools.defaultFontPixelHeight + anchors.top: deleteHelpText.bottom + width: ScreenTools.defaultFontPixelHeight * 3 + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + source: (qgcPal.globalTheme === QGCPalette.Light) ? "/qmlimages/MapHomeBlack.svg" : "/qmlimages/MapHome.svg" + } + + QGCLabel { + id: homePositionManagerHelpText + anchors.leftMargin: ScreenTools.defaultFontPixelHeight + anchors.left: mapTypeHelpIcon.right + anchors.right: parent.right + anchors.top: homePositionManagerHelpIcon.top + wrapMode: Text.WordWrap + text: "Flying Field Manager
" + + "When enabled, allows you to select/add/update flying field locations. " + + "You can save multiple flying field locations for use while creating missions while you are not connected to your vehicle." + } + */ + + Image { + id: mapCenterHelpIcon + anchors.topMargin: ScreenTools.defaultFontPixelHeight + anchors.top: deleteHelpText.bottom + width: ScreenTools.defaultFontPixelHeight * 3 + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + source: (qgcPal.globalTheme === QGCPalette.Light) ? "/qmlimages/MapCenterBlack.svg" : "/qmlimages/MapCenter.svg" + } + + QGCLabel { + id: mapCenterHelpText + anchors.leftMargin: ScreenTools.defaultFontPixelHeight + anchors.left: mapTypeHelpIcon.right + anchors.right: parent.right + anchors.top: mapCenterHelpIcon.top + wrapMode: Text.WordWrap + text: "Map Center
" + + "Options for centering the map." + } + + Image { + id: syncHelpIcon + anchors.topMargin: ScreenTools.defaultFontPixelHeight + anchors.top: mapCenterHelpText.bottom + width: ScreenTools.defaultFontPixelHeight * 3 + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + source: (qgcPal.globalTheme === QGCPalette.Light) ? "/qmlimages/MapSyncBlack.svg" : "/qmlimages/MapSync.svg" + } + + QGCLabel { + id: syncHelpText + anchors.leftMargin: ScreenTools.defaultFontPixelHeight + anchors.left: mapTypeHelpIcon.right + anchors.right: parent.right + anchors.top: syncHelpIcon.top + wrapMode: Text.WordWrap + text: "Sync
" + + "Options for saving/loading mission items." + } + + Image { + id: mapTypeHelpIcon + anchors.topMargin: ScreenTools.defaultFontPixelHeight + anchors.top: syncHelpText.bottom + width: ScreenTools.defaultFontPixelHeight * 3 + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + source: (qgcPal.globalTheme === QGCPalette.Light) ? "/qmlimages/MapTypeBlack.svg" : "/qmlimages/MapType.svg" + } + + QGCLabel { + id: mapTypeHelpText + anchors.leftMargin: ScreenTools.defaultFontPixelHeight + anchors.left: mapTypeHelpIcon.right + anchors.right: parent.right + anchors.top: mapTypeHelpIcon.top + wrapMode: Text.WordWrap + text: "Map Type
" + + "Map type options." + } + + QGCCheckBox { + anchors.left: parent.left + anchors.bottom: parent.bottom + anchors.margins: _margin + checked: !_showHelp + text: "Don't show me again" + + onClicked: QGroundControl.flightMapSettings.saveBoolMapSetting(editorMap.mapName, _showHelpKey, !checked) + } + } +}