Unverified Commit 3ead9231 authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge branch 'master' into ADSBCherryPick

parents 023aeeee 3a406dea
...@@ -16,6 +16,7 @@ Note: This file only contains high level features or important fixes. ...@@ -16,6 +16,7 @@ Note: This file only contains high level features or important fixes.
## 4.0.7 - Not yet released ## 4.0.7 - Not yet released
* Fix video page sizing * Fix video page sizing
* Virtual Joystick: Fix right stick centering. Fix/add support for rover/sub reverse throttle support.
* Fix display of multiple ADSB vehicles * Fix display of multiple ADSB vehicles
### 4.0.6 - Stable ### 4.0.6 - Stable
......
...@@ -91,18 +91,16 @@ Item { ...@@ -91,18 +91,16 @@ Item {
z: QGroundControl.zOrderTopMost + 1 z: QGroundControl.zOrderTopMost + 1
width: parent.width - (_pipOverlay.width / 2) width: parent.width - (_pipOverlay.width / 2)
height: Math.min(parent.height * 0.25, ScreenTools.defaultFontPixelWidth * 16) height: Math.min(parent.height * 0.25, ScreenTools.defaultFontPixelWidth * 16)
visible: (_virtualJoystick ? _virtualJoystick.value : false) && !(_activeVehicle ? _activeVehicle.highLatencyLink : false) visible: _virtualJoystickEnabled && !QGroundControl.videoManager.fullScreen && !(activeVehicle ? activeVehicle.highLatencyLink : false)
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.bottomMargin: parentToolInsets.leftEdgeBottomInset + ScreenTools.defaultFontPixelHeight * 2 anchors.bottomMargin: parentToolInsets.leftEdgeBottomInset + ScreenTools.defaultFontPixelHeight * 2
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
source: "qrc:/qml/VirtualJoystick.qml" source: "qrc:/qml/VirtualJoystick.qml"
active: (_virtualJoystick ? _virtualJoystick.value : false) && !(_activeVehicle ? _activeVehicle.highLatencyLink : false) active: _virtualJoystickEnabled && !(activeVehicle ? activeVehicle.highLatencyLink : false)
property bool centralizeThrottle: _virtualJoystickCentralized ? _virtualJoystickCentralized.value : false property bool autoCenterThrottle: QGroundControl.settingsManager.appSettings.virtualJoystickAutoCenterThrottle.rawValue
property var parentToolInsets: _totalToolInsets
property Fact _virtualJoystick: QGroundControl.settingsManager.appSettings.virtualJoystick property bool _virtualJoystickEnabled: QGroundControl.settingsManager.appSettings.virtualJoystick.rawValue
property Fact _virtualJoystickCentralized: QGroundControl.settingsManager.appSettings.virtualJoystickCentralized
} }
FlyViewToolStrip { FlyViewToolStrip {
......
...@@ -17,7 +17,10 @@ import QGroundControl.Palette 1.0 ...@@ -17,7 +17,10 @@ import QGroundControl.Palette 1.0
import QGroundControl.Vehicle 1.0 import QGroundControl.Vehicle 1.0
Item { Item {
//property bool centralizeThrottle - Must be passed in from loader // The following properties must be passed in from the Loader
// property bool autoCenterThrottle - true: throttle will snap back to center when released
property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
Timer { Timer {
interval: 40 // 25Hz, same as real joystick rate interval: 40 // 25Hz, same as real joystick rate
...@@ -25,7 +28,7 @@ Item { ...@@ -25,7 +28,7 @@ Item {
repeat: true repeat: true
onTriggered: { onTriggered: {
if (activeVehicle) { if (activeVehicle) {
activeVehicle.virtualTabletJoystickValue(rightStick.xAxis, rightStick.yAxis, leftStick.xAxis, leftStick.yAxis) activeVehicle.virtualTabletJoystickValue(rightStick.xAxis, -rightStick.yAxis, leftStick.xAxis, leftStick.yAxis)
} }
} }
} }
...@@ -38,8 +41,8 @@ Item { ...@@ -38,8 +41,8 @@ Item {
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
width: parent.height width: parent.height
height: parent.height height: parent.height
yAxisThrottle: true yAxisPositiveRangeOnly: _activeVehicle && !_activeVehicle.rover && !_activeVehicle.sub
yAxisThrottleCentered: centralizeThrottle yAxisReCenter: autoCenterThrottle
} }
JoystickThumbPad { JoystickThumbPad {
......
...@@ -8,25 +8,28 @@ import QGroundControl.ScreenTools 1.0 ...@@ -8,25 +8,28 @@ import QGroundControl.ScreenTools 1.0
Item { Item {
id: _joyRoot id: _joyRoot
property alias lightColors: mapPal.lightColors ///< true: use light colors from QGCMapPalette for drawing
property real xAxis: 0 ///< Value range [-1,1], negative values left stick, positive values right stick property real xAxis: 0 ///< Value range [-1,1], negative values left stick, positive values right stick
property real yAxis: 0 ///< Value range [-1,1], negative values up stick, positive values down stick property real yAxis: 0 ///< Value range [-1,1], negative values down stick, positive values up stick
property bool yAxisThrottle: false ///< true: yAxis used for throttle, range [1,0], positive value are stick up property bool yAxisPositiveRangeOnly: false ///< true: value range [0,1], false: value range [-1,1]
property bool yAxisThrottleCentered: false ///< false: center yAxis in throttle for reverser and forward property bool yAxisReCenter: true ///< true: snaps back to center on release, false: stays at current position on release
property real xPositionDelta: 0 ///< Amount to move the control on x axis property real xPositionDelta: 0 ///< Amount to move the control on x axis
property real yPositionDelta: 0 ///< Amount to move the control on y axis property real yPositionDelta: 0 ///< Amount to move the control on y axis
property bool springYToCenter:true ///< true: Spring Y to center on release
property real _centerXY: width / 2 property real _centerXY: width / 2
property bool _processTouchPoints: false property bool _processTouchPoints: false
property real stickPositionX: _centerXY
property real stickPositionY: yAxisThrottleCentered ? _centerXY : height
property color _fgColor: QGroundControl.globalPalette.text property color _fgColor: QGroundControl.globalPalette.text
property color _bgColor: QGroundControl.globalPalette.window property color _bgColor: QGroundControl.globalPalette.window
property real stickPositionX: _centerXY
property real stickPositionY: yAxisReCenter ? _centerXY : height
QGCMapPalette { id: mapPal }
onWidthChanged: calculateXAxis() onWidthChanged: calculateXAxis()
onStickPositionXChanged: calculateXAxis() onStickPositionXChanged: calculateXAxis()
onHeightChanged: calculateYAxis() onHeightChanged: calculateYAxis()
onStickPositionYChanged: calculateYAxis() onStickPositionYChanged: calculateYAxis()
onYAxisPositiveRangeOnlyChanged: calculateYAxis()
function calculateXAxis() { function calculateXAxis() {
if(!_joyRoot.visible) { if(!_joyRoot.visible) {
...@@ -42,13 +45,13 @@ Item { ...@@ -42,13 +45,13 @@ Item {
if(!_joyRoot.visible) { if(!_joyRoot.visible) {
return; return;
} }
var yAxisTemp = stickPositionY / height var fullRange = yAxisPositiveRangeOnly ? 1 : 2
yAxisTemp *= 2.0 var pctUp = 1.0 - (stickPositionY / height)
yAxisTemp -= 1.0 var rangeUp = pctUp * fullRange
if (yAxisThrottle) { if (!yAxisPositiveRangeOnly) {
yAxisTemp = ((yAxisTemp * -1.0) / 2.0) + 0.5 rangeUp -= 1
} }
yAxis = yAxisTemp yAxis = rangeUp
} }
function reCenter() { function reCenter() {
...@@ -58,9 +61,9 @@ Item { ...@@ -58,9 +61,9 @@ Item {
xPositionDelta = 0 xPositionDelta = 0
yPositionDelta = 0 yPositionDelta = 0
// Center sticks // Re-Center sticks as needed
stickPositionX = _centerXY stickPositionX = _centerXY
if (yAxisThrottleCentered) { if (yAxisReCenter) {
stickPositionY = _centerXY stickPositionY = _centerXY
} }
} }
...@@ -68,7 +71,7 @@ Item { ...@@ -68,7 +71,7 @@ Item {
function thumbDown(touchPoints) { function thumbDown(touchPoints) {
// Position the control around the initial thumb position // Position the control around the initial thumb position
xPositionDelta = touchPoints[0].x - _centerXY xPositionDelta = touchPoints[0].x - _centerXY
if (yAxisThrottle) { if (yAxisPositiveRangeOnly) {
yPositionDelta = touchPoints[0].y - stickPositionY yPositionDelta = touchPoints[0].y - stickPositionY
} else { } else {
yPositionDelta = touchPoints[0].y - _centerXY yPositionDelta = touchPoints[0].y - _centerXY
...@@ -118,7 +121,7 @@ Item { ...@@ -118,7 +121,7 @@ Item {
QGCColoredImage { QGCColoredImage {
color: _fgColor color: _fgColor
visible: yAxisThrottle visible: yAxisPositiveRangeOnly
height: ScreenTools.defaultFontPixelHeight height: ScreenTools.defaultFontPixelHeight
width: height width: height
sourceSize.height: height sourceSize.height: height
...@@ -132,7 +135,7 @@ Item { ...@@ -132,7 +135,7 @@ Item {
QGCColoredImage { QGCColoredImage {
color: _fgColor color: _fgColor
visible: yAxisThrottle visible: yAxisPositiveRangeOnly
height: ScreenTools.defaultFontPixelHeight height: ScreenTools.defaultFontPixelHeight
width: height width: height
sourceSize.height: height sourceSize.height: height
...@@ -146,7 +149,7 @@ Item { ...@@ -146,7 +149,7 @@ Item {
QGCColoredImage { QGCColoredImage {
color: _fgColor color: _fgColor
visible: yAxisThrottle visible: yAxisPositiveRangeOnly
height: ScreenTools.defaultFontPixelHeight height: ScreenTools.defaultFontPixelHeight
width: height width: height
sourceSize.height: height sourceSize.height: height
...@@ -160,7 +163,7 @@ Item { ...@@ -160,7 +163,7 @@ Item {
QGCColoredImage { QGCColoredImage {
color: _fgColor color: _fgColor
visible: yAxisThrottle visible: yAxisPositiveRangeOnly
height: ScreenTools.defaultFontPixelHeight height: ScreenTools.defaultFontPixelHeight
width: height width: height
sourceSize.height: height sourceSize.height: height
...@@ -207,9 +210,6 @@ Item { ...@@ -207,9 +210,6 @@ Item {
maximumTouchPoints: 1 maximumTouchPoints: 1
touchPoints: [ TouchPoint { id: touchPoint } ] touchPoints: [ TouchPoint { id: touchPoint } ]
onPressed: _joyRoot.thumbDown(touchPoints) onPressed: _joyRoot.thumbDown(touchPoints)
onReleased: { onReleased: _joyRoot.reCenter()
if(springYToCenter)
_joyRoot.reCenter()
}
} }
} }
...@@ -115,9 +115,9 @@ ...@@ -115,9 +115,9 @@
"defaultValue": false "defaultValue": false
}, },
{ {
"name": "virtualJoystickCentralized", "name": "virtualJoystickAutoCenterThrottle",
"shortDescription": "Set virtual joystick to be centralize throttle (spring-loaded).", "shortDescription": "Auto-Center Throttle",
"longDescription": "If this option is enabled the virtual joystick throttle stick will be centralized.", "longDescription": "If enabled the throttle stick will snap back to center when released.",
"type": "bool", "type": "bool",
"defaultValue": false "defaultValue": false
}, },
......
...@@ -39,6 +39,15 @@ DECLARE_SETTINGGROUP(App, "") ...@@ -39,6 +39,15 @@ DECLARE_SETTINGGROUP(App, "")
qmlRegisterUncreatableType<AppSettings>("QGroundControl.SettingsManager", 1, 0, "AppSettings", "Reference only"); qmlRegisterUncreatableType<AppSettings>("QGroundControl.SettingsManager", 1, 0, "AppSettings", "Reference only");
QGCPalette::setGlobalTheme(indoorPalette()->rawValue().toBool() ? QGCPalette::Dark : QGCPalette::Light); QGCPalette::setGlobalTheme(indoorPalette()->rawValue().toBool() ? QGCPalette::Dark : QGCPalette::Light);
// virtualJoystickCentralized -> virtualJoystickAutoCenterThrottle
QSettings settings;
settings.beginGroup(_settingsGroup);
QString deprecatedVirtualJoystickCentralizedKey("virtualJoystickCentralized");
if (settings.contains(deprecatedVirtualJoystickCentralizedKey)) {
settings.setValue(virtualJoystickAutoCenterThrottleName, settings.value(deprecatedVirtualJoystickCentralizedKey));
settings.remove(deprecatedVirtualJoystickCentralizedKey);
}
// Instantiate savePath so we can check for override and setup default path if needed // Instantiate savePath so we can check for override and setup default path if needed
SettingsFact* savePathFact = qobject_cast<SettingsFact*>(savePath()); SettingsFact* savePathFact = qobject_cast<SettingsFact*>(savePath());
...@@ -85,7 +94,7 @@ DECLARE_SETTINGSFACT(AppSettings, telemetrySaveNotArmed) ...@@ -85,7 +94,7 @@ DECLARE_SETTINGSFACT(AppSettings, telemetrySaveNotArmed)
DECLARE_SETTINGSFACT(AppSettings, audioMuted) DECLARE_SETTINGSFACT(AppSettings, audioMuted)
DECLARE_SETTINGSFACT(AppSettings, checkInternet) DECLARE_SETTINGSFACT(AppSettings, checkInternet)
DECLARE_SETTINGSFACT(AppSettings, virtualJoystick) DECLARE_SETTINGSFACT(AppSettings, virtualJoystick)
DECLARE_SETTINGSFACT(AppSettings, virtualJoystickCentralized) DECLARE_SETTINGSFACT(AppSettings, virtualJoystickAutoCenterThrottle)
DECLARE_SETTINGSFACT(AppSettings, appFontPointSize) DECLARE_SETTINGSFACT(AppSettings, appFontPointSize)
DECLARE_SETTINGSFACT(AppSettings, showLargeCompass) DECLARE_SETTINGSFACT(AppSettings, showLargeCompass)
DECLARE_SETTINGSFACT(AppSettings, savePath) DECLARE_SETTINGSFACT(AppSettings, savePath)
......
...@@ -39,7 +39,7 @@ public: ...@@ -39,7 +39,7 @@ public:
DEFINE_SETTINGFACT(audioMuted) DEFINE_SETTINGFACT(audioMuted)
DEFINE_SETTINGFACT(checkInternet) DEFINE_SETTINGFACT(checkInternet)
DEFINE_SETTINGFACT(virtualJoystick) DEFINE_SETTINGFACT(virtualJoystick)
DEFINE_SETTINGFACT(virtualJoystickCentralized) DEFINE_SETTINGFACT(virtualJoystickAutoCenterThrottle)
DEFINE_SETTINGFACT(appFontPointSize) DEFINE_SETTINGFACT(appFontPointSize)
DEFINE_SETTINGFACT(indoorPalette) DEFINE_SETTINGFACT(indoorPalette)
DEFINE_SETTINGFACT(showLargeCompass) DEFINE_SETTINGFACT(showLargeCompass)
......
...@@ -35,6 +35,9 @@ Rectangle { ...@@ -35,6 +35,9 @@ Rectangle {
property Fact _appFontPointSize: QGroundControl.settingsManager.appSettings.appFontPointSize property Fact _appFontPointSize: QGroundControl.settingsManager.appSettings.appFontPointSize
property Fact _userBrandImageIndoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageIndoor property Fact _userBrandImageIndoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageIndoor
property Fact _userBrandImageOutdoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageOutdoor property Fact _userBrandImageOutdoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageOutdoor
property Fact _virtualJoystick: QGroundControl.settingsManager.appSettings.virtualJoystick
property Fact _virtualJoystickAutoCenterThrottle: QGroundControl.settingsManager.appSettings.virtualJoystickAutoCenterThrottle
property real _labelWidth: ScreenTools.defaultFontPixelWidth * 20 property real _labelWidth: ScreenTools.defaultFontPixelWidth * 20
property real _comboFieldWidth: ScreenTools.defaultFontPixelWidth * 30 property real _comboFieldWidth: ScreenTools.defaultFontPixelWidth * 30
property real _valueFieldWidth: ScreenTools.defaultFontPixelWidth * 10 property real _valueFieldWidth: ScreenTools.defaultFontPixelWidth * 10
...@@ -512,22 +515,23 @@ Rectangle { ...@@ -512,22 +515,23 @@ Rectangle {
property Fact _showLogReplayStatusBar: QGroundControl.settingsManager.flyViewSettings.showLogReplayStatusBar property Fact _showLogReplayStatusBar: QGroundControl.settingsManager.flyViewSettings.showLogReplayStatusBar
} }
RowLayout {
spacing: ScreenTools.defaultFontPixelWidth
FactCheckBox { FactCheckBox {
text: qsTr("Virtual Joystick") text: qsTr("Virtual Joystick")
visible: _virtualJoystick.visible visible: _virtualJoystick.visible
fact: _virtualJoystick fact: _virtualJoystick
property Fact _virtualJoystick: QGroundControl.settingsManager.appSettings.virtualJoystick
} }
FactCheckBox { FactCheckBox {
text: qsTr("Auto-Center throttle") text: qsTr("Auto-Center Throttle")
visible: _virtualJoystickCentralized.visible && activeVehicle && (activeVehicle.sub || activeVehicle.rover) visible: _virtualJoystickAutoCenterThrottle.visible
fact: _virtualJoystickCentralized enabled: _virtualJoystick.rawValue
Layout.leftMargin: _margins fact: _virtualJoystickAutoCenterThrottle
property Fact _virtualJoystickCentralized: QGroundControl.settingsManager.appSettings.virtualJoystickCentralized
} }
}
FactCheckBox { FactCheckBox {
text: qsTr("Use Vertical Instrument Panel") text: qsTr("Use Vertical Instrument Panel")
visible: _alternateInstrumentPanel.visible visible: _alternateInstrumentPanel.visible
......
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