Commit 1ff06210 authored by DonLakeFlyer's avatar DonLakeFlyer

Handle case where there is only one complex item

parent 98b317d3
...@@ -49,6 +49,7 @@ QGCView { ...@@ -49,6 +49,7 @@ QGCView {
property var activeVehiclePosition: _activeVehicle ? _activeVehicle.coordinate : QtPositioning.coordinate() property var activeVehiclePosition: _activeVehicle ? _activeVehicle.coordinate : QtPositioning.coordinate()
property bool _lightWidgetBorders: editorMap.isSatelliteMap property bool _lightWidgetBorders: editorMap.isSatelliteMap
property bool _addWaypointOnClick: false property bool _addWaypointOnClick: false
property bool _singleComplexItem: missionController.complexMissionItemNames.length == 1
/// The controller which should be called for load/save, send to/from vehicle calls /// The controller which should be called for load/save, send to/from vehicle calls
property var _syncDropDownController: missionController property var _syncDropDownController: missionController
...@@ -77,6 +78,14 @@ QGCView { ...@@ -77,6 +78,14 @@ QGCView {
} }
} }
function addComplexItem(complexItemName) {
var coordinate = editorMap.center
coordinate.latitude = coordinate.latitude.toFixed(_decimalPlaces)
coordinate.longitude = coordinate.longitude.toFixed(_decimalPlaces)
coordinate.altitude = coordinate.altitude.toFixed(_decimalPlaces)
var sequenceNumber = missionController.insertComplexMissionItem(complexItemName, coordinate, missionController.visualItems.count)
}
property bool _firstMissionLoadComplete: false property bool _firstMissionLoadComplete: false
property bool _firstFenceLoadComplete: false property bool _firstFenceLoadComplete: false
property bool _firstRallyLoadComplete: false property bool _firstRallyLoadComplete: false
...@@ -696,7 +705,7 @@ QGCView { ...@@ -696,7 +705,7 @@ QGCView {
{ {
name: "Pattern", name: "Pattern",
iconSource: "/qmlimages/MapDrawShape.svg", iconSource: "/qmlimages/MapDrawShape.svg",
dropPanelComponent: patternDropPanel dropPanelComponent: _singleComplexItem ? undefined : patternDropPanel
}, },
{ {
name: "Sync", name: "Sync",
...@@ -729,6 +738,11 @@ QGCView { ...@@ -729,6 +738,11 @@ QGCView {
case 0: case 0:
_addWaypointOnClick = checked _addWaypointOnClick = checked
break break
case 1:
if (_singleComplexItem) {
addComplexItem(missionController.complexMissionItemNames[0])
}
break
case 5: case 5:
editorMap.zoomLevel += 0.5 editorMap.zoomLevel += 0.5
break break
...@@ -947,12 +961,7 @@ QGCView { ...@@ -947,12 +961,7 @@ QGCView {
Layout.fillWidth: true Layout.fillWidth: true
onClicked: { onClicked: {
var coordinate = editorMap.center addComplexItem(modelData)
coordinate.latitude = coordinate.latitude.toFixed(_decimalPlaces)
coordinate.longitude = coordinate.longitude.toFixed(_decimalPlaces)
coordinate.altitude = coordinate.altitude.toFixed(_decimalPlaces)
var sequenceNumber = missionController.insertComplexMissionItem(modelData, coordinate, missionController.visualItems.count)
setCurrentItem(sequenceNumber)
dropPanel.hide() dropPanel.hide()
} }
} }
......
...@@ -52,6 +52,8 @@ MissionController::MissionController(QObject *parent) ...@@ -52,6 +52,8 @@ MissionController::MissionController(QObject *parent)
, _firstItemsFromVehicle(false) , _firstItemsFromVehicle(false)
, _missionItemsRequested(false) , _missionItemsRequested(false)
, _queuedSend(false) , _queuedSend(false)
, _surveyMissionItemName(tr("Survey"))
, _fwLandingMissionItemName(tr("Fixed Wing Landing"))
{ {
_missionFlightStatus.maxTelemetryDistance = 0; _missionFlightStatus.maxTelemetryDistance = 0;
_missionFlightStatus.totalDistance = 0; _missionFlightStatus.totalDistance = 0;
...@@ -63,10 +65,6 @@ MissionController::MissionController(QObject *parent) ...@@ -63,10 +65,6 @@ MissionController::MissionController(QObject *parent)
_missionFlightStatus.cruiseSpeed = 0; _missionFlightStatus.cruiseSpeed = 0;
_missionFlightStatus.hoverSpeed = 0; _missionFlightStatus.hoverSpeed = 0;
_missionFlightStatus.gimbalYaw = 0; _missionFlightStatus.gimbalYaw = 0;
_surveyMissionItemName = tr("Survey");
_fwLandingMissionItemName = tr("Fixed Wing Landing");
_complexMissionItemNames << _surveyMissionItemName << _fwLandingMissionItemName;
} }
MissionController::~MissionController() MissionController::~MissionController()
...@@ -1290,6 +1288,8 @@ void MissionController::_activeVehicleSet(void) ...@@ -1290,6 +1288,8 @@ void MissionController::_activeVehicleSet(void)
_activeVehicleHomePositionChanged(_activeVehicle->homePosition()); _activeVehicleHomePositionChanged(_activeVehicle->homePosition());
_activeVehicleHomePositionAvailableChanged(_activeVehicle->homePositionAvailable()); _activeVehicleHomePositionAvailableChanged(_activeVehicle->homePositionAvailable());
emit complexMissionItemNamesChanged();
} }
void MissionController::_activeVehicleHomePositionAvailableChanged(bool homePositionAvailable) void MissionController::_activeVehicleHomePositionAvailableChanged(bool homePositionAvailable)
...@@ -1573,3 +1573,15 @@ void MissionController::removeAllFromVehicle(void) ...@@ -1573,3 +1573,15 @@ void MissionController::removeAllFromVehicle(void)
_missionItemsRequested = true; _missionItemsRequested = true;
_activeVehicle->missionManager()->removeAll(); _activeVehicle->missionManager()->removeAll();
} }
QStringList MissionController::complexMissionItemNames(void) const
{
QStringList complexItems;
complexItems.append(_surveyMissionItemName);
if (_activeVehicle->fixedWing()) {
complexItems.append(_fwLandingMissionItemName);
}
return complexItems;
}
...@@ -49,18 +49,18 @@ public: ...@@ -49,18 +49,18 @@ public:
} MissionFlightStatus_t; } MissionFlightStatus_t;
// Mission settings // Mission settings
Q_PROPERTY(QGeoCoordinate plannedHomePosition READ plannedHomePosition NOTIFY plannedHomePositionChanged) Q_PROPERTY(QGeoCoordinate plannedHomePosition READ plannedHomePosition NOTIFY plannedHomePositionChanged)
Q_PROPERTY(QmlObjectListModel* visualItems READ visualItems NOTIFY visualItemsChanged) Q_PROPERTY(QmlObjectListModel* visualItems READ visualItems NOTIFY visualItemsChanged)
Q_PROPERTY(QmlObjectListModel* waypointLines READ waypointLines NOTIFY waypointLinesChanged) Q_PROPERTY(QmlObjectListModel* waypointLines READ waypointLines NOTIFY waypointLinesChanged)
Q_PROPERTY(QStringList complexMissionItemNames MEMBER _complexMissionItemNames CONSTANT) Q_PROPERTY(QStringList complexMissionItemNames READ complexMissionItemNames NOTIFY complexMissionItemNamesChanged)
Q_PROPERTY(double missionDistance READ missionDistance NOTIFY missionDistanceChanged) Q_PROPERTY(double missionDistance READ missionDistance NOTIFY missionDistanceChanged)
Q_PROPERTY(double missionTime READ missionTime NOTIFY missionTimeChanged) Q_PROPERTY(double missionTime READ missionTime NOTIFY missionTimeChanged)
Q_PROPERTY(double missionHoverDistance READ missionHoverDistance NOTIFY missionHoverDistanceChanged) Q_PROPERTY(double missionHoverDistance READ missionHoverDistance NOTIFY missionHoverDistanceChanged)
Q_PROPERTY(double missionCruiseDistance READ missionCruiseDistance NOTIFY missionCruiseDistanceChanged) Q_PROPERTY(double missionCruiseDistance READ missionCruiseDistance NOTIFY missionCruiseDistanceChanged)
Q_PROPERTY(double missionHoverTime READ missionHoverTime NOTIFY missionHoverTimeChanged) Q_PROPERTY(double missionHoverTime READ missionHoverTime NOTIFY missionHoverTimeChanged)
Q_PROPERTY(double missionCruiseTime READ missionCruiseTime NOTIFY missionCruiseTimeChanged) Q_PROPERTY(double missionCruiseTime READ missionCruiseTime NOTIFY missionCruiseTimeChanged)
Q_PROPERTY(double missionMaxTelemetry READ missionMaxTelemetry NOTIFY missionMaxTelemetryChanged) Q_PROPERTY(double missionMaxTelemetry READ missionMaxTelemetry NOTIFY missionMaxTelemetryChanged)
Q_INVOKABLE void removeMissionItem(int index); Q_INVOKABLE void removeMissionItem(int index);
...@@ -106,9 +106,10 @@ public: ...@@ -106,9 +106,10 @@ public:
// Property accessors // Property accessors
QGeoCoordinate plannedHomePosition (void); QGeoCoordinate plannedHomePosition (void);
QmlObjectListModel* visualItems (void) { return _visualItems; } QmlObjectListModel* visualItems (void) { return _visualItems; }
QmlObjectListModel* waypointLines (void) { return &_waypointLines; } QmlObjectListModel* waypointLines (void) { return &_waypointLines; }
QStringList complexMissionItemNames (void) const;
double missionDistance (void) const { return _missionFlightStatus.totalDistance; } double missionDistance (void) const { return _missionFlightStatus.totalDistance; }
double missionTime (void) const { return _missionFlightStatus.totalTime; } double missionTime (void) const { return _missionFlightStatus.totalTime; }
...@@ -130,6 +131,7 @@ signals: ...@@ -130,6 +131,7 @@ signals:
void missionCruiseDistanceChanged(double missionCruiseDistance); void missionCruiseDistanceChanged(double missionCruiseDistance);
void missionCruiseTimeChanged(void); void missionCruiseTimeChanged(void);
void missionMaxTelemetryChanged(double missionMaxTelemetry); void missionMaxTelemetryChanged(double missionMaxTelemetry);
void complexMissionItemNamesChanged(void);
private slots: private slots:
void _newMissionItemsAvailableFromVehicle(bool removeAllRequested); void _newMissionItemsAvailableFromVehicle(bool removeAllRequested);
...@@ -187,7 +189,6 @@ private: ...@@ -187,7 +189,6 @@ private:
MissionFlightStatus_t _missionFlightStatus; MissionFlightStatus_t _missionFlightStatus;
QString _surveyMissionItemName; QString _surveyMissionItemName;
QString _fwLandingMissionItemName; QString _fwLandingMissionItemName;
QStringList _complexMissionItemNames;
static const char* _settingsGroup; static const char* _settingsGroup;
......
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