Commit e04a9d32 authored by DonLakeFlyer's avatar DonLakeFlyer

Pile of bug fixes

parent 861f44f3
......@@ -66,7 +66,6 @@
<file alias="QGroundControl/Controls/MissionItemIndexLabel.qml">src/QmlControls/MissionItemIndexLabel.qml</file>
<file alias="QGroundControl/Controls/MissionItemMapVisual.qml">src/PlanView/MissionItemMapVisual.qml</file>
<file alias="QGroundControl/Controls/MissionItemStatus.qml">src/PlanView/MissionItemStatus.qml</file>
<file alias="QGroundControl/Controls/MissionSettingsMapVisual.qml">src/PlanView/MissionSettingsMapVisual.qml</file>
<file alias="QGroundControl/Controls/ModeSwitchDisplay.qml">src/QmlControls/ModeSwitchDisplay.qml</file>
<file alias="QGroundControl/Controls/MultiRotorMotorDisplay.qml">src/QmlControls/MultiRotorMotorDisplay.qml</file>
<file alias="QGroundControl/Controls/OfflineMapButton.qml">src/QmlControls/OfflineMapButton.qml</file>
......
......@@ -9,6 +9,12 @@
"comment": "MAV_CMD_NAV_WAYPOINT",
"paramRemove": "2"
},
{
"id": 22,
"comment": "MAV_CMD_NAV_TAKEOFF",
"specifiesCoordinate": false,
"specifiesAltitudeOnly": true
},
{
"id": 84,
"comment": "MAV_CMD_NAV_VTOL_TAKEOFF",
......
......@@ -14,12 +14,6 @@
"comment": "MAV_CMD_NAV_LAND",
"paramRemove": "4"
},
{
"id": 22,
"comment": "MAV_CMD_NAV_TAKEOFF",
"specifiesCoordinate": false,
"specifiesAltitudeOnly": true
},
{
"id": 82,
"comment": "MAV_CMD_NAV_SPLINE_WAYPOINT",
......
......@@ -30,11 +30,9 @@
"paramRemove": "1,4"
},
{
"id": 22,
"comment": "MAV_CMD_NAV_TAKEOFF",
"specifiesCoordinate": false,
"specifiesAltitudeOnly": true,
"paramRemove": "1,2,3,4"
"id": 22,
"comment": "MAV_CMD_NAV_TAKEOFF",
"paramRemove": "1,2,3,4"
},
{
"id": 31,
......
......@@ -10,9 +10,9 @@
"paramRemove": "2,3,4"
},
{
"id": 21,
"comment": "MAV_CMD_NAV_LAND",
"paramRemove": "1"
"id": 21,
"comment": "MAV_CMD_NAV_LAND",
"paramRemove": "1"
}
]
}
......@@ -21,6 +21,11 @@
"comment": "MAV_CMD_NAV_LOITER_TIME",
"description": "Travel to a position and Loiter for an amount of time.",
"paramRemove": "3,4"
},
{
"id": 22,
"comment": "MAV_CMD_NAV_TAKEOFF",
"paramRemove": "1"
}
]
}
......@@ -521,3 +521,7 @@ void FixedWingLandingComplexItem::_setDirty(void)
setDirty(true);
}
void FixedWingLandingComplexItem::applyNewAltitude(double newAltitude)
{
_loiterAltitudeFact.setRawValue(newAltitude);
}
......@@ -76,6 +76,7 @@ public:
double specifiedFlightSpeed (void) final { return std::numeric_limits<double>::quiet_NaN(); }
double specifiedGimbalYaw (void) final { return std::numeric_limits<double>::quiet_NaN(); }
void appendMissionItems (QList<MissionItem*>& items, QObject* missionItemParent) final;
void applyNewAltitude (double newAltitude) final;
bool coordinateHasRelativeAltitude (void) const final { return true; }
bool exitCoordinateHasRelativeAltitude (void) const final { return true; }
......
......@@ -1597,3 +1597,13 @@ QGeoCoordinate MissionController::plannedHomePosition(void) const
return QGeoCoordinate();
}
}
void MissionController::applyDefaultMissionAltitude(void)
{
double defaultAltitude = _appSettings->defaultMissionItemAltitude()->rawValue().toDouble();
for (int i=1; i<_visualItems->count(); i++) {
VisualMissionItem* item = _visualItems->value<VisualMissionItem*>(i);
item->applyNewAltitude(defaultAltitude);
}
}
......@@ -93,6 +93,9 @@ public:
Q_INVOKABLE void resumeMission(int resumeIndex);
/// Updates the altitudes of the items in the current mission to the new default altitude
Q_INVOKABLE void applyDefaultMissionAltitude(void);
/// Loads the mission items from the specified file
/// @param[in] vehicle Vehicle we are loading items for
/// @param[in] filename File to load from
......
......@@ -146,7 +146,7 @@ double MissionSettingsItem::greatestDistanceTo(const QGeoCoordinate &other) cons
bool MissionSettingsItem::specifiesCoordinate(void) const
{
return false;
return true;
}
void MissionSettingsItem::appendMissionItems(QList<MissionItem*>& items, QObject* missionItemParent)
......
......@@ -62,7 +62,7 @@ public:
int lastSequenceNumber (void) const final;
bool load (const QJsonObject& complexObject, int sequenceNumber, QString& errorString) final;
double greatestDistanceTo (const QGeoCoordinate &other) const final;
QString mapVisualQML (void) const final { return QStringLiteral("MissionSettingsMapVisual.qml"); }
QString mapVisualQML (void) const final { return QStringLiteral("SimpleItemMapVisual.qml"); }
// Overrides from VisualMissionItem
......@@ -80,6 +80,7 @@ public:
double specifiedFlightSpeed (void) final;
double specifiedGimbalYaw (void) final;
void appendMissionItems (QList<MissionItem*>& items, QObject* missionItemParent) final;
void applyNewAltitude (double newAltitude) final { Q_UNUSED(newAltitude); /* no action */ }
bool coordinateHasRelativeAltitude (void) const final { return true; }
bool exitCoordinateHasRelativeAltitude (void) const final { return true; }
......
......@@ -728,3 +728,21 @@ void SimpleMissionItem::appendMissionItems(QList<MissionItem*>& items, QObject*
_cameraSection->appendMissionItems(items, missionItemParent, seqNum);
}
void SimpleMissionItem::applyNewAltitude(double newAltitude)
{
MAV_CMD command = (MAV_CMD)this->command();
const MissionCommandUIInfo* uiInfo = _commandTree->getUIInfo(_vehicle, command);
if (uiInfo->specifiesCoordinate() || uiInfo->specifiesAltitudeOnly()) {
switch ((MAV_CMD)this->command()) {
case MAV_CMD_NAV_LAND:
case MAV_CMD_NAV_VTOL_LAND:
// Leave alone
break;
default:
_missionItem.setParam7(newAltitude);
break;
}
}
}
......@@ -99,6 +99,7 @@ public:
double specifiedGimbalYaw (void) final;
QString mapVisualQML (void) const final { return QStringLiteral("SimpleItemMapVisual.qml"); }
void appendMissionItems (QList<MissionItem*>& items, QObject* missionItemParent) final;
void applyNewAltitude (double newAltitude) final;
bool coordinateHasRelativeAltitude (void) const final { return _missionItem.relativeAltitude(); }
bool exitCoordinateHasRelativeAltitude (void) const final { return coordinateHasRelativeAltitude(); }
......
......@@ -1108,3 +1108,8 @@ double SurveyMissionItem::_turnaroundDistance(void) const
{
return _turnaroundDistFact.rawValue().toDouble();
}
void SurveyMissionItem::applyNewAltitude(double newAltitude)
{
_gridAltitudeFact.setRawValue(newAltitude);
}
......@@ -126,6 +126,7 @@ public:
double specifiedGimbalYaw (void) final { return std::numeric_limits<double>::quiet_NaN(); }
void appendMissionItems (QList<MissionItem*>& items, QObject* missionItemParent) final;
void setMissionFlightStatus (MissionController::MissionFlightStatus_t& missionFlightStatus) final;
void applyNewAltitude (double newAltitude) final;
bool coordinateHasRelativeAltitude (void) const final { return _gridAltitudeRelativeFact.rawValue().toBool(); }
bool exitCoordinateHasRelativeAltitude (void) const final { return _gridAltitudeRelativeFact.rawValue().toBool(); }
......
......@@ -138,6 +138,9 @@ public:
/// @param missionItemParent Parent object for newly created MissionItems
virtual void appendMissionItems(QList<MissionItem*>& items, QObject* missionItemParent) = 0;
/// Adjust the altitude of the item if appropriate to the new altitude.
virtual void applyNewAltitude(double newAltitude) = 0;
double missionGimbalYaw (void) const { return _missionGimbalYaw; }
double missionVehicleYaw (void) const { return _missionVehicleYaw; }
bool showMissionGimbalYaw(void) const { return !qIsNaN(_missionGimbalYaw); }
......
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtLocation 5.3
import QtPositioning 5.3
import QGroundControl 1.0
import QGroundControl.ScreenTools 1.0
import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0
import QGroundControl.FlightMap 1.0
/// Mission Settings map visuals
Item {
id: _root
property var map ///< Map control to place item in
signal clicked(int sequenceNumber)
property var _missionItem: object
property var _itemVisual
property var _dragArea
property bool _itemVisualShowing: false
property bool _dragAreaShowing: false
function hideItemVisuals() {
if (_itemVisualShowing) {
_itemVisual.destroy()
_itemVisualShowing = false
}
}
function showItemVisuals() {
if (!_itemVisualShowing) {
_itemVisual = indicatorComponent.createObject(map)
map.addMapItem(_itemVisual)
_itemVisualShowing = true
}
}
function hideDragArea() {
if (_dragAreaShowing) {
_dragArea.destroy()
_dragAreaShowing = false
}
}
function showDragArea() {
if (!_dragAreaShowing && _missionItem.specifiesCoordinate) {
_dragArea = dragAreaComponent.createObject(map)
_dragAreaShowing = true
}
}
Component.onCompleted: {
showItemVisuals()
if (_missionItem.isCurrentItem) {
showDragArea()
}
}
Component.onDestruction: {
hideDragArea()
hideItemVisuals()
}
Connections {
target: _missionItem
onIsCurrentItemChanged: {
if (_missionItem.isCurrentItem) {
showDragArea()
} else {
hideDragArea()
}
}
}
// Control which is used to drag items
Component {
id: dragAreaComponent
MissionItemIndicatorDrag {
itemIndicator: _itemVisual
itemCoordinate: _missionItem.coordinate
onItemCoordinateChanged: _missionItem.coordinate = itemCoordinate
}
}
Component {
id: indicatorComponent
MissionItemIndicator {
coordinate: _missionItem.coordinate
visible: coordinate.isValid
z: QGroundControl.zOrderMapItems
missionItem: _missionItem
onClicked: _root.clicked(_missionItem.sequenceNumber)
// These are the non-coordinate child mission items attached to this item
Row {
anchors.top: parent.top
anchors.left: parent.right
Repeater {
model: _missionItem.childItems
delegate: MissionItemIndexLabel {
label: object.abbreviation.length === 0 ? object.sequenceNumber : object.abbreviation.charAt(0)
checked: object.isCurrentItem
z: 2
specifiesCoordinate: false
onClicked: _root.Clicked(object.sequenceNumber)
}
}
}
}
}
}
......@@ -95,6 +95,29 @@ QGCView {
mapRallyPointController: rallyPointController
}
Connections {
target: QGroundControl.settingsManager.appSettings.defaultMissionItemAltitude
onRawValueChanged: {
if (_visualItems.count > 1) {
_qgcView.showDialog(applyNewAltitude, qsTr("Apply new alititude"), showDialogDefaultWidth, StandardButton.Yes | StandardButton.No)
}
}
}
Component {
id: applyNewAltitude
QGCViewMessage {
message: qsTr("You have changed the default altitude for mission items. Would you like to apply that altitude to all the items in the current mission?")
function accept() {
hideDialog()
missionController.applyDefaultMissionAltitude()
}
}
}
MissionController {
id: missionController
......
......@@ -13,14 +13,15 @@ MouseArea {
anchors.bottomMargin: fillItem ? -_touchMarginVertical : 0
anchors.fill: fillItem ? fillItem : undefined
property var fillItem
property var fillItem
property bool debugMobile: false ///< Allows you to debug mobile sizing on desktop builds
property real _itemWidth: fillItem ? fillItem.width : width
property real _itemHeight: fillItem ? fillItem.height : height
property real _touchWidth: Math.max(_itemWidth, ScreenTools.minTouchPixels)
property real _touchHeight: Math.max(_itemHeight, ScreenTools.minTouchPixels)
property real _touchMarginHorizontal: ScreenTools.isMobile ? (_touchWidth - _itemWidth) / 2 : 0
property real _touchMarginVertical: ScreenTools.isMobile ? (_touchHeight - _itemHeight) / 2 : 0
property real _touchMarginHorizontal: debugMobile || ScreenTools.isMobile ? (_touchWidth - _itemWidth) / 2 : 0
property real _touchMarginVertical: debugMobile || ScreenTools.isMobile ? (_touchHeight - _itemHeight) / 2 : 0
Rectangle {
anchors.fill: parent
......
......@@ -9,7 +9,7 @@ import QGroundControl.Palette 1.0
Rectangle {
id: _root
implicitWidth: label.contentWidth + (_diameter * 2.5) + (_border * 4)
implicitHeight: Math.max(ScreenTools.isMobile ? ScreenTools.minTouchPixels : 0, label.height * 2.5)
implicitHeight: label.height * 2.5
radius: height /2
color: qgcPal.text
......@@ -57,10 +57,10 @@ Rectangle {
}
MouseArea {
QGCMouseArea {
id: sliderDragArea
anchors.leftMargin: -ScreenTools.defaultFontPixelWidth * 15
anchors.fill: slider
fillItem: slider
drag.target: slider
drag.axis: Drag.XAxis
drag.minimumX: _border
......@@ -71,6 +71,8 @@ Rectangle {
property bool dragActive: drag.active
property real _dragOffset: 1
Component.onCompleted: console.log(height, ScreenTools.minTouchPixels)
onPressed: {
mouse.x
}
......
......@@ -43,7 +43,9 @@ Rectangle {
Component.onCompleted: recalcShowOptionalElements()
onMaxHeightChanged: recalcShowOptionalElements()
onMaxHeightChanged: recalcShowOptionalElements()
onModelChanged: recalcShowOptionalElements()
onButtonVisibleChanged: recalcShowOptionalElements()
Connections {
target: ScreenTools
......
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