diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc
index 9145510281649a624f53efc31b41ca6716ddf560..e669249c141bbfb5703957859c40454cd696fa3e 100644
--- a/qgroundcontrol.qrc
+++ b/qgroundcontrol.qrc
@@ -227,6 +227,7 @@
src/WimaView/CoordinateIndicator.qml
src/WimaView/WimaJoinedAreaMapVisual.qml
src/WimaView/WimaCorridorEditor.qml
+ src/FlightMap/MapItems/WimaPlanMapItems.qml
src/Settings/APMMavlinkStreamRate.SettingsGroup.json
diff --git a/src/FlightDisplay/FlightDisplayViewMap.qml b/src/FlightDisplay/FlightDisplayViewMap.qml
index 8cfb22f49d64936d801f8af7bfa2e1d79fe96ec7..c3060d00b0470983741d5b55dca624079a53aba7 100644
--- a/src/FlightDisplay/FlightDisplayViewMap.qml
+++ b/src/FlightDisplay/FlightDisplayViewMap.qml
@@ -209,6 +209,16 @@ FlightMap {
}
}
+ // Add mission items generated by wima planer to the map
+ PlanMapItems {
+ map: flightMap
+ largeMapView: _mainIsMap
+ masterController: masterController
+ isActiveVehicle: _vehicle.active
+
+ property var _vehicle: object
+ }
+
// Add trajectory points to the map
MapItemView {
model: _mainIsMap ? _activeVehicle ? _activeVehicle.trajectoryPoints : 0 : 0
diff --git a/src/FlightMap/MapItems/WimaPlanMapItems.qml b/src/FlightMap/MapItems/WimaPlanMapItems.qml
new file mode 100644
index 0000000000000000000000000000000000000000..e25dcbd1ec2e6421daf40421bbbe7d37964decaa
--- /dev/null
+++ b/src/FlightMap/MapItems/WimaPlanMapItems.qml
@@ -0,0 +1,66 @@
+/****************************************************************************
+ *
+ * (c) 2009-2016 QGROUNDCONTROL PROJECT
+ *
+ * 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 QtLocation 5.3
+import QtPositioning 5.3
+
+import QGroundControl 1.0
+import QGroundControl.Controls 1.0
+import QGroundControl.FlightMap 1.0
+
+// Adds visual items generated by wima planer to the map.
+// Currently only used by Fly View even though it's called PlanMapItems!
+Item {
+ id: _root
+
+ property var map ///< Map control to show items on
+ property bool largeMapView ///< true: map takes up entire view, false: map is in small window
+ property var wimaController value
+
+ property var _map: map
+ property var _missionLineViewComponent
+
+ // Add the mission item visuals to the map
+ Repeater {
+ model: largeMapView ? _missionController.visualItems : 0
+
+ delegate: MissionItemMapVisual {
+ map: _map
+ onClicked: {
+ if (isActiveVehicle) {
+ // Only active vehicle supports click to change current mission item
+ guidedActionsController.confirmAction(guidedActionsController.actionSetWaypoint, Math.max(object.sequenceNumber, 1))
+ }
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ _missionLineViewComponent = missionLineViewComponent.createObject(map)
+ if (_missionLineViewComponent.status === Component.Error)
+ console.log(_missionLineViewComponent.errorString())
+ map.addMapItem(_missionLineViewComponent)
+ }
+
+ Component.onDestruction: {
+ _missionLineViewComponent.destroy()
+ }
+
+ Component {
+ id: missionLineViewComponent
+
+ MapPolyline {
+ line.width: 3
+ line.color: "#be781c" // Hack, can't get palette to work in here
+ z: QGroundControl.zOrderWaypointLines
+ path: _missionController.waypointPath
+ }
+ }
+}
diff --git a/src/Wima/WimaController.cc b/src/Wima/WimaController.cc
index 9b5e9c32a687e46a85e167e537cd8ef4a03258e3..b8ccf8c8d92e318e5283041b50923e7ce8bae98a 100644
--- a/src/Wima/WimaController.cc
+++ b/src/Wima/WimaController.cc
@@ -43,6 +43,11 @@ WimaDataContainer *WimaController::dataContainer() const
return _container;
}
+QmlObjectListModel *WimaController::missionItems()
+{
+ return &_missionItems;
+}
+
void WimaController::setMasterController(PlanMasterController *masterC)
{
_masterController = masterC;
@@ -146,6 +151,7 @@ void WimaController::containerDataValidChanged(bool valid)
}
_localPlanDataValid = false;
_visualItems.clear();
+ _missionItems.clear();
WimaPlanData planData = _container->pull();
// extract list with WimaAreas
@@ -198,14 +204,22 @@ void WimaController::containerDataValidChanged(bool valid)
break;
}
+ QList tempMissionItems = planData.missionItems();
+
+ for (auto missionItem : tempMissionItems)
+ _missionItems.append(const_cast(missionItem)); // losing const qualifier here
+
if (areaCounter == numAreas)
_localPlanDataValid = true;
+
} else {
_localPlanDataValid = false;
- _visualItems.clear();
+ _visualItems.clear();
+ _missionItems.clear();
}
emit visualItemsChanged();
+ emit missionItemsChanged();
}
diff --git a/src/Wima/WimaController.h b/src/Wima/WimaController.h
index 0d056f8b1862dc5b988a395e3a4acbbf1056232c..0d7fc5f0d29d6cb32aa7cb221ed594426029299f 100644
--- a/src/Wima/WimaController.h
+++ b/src/Wima/WimaController.h
@@ -53,7 +53,7 @@ public:
QString fileExtension (void) const { return wimaFileExtension; }
QGCMapPolygon joinedArea (void) const;
WimaDataContainer* dataContainer (void) const;
-
+ QmlObjectListModel* missionItems (void);
// Property setters
@@ -89,6 +89,7 @@ signals:
void currentFileChanged ();
void dataContainerChanged ();
void readyForSaveSendChanged (bool ready);
+ void missionItemsChanged (void);
private slots:
void containerDataValidChanged (bool valid);