Commit a656c246 authored by dogmaphobic's avatar dogmaphobic

Enabling the option of using Compass and Attitude Widgets or HUD.

parent a9b28845
......@@ -120,16 +120,16 @@
<file alias="MapDisplay.qml">src/ui/mapdisplay/MapDisplay.qml</file>
<file alias="QGroundControl/FlightControls/QGCAltitudeWidget.qml">src/ui/qmlcommon/QGCAltitudeWidget.qml</file>
<file alias="QGroundControl/FlightControls/QGCArtificialHorizon.qml">src/ui/qmlcommon/QGCArtificialHorizon.qml</file>
<file alias="QGroundControl/FlightControls/QGCAttitudeInstrument.qml">src/ui/qmlcommon/QGCAttitudeInstrument.qml</file>
<file alias="QGroundControl/FlightControls/QGCAttitudeWidget.qml">src/ui/qmlcommon/QGCAttitudeWidget.qml</file>
<file alias="QGroundControl/FlightControls/QGCCompass.qml">src/ui/qmlcommon/QGCCompass.qml</file>
<file alias="QGroundControl/FlightControls/QGCCompassInstrument.qml">src/ui/qmlcommon/QGCCompassInstrument.qml</file>
<file alias="QGroundControl/FlightControls/QGCAttitudeHUD.qml">src/ui/qmlcommon/QGCAttitudeHUD.qml</file>
<file alias="QGroundControl/FlightControls/QGCCompassWidget.qml">src/ui/qmlcommon/QGCCompassWidget.qml</file>
<file alias="QGroundControl/FlightControls/QGCCompassHUD.qml">src/ui/qmlcommon/QGCCompassHUD.qml</file>
<file alias="QGroundControl/FlightControls/QGCCurrentAltitude.qml">src/ui/qmlcommon/QGCCurrentAltitude.qml</file>
<file alias="QGroundControl/FlightControls/QGCCurrentSpeed.qml">src/ui/qmlcommon/QGCCurrentSpeed.qml</file>
<file alias="QGroundControl/FlightControls/QGCHudMessage.qml">src/ui/qmlcommon/QGCHudMessage.qml</file>
<file alias="QGroundControl/FlightControls/QGCMapBackground.qml">src/ui/qmlcommon/QGCMapBackground.qml</file>
<file alias="QGroundControl/FlightControls/QGCMapToolButton.qml">src/ui/qmlcommon/QGCMapToolButton.qml</file>
<file alias="QGroundControl/FlightControls/QGCPitchWidget.qml">src/ui/qmlcommon/QGCPitchWidget.qml</file>
<file alias="QGroundControl/FlightControls/QGCPitchIndicator.qml">src/ui/qmlcommon/QGCPitchIndicator.qml</file>
<file alias="QGroundControl/FlightControls/QGCSlider.qml">src/ui/qmlcommon/QGCSlider.qml</file>
<file alias="QGroundControl/FlightControls/QGCSpeedWidget.qml">src/ui/qmlcommon/QGCSpeedWidget.qml</file>
<file alias="QGroundControl/FlightControls/QGCVideoBackground.qml">src/ui/qmlcommon/QGCVideoBackground.qml</file>
......
......@@ -47,8 +47,6 @@ Item {
property real pitch: isNaN(MavManager.pitch) ? 0 : MavManager.pitch
property bool showPitchIndicator: true
property bool showAttitudeIndicator: true
property bool showCompass: true
function getBool(value) {
return value === '0' ? false : true;
......@@ -58,8 +56,11 @@ Item {
return value ? "1" : "0";
}
function showHudInstruments() {
return videoBackground.visible || mapBackground.visible;
function enforceExclusiveOption(setWidget, alternateWidget, defaultSetting, alternateSetting) {
setWidget.visible = !setWidget.visible;
flightDisplay.saveSetting(defaultSetting, setBool(setWidget.visible));
alternateWidget.visible = setWidget.visible ? false : alternateWidget.visible;
flightDisplay.saveSetting(alternateSetting, setBool(alternateWidget.visible));
}
Connections {
......@@ -75,9 +76,11 @@ Item {
mapBackground.showWaypoints = getBool(flightDisplay.loadSetting("mapShowWaypoints", "0"));
mapBackground.alwaysNorth = getBool(flightDisplay.loadSetting("mapAlwaysPointsNorth", "0"));
videoBackground.visible = getBool(flightDisplay.loadSetting("showVideoBackground", "0"));
showAttitudeIndicator = getBool(flightDisplay.loadSetting("showAttitudeIndicator", "1"));
showPitchIndicator = getBool(flightDisplay.loadSetting("showPitchIndicator", "1"));
showCompass = getBool(flightDisplay.loadSetting("showCompass", "1"));
compassWidget.visible = getBool(flightDisplay.loadSetting("showCompassWidget", "0"));
compassHUD.visible = getBool(flightDisplay.loadSetting("showCompassHUD", "1"));
attitudeWidget.visible = getBool(flightDisplay.loadSetting("showAttitudeWidget", "0"));
attitudeHUD.visible = getBool(flightDisplay.loadSetting("showAttitudeHUD", "1"));
altitudeWidget.visible = getBool(flightDisplay.loadSetting("showAltitudeWidget", "1"));
speedWidget.visible = getBool(flightDisplay.loadSetting("showSpeedWidget", "1"));
currentSpeed.showAirSpeed = getBool(flightDisplay.loadSetting("showCurrentAirSpeed", "1"));
......@@ -91,6 +94,16 @@ Item {
videoBackground.visible = false;
flightDisplay.saveSetting("showVideoBackground", setBool(videoBackground.visible));
}
// Compass HUD or Widget. Not both:
if(compassWidget.visible && compassHUD.visible) {
compassWidget.visible = false;
flightDisplay.saveSetting("showCompassWidget", setBool(compassWidget.visible));
}
// Attitude HUD or Widget. Not both:
if(attitudeWidget.visible && attitudeHUD.visible) {
attitudeWidget.visible = false;
flightDisplay.saveSetting("showAttitudeWidget", setBool(attitudeWidget.visible));
}
// Disable video if we don't have support for it
if(!flightDisplay.hasVideo) {
videoBackground.visible = false;
......@@ -103,19 +116,13 @@ Item {
Menu {
id: contextMenu
ExclusiveGroup { id: backgroundDisplay }
MenuItem {
text: "Map Background"
checkable: true
checked: mapBackground.visible
exclusiveGroup: backgroundDisplay
onTriggered:
{
mapBackground.visible = !mapBackground.visible;
flightDisplay.saveSetting("showMapBackground", setBool(mapBackground.visible));
videoBackground.visible = mapBackground.visible ? false : videoBackground.visible;
flightDisplay.saveSetting("showVideoBackground", setBool(videoBackground.visible));
enforceExclusiveOption(mapBackground, videoBackground, "showMapBackground", "showVideoBackground");
}
}
......@@ -152,22 +159,39 @@ Item {
text: "Video Background"
checkable: true
checked: videoBackground.visible
exclusiveGroup: backgroundDisplay
onTriggered:
{
videoBackground.visible = !videoBackground.visible;
flightDisplay.saveSetting("showVideoBackground", setBool(videoBackground.visible));
mapBackground.visible = videoBackground.visible ? false : mapBackground.visible;
flightDisplay.saveSetting("showMapBackground", setBool(mapBackground.visible));
enforceExclusiveOption(videoBackground, mapBackground, "showVideoBackground", "showMapBackground");
}
}
MenuSeparator {}
MenuItem {
text: "Attitude Widget"
checkable: true
checked: attitudeWidget.visible
onTriggered:
{
enforceExclusiveOption(attitudeWidget, attitudeHUD, "showAttitudeWidget", "showAttitudeHUD");
}
}
MenuItem {
text: "Attitude HUD"
checkable: true
checked: attitudeHUD.visible
onTriggered:
{
enforceExclusiveOption(attitudeHUD, attitudeWidget, "showAttitudeHUD", "showAttitudeWidget");
}
}
MenuItem {
text: "Pitch Indicator"
checkable: true
checked: showPitchIndicator
enabled: attitudeHUD.visible || attitudeWidget.visible
onTriggered:
{
showPitchIndicator = !showPitchIndicator;
......@@ -176,24 +200,22 @@ Item {
}
MenuItem {
text: "Attitude Indicator"
checkable: true
checked: showAttitudeIndicator
text: "Compass Widget"
checkable: true
checked: compassWidget.visible
onTriggered:
{
showAttitudeIndicator = !showAttitudeIndicator;
flightDisplay.saveSetting("showAttitudeIndicator", setBool(showAttitudeIndicator));
enforceExclusiveOption(compassWidget, compassHUD, "showCompassWidget", "showCompassHUD");
}
}
MenuItem {
text: "Compass"
text: "Compass HUD"
checkable: true
checked: showCompass
checked: compassHUD.visible
onTriggered:
{
showCompass = !showCompass;
flightDisplay.saveSetting("showCompass", setBool(showCompass));
enforceExclusiveOption(compassHUD, compassWidget, "showCompassHUD", "showCompassWidget");
}
}
......@@ -271,10 +293,14 @@ Item {
{
showPitchIndicator = true;
flightDisplay.saveSetting("showPitchIndicator", setBool(showPitchIndicator));
showAttitudeIndicator = true;
flightDisplay.saveSetting("showAttitudeIndicator", setBool(showAttitudeIndicator));
showCompass = true;
flightDisplay.saveSetting("showCompass", setBool(showCompass));
attitudeWidget.visible = false;
flightDisplay.saveSetting("showAttitudeWidget", setBool(attitudeWidget.visible));
attitudeHUD.visible = true;
flightDisplay.saveSetting("showAttitudeHUD", setBool(attitudeHUD.visible));
compassWidget.visible = false
flightDisplay.saveSetting("showCompassWidget", setBool(compassWidget.visible));
compassHUD.visible = true
flightDisplay.saveSetting("showCompassHUD", setBool(compassHUD.visible));
altitudeWidget.visible = true;
flightDisplay.saveSetting("showAltitudeWidget", setBool(altitudeWidget.visible));
currentAltitude.showAltitude = true;
......@@ -300,6 +326,8 @@ Item {
}
// Video and Map backgrounds are exclusive. If one is enabled the other is disabled.
QGCVideoBackground {
id: videoBackground
anchors.fill: parent
......@@ -329,13 +357,14 @@ Item {
z: mapBackground.z + 1
}
QGCCompassInstrument {
id: compassInstrument
// Floating (Top Left) Compass Widget
QGCCompassWidget {
id: compassWidget
y: ScreenTools.defaultFontPixelSize * (0.42)
x: ScreenTools.defaultFontPixelSize * (7.1)
size: ScreenTools.defaultFontPixelSize * (13.3)
heading: isNaN(MavManager.heading) ? 0 : MavManager.heading
visible: showHudInstruments() && showCompass
z: mapBackground.z + 2
onResetRequested: {
y = ScreenTools.defaultFontPixelSize * (0.42)
......@@ -346,14 +375,37 @@ Item {
}
}
QGCAttitudeInstrument {
id: attitudeInstrument
// HUD (lower middle) Compass
QGCCompassHUD {
id: compassHUD
y: root.height * 0.7
x: root.width * 0.5 - ScreenTools.defaultFontPixelSize * (5)
width: ScreenTools.defaultFontPixelSize * (10)
height: ScreenTools.defaultFontPixelSize * (10)
heading: isNaN(MavManager.heading) ? 0 : MavManager.heading
z: 70
}
// Sky/Ground background (visible when no Map or Video is enabled)
QGCArtificialHorizon {
id: artificialHoriz
anchors.fill: parent
rollAngle: roll
pitchAngle: pitch
visible: !videoBackground.visible && !mapBackground.visible
}
// Floating (Top Right) Attitude Widget
QGCAttitudeWidget {
id: attitudeWidget
y: ScreenTools.defaultFontPixelSize * (0.42)
size: ScreenTools.defaultFontPixelSize * (13.3)
rollAngle: roll
pitchAngle: pitch
showPitch: showPitchIndicator
visible: showHudInstruments() && showAttitudeIndicator
anchors.right: root.right
anchors.rightMargin: ScreenTools.defaultFontPixelSize * (7.1)
z: mapBackground.z + 2
......@@ -367,35 +419,18 @@ Item {
}
}
QGCArtificialHorizon {
id: artificialHoriz
anchors.fill: parent
rollAngle: roll
pitchAngle: pitch
visible: !showHudInstruments()
}
// HUD (center) Attitude Indicator
QGCAttitudeWidget {
id: attitudeWidget
QGCAttitudeHUD {
id: attitudeHUD
rollAngle: roll
pitchAngle: pitch
visible: !showHudInstruments() && showAttitudeIndicator
width: ScreenTools.defaultFontPixelSize * (21.7)
height: ScreenTools.defaultFontPixelSize * (21.7)
showPitch: showPitchIndicator
width: ScreenTools.defaultFontPixelSize * (30)
height: ScreenTools.defaultFontPixelSize * (30)
z: 20
}
QGCPitchWidget {
id: pitchWidget
visible: showPitchIndicator && !showHudInstruments()
anchors.verticalCenter: parent.verticalCenter
pitchAngle: pitch
rollAngle: roll
color: Qt.rgba(0,0,0,0)
size: ScreenTools.defaultFontPixelSize * (10)
z: 30
}
QGCAltitudeWidget {
id: altitudeWidget
anchors.right: parent.right
......@@ -438,17 +473,6 @@ Item {
z: 60
}
QGCCompass {
id: compassIndicator
y: root.height * 0.7
x: root.width * 0.5 - ScreenTools.defaultFontPixelSize * (5)
width: ScreenTools.defaultFontPixelSize * (10)
height: ScreenTools.defaultFontPixelSize * (10)
heading: isNaN(MavManager.heading) ? 0 : MavManager.heading
visible: !showHudInstruments() && showCompass
z: 70
}
//- Context Menu
MouseArea {
anchors.fill: parent
......
......@@ -23,81 +23,59 @@ This file is part of the QGROUNDCONTROL project
/**
* @file
* @brief QGC Attitude Instrument
* @brief QGC Attitude Widget
* @author Gus Grubba <mavlink@grubba.com>
*/
import QtQuick 2.4
import QGroundControl.Controls 1.0
import QGroundControl.ScreenTools 1.0
QGCMovableItem {
Item {
id: root
property real rollAngle: 0
anchors.centerIn: parent
property real rollAngle : 0
property real pitchAngle: 0
property bool showPitch: true
property real size
width: size
height: size
//----------------------------------------------------
//-- Artificial Horizon
QGCArtificialHorizon {
rollAngle: root.rollAngle
pitchAngle: root.pitchAngle
anchors.fill: parent
}
//----------------------------------------------------
//-- Pointer
Image {
id: pointer
source: "/qmlimages/attitudePointer.svg"
id: rollDial
anchors { bottom: root.verticalCenter; horizontalCenter: parent.horizontalCenter}
source: "/qmlimages/rollDialWhite.svg"
mipmap: true
width: parent.width
fillMode: Image.PreserveAspectFit
anchors.fill: parent
transform: Rotation {
origin.x: rollDial.width / 2
origin.y: rollDial.height
angle: -rollAngle
}
}
//----------------------------------------------------
//-- Instrument Dial
Image {
id: instrumentDial
source: "/qmlimages/attitudeDial.svg"
id: pointer
anchors { bottom: root.verticalCenter; horizontalCenter: parent.horizontalCenter}
source: "/qmlimages/rollPointerWhite.svg"
mipmap: true
width: rollDial.width
fillMode: Image.PreserveAspectFit
anchors.fill: parent
transform: Rotation {
origin.x: root.width / 2
origin.y: root.height / 2
angle: -rollAngle
}
}
//----------------------------------------------------
//-- Pitch
QGCPitchWidget {
id: pitchWidget
visible: root.showPitch
size: root.size * 0.65
anchors.verticalCenter: parent.verticalCenter
pitchAngle: root.pitchAngle
rollAngle: root.rollAngle
color: Qt.rgba(0,0,0,0)
}
//----------------------------------------------------
//-- Cross Hair
Image {
id: crossHair
anchors.centerIn: parent
source: "/qmlimages/crossHair.svg"
mipmap: true
width: size * 0.75
width: parent.width
fillMode: Image.PreserveAspectFit
}
//----------------------------------------------------
//-- Instrument Pannel
Image {
id: pannel
source: "/qmlimages/attitudeInstrument.svg"
mipmap: true
fillMode: Image.PreserveAspectFit
anchors.fill: parent
QGCPitchIndicator {
id: pitchIndicator
anchors.verticalCenter: parent.verticalCenter
visible: root.showPitch
pitchAngle: root.pitchAngle
rollAngle: root.rollAngle
color: Qt.rgba(0,0,0,0)
size: ScreenTools.defaultFontPixelSize * (10)
}
}
......@@ -23,48 +23,81 @@ This file is part of the QGROUNDCONTROL project
/**
* @file
* @brief QGC Attitude Widget
* @brief QGC Attitude Instrument
* @author Gus Grubba <mavlink@grubba.com>
*/
import QtQuick 2.4
import QGroundControl.ScreenTools 1.0
import QGroundControl.Controls 1.0
Item {
QGCMovableItem {
id: root
anchors.centerIn: parent
property real rollAngle : 0
property real rollAngle: 0
property real pitchAngle: 0
property bool showPitch: true
property real size
width: size
height: size
//----------------------------------------------------
//-- Artificial Horizon
QGCArtificialHorizon {
rollAngle: root.rollAngle
pitchAngle: root.pitchAngle
anchors.fill: parent
}
//----------------------------------------------------
//-- Pointer
Image {
id: rollDial
anchors { bottom: root.verticalCenter; horizontalCenter: parent.horizontalCenter}
source: "/qmlimages/rollDialWhite.svg"
id: pointer
source: "/qmlimages/attitudePointer.svg"
mipmap: true
width: parent.width
fillMode: Image.PreserveAspectFit
transform: Rotation {
origin.x: rollDial.width / 2
origin.y: rollDial.height
angle: -rollAngle
}
anchors.fill: parent
}
//----------------------------------------------------
//-- Instrument Dial
Image {
id: pointer
anchors { bottom: root.verticalCenter; horizontalCenter: parent.horizontalCenter}
source: "/qmlimages/rollPointerWhite.svg"
id: instrumentDial
source: "/qmlimages/attitudeDial.svg"
mipmap: true
width: rollDial.width
fillMode: Image.PreserveAspectFit
anchors.fill: parent
transform: Rotation {
origin.x: root.width / 2
origin.y: root.height / 2
angle: -rollAngle
}
}
//----------------------------------------------------
//-- Pitch
QGCPitchIndicator {
id: pitchWidget
visible: root.showPitch
size: root.size * 0.65
anchors.verticalCenter: parent.verticalCenter
pitchAngle: root.pitchAngle
rollAngle: root.rollAngle
color: Qt.rgba(0,0,0,0)
}
//----------------------------------------------------
//-- Cross Hair
Image {
id: crossHair
anchors.centerIn: parent
source: "/qmlimages/crossHair.svg"
mipmap: true
width: parent.width
width: size * 0.75
fillMode: Image.PreserveAspectFit
}
//----------------------------------------------------
//-- Instrument Pannel
Image {
id: pannel
source: "/qmlimages/attitudeInstrument.svg"
mipmap: true
fillMode: Image.PreserveAspectFit
anchors.fill: parent
}
}
......@@ -23,7 +23,7 @@ This file is part of the QGROUNDCONTROL project
/**
* @file
* @brief QGC Compass
* @brief QGC Compass HUD
* @author Gus Grubba <mavlink@grubba.com>
*/
......@@ -70,5 +70,3 @@ Item {
}
}
}
......@@ -23,7 +23,7 @@ This file is part of the QGROUNDCONTROL project
/**
* @file
* @brief QGC Compass
* @brief QGC Compass Widget
* @author Gus Grubba <mavlink@grubba.com>
*/
......
Module QGroundControl.FlightControls
QGCAltitudeWidget 1.0 QGCAltitudeWidget.qml
QGCArtificialHorizon 1.0 QGCArtificialHorizon.qml
QGCAttitudeHUD 1.0 QGCAttitudeHUD.qml
QGCAttitudeWidget 1.0 QGCAttitudeWidget.qml
QGCCompass 1.0 QGCCompass.qml
QGCCompassHUD 1.0 QGCCompassHUD.qml
QGCCompassWidget 1.0 QGCCompassWidget.qml
QGCCurrentAltitude 1.0 QGCCurrentAltitude.qml
QGCCurrentSpeed 1.0 QGCCurrentSpeed.qml
QGCHudMessage 1.0 QGCHudMessage.qml
QGCMapBackground 1.0 QGCMapBackground.qml
QGCPitchWidget 1.0 QGCPitchWidget.qml
QGCSpeedWidget 1.0 QGCSpeedWidget.qml
QGCSlider 1.0 QGCSlider.qml
QGCWaypointEditor 1.0 QGCWaypointEditor.qml
QGCMapToolButton 1.0 QGCMapToolButton.qml
QGCAttitudeInstrument 1.0 QGCAttitudeInstrument.qml
QGCCompassInstrument 1.0 QGCCompassInstrument.qml
QGCArtificialHorizon 1.0 QGCArtificialHorizon.qml
QGCWaypoint 1.0 QGCWaypoint.qml
QGCHudMessage 1.0 QGCHudMessage.qml
QGCPitchIndicator 1.0 QGCPitchIndicator.qml
QGCSlider 1.0 QGCSlider.qml
QGCSpeedWidget 1.0 QGCSpeedWidget.qml
QGCVideoBackground 1.0 QGCVideoBackground.qml
QGCWaypoint 1.0 QGCWaypoint.qml
QGCWaypointEditor 1.0 QGCWaypointEditor.qml
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