Browse Source

Add Center tool support

- Follow Vehicle
- Center map on vehicle
QGC4.4
Don Gagne 10 years ago
parent
commit
a6f9d72224
  1. 78
      src/FlightDisplay/FlightDisplayView.qml

78
src/FlightDisplay/FlightDisplayView.qml

@ -70,6 +70,10 @@ Item {
property bool _showMap: getBool(QGroundControl.flightMapSettings.loadMapSetting(flightMap.mapName, _showMapBackgroundKey, "1")) property bool _showMap: getBool(QGroundControl.flightMapSettings.loadMapSetting(flightMap.mapName, _showMapBackgroundKey, "1"))
ExclusiveGroup {
id: _dropButtonsExclusiveGroup
}
// Validate _showMap setting // Validate _showMap setting
Component.onCompleted: _setShowMap(_showMap) Component.onCompleted: _setShowMap(_showMap)
@ -90,10 +94,25 @@ Item {
id: flightMap id: flightMap
anchors.fill: parent anchors.fill: parent
mapName: _mapName mapName: _mapName
latitude: parent._latitude
longitude: parent._longitude
visible: _showMap visible: _showMap
property real rootLatitude: root._latitude
property real rootLongitude: root._longitude
Component.onCompleted: updateMapPosition(true /* force */)
onRootLatitudeChanged: updateMapPosition(false /* force */)
onRootLongitudeChanged: updateMapPosition(false /* force */)
function updateMapPosition(force) {
if (_followVehicle || force) {
latitude = root._latitude
longitude = root._longitude
}
}
property bool _followVehicle: true
// Home position // Home position
MissionItemIndicator { MissionItemIndicator {
label: "H" label: "H"
@ -145,17 +164,18 @@ Item {
} }
QGCCompassWidget { QGCCompassWidget {
x: ScreenTools.defaultFontPixelSize * (7.1) anchors.margins: ScreenTools.defaultFontPixelHeight
y: ScreenTools.defaultFontPixelSize * (0.42) anchors.left: parent.left
anchors.top: parent.top
size: ScreenTools.defaultFontPixelSize * (13.3) size: ScreenTools.defaultFontPixelSize * (13.3)
heading: _heading heading: _heading
active: multiVehicleManager.activeVehicleAvailable active: multiVehicleManager.activeVehicleAvailable
} }
QGCAttitudeWidget { QGCAttitudeWidget {
anchors.rightMargin: ScreenTools.defaultFontPixelSize * (7.1) anchors.margins: ScreenTools.defaultFontPixelHeight
anchors.right: parent.right anchors.left: parent.left
y: ScreenTools.defaultFontPixelSize * (0.42) anchors.bottom: parent.bottom
size: ScreenTools.defaultFontPixelSize * (13.3) size: ScreenTools.defaultFontPixelSize * (13.3)
rollAngle: _roll rollAngle: _roll
pitchAngle: _pitch pitchAngle: _pitch
@ -163,6 +183,49 @@ Item {
} }
DropButton { DropButton {
id: centerMapDropButton
anchors.rightMargin: ScreenTools.defaultFontPixelHeight
anchors.right: mapTypeButton.left
anchors.top: mapTypeButton.top
dropDirection: dropDown
buttonImage: "/qmlimages/MapCenter.svg"
viewportMargins: ScreenTools.defaultFontPixelWidth / 2
exclusiveGroup: _dropButtonsExclusiveGroup
dropDownComponent: Component {
Row {
spacing: ScreenTools.defaultFontPixelWidth
QGCCheckBox {
id: followVehicleCheckBox
text: "Follow Vehicle"
checked: flightMap._followVehicle
anchors.baseline: centerMapButton.baseline
onClicked: {
centerMapDropButton.hideDropDown()
flightMap._followVehicle = !flightMap._followVehicle
}
}
QGCButton {
id: centerMapButton
text: "Center map on Vehicle"
enabled: _activeVehicle && !followVehicleCheckBox.checked
property var activeVehicle: multiVehicleManager.activeVehicle
onClicked: {
centerMapDropButton.hideDropDown()
flightMap.latitude = activeVehicle.latitude
flightMap.longitude = activeVehicle.longitude
}
}
}
}
}
DropButton {
id: mapTypeButton id: mapTypeButton
anchors.margins: ScreenTools.defaultFontPixelHeight anchors.margins: ScreenTools.defaultFontPixelHeight
anchors.top: parent.top anchors.top: parent.top
@ -170,6 +233,7 @@ Item {
dropDirection: dropDown dropDirection: dropDown
buttonImage: "/qmlimages/MapType.svg" buttonImage: "/qmlimages/MapType.svg"
viewportMargins: ScreenTools.defaultFontPixelWidth / 2 viewportMargins: ScreenTools.defaultFontPixelWidth / 2
exclusiveGroup: _dropButtonsExclusiveGroup
dropDownComponent: Component { dropDownComponent: Component {
Row { Row {

Loading…
Cancel
Save