diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc
index 148e3fa81f0656f24069cc7b43b58aa672f4e2fa..060ddc440f327b1de93bc318a0620f27e1dd547e 100644
--- a/qgroundcontrol.qrc
+++ b/qgroundcontrol.qrc
@@ -147,6 +147,7 @@
src/PlanView/SurveyMapVisual.qml
src/QmlControls/ToolStrip.qml
src/PlanView/TransectStyleComplexItemStats.qml
+ src/PlanView/TransectStyleMapVisuals.qml
src/QmlControls/VehicleRotationCal.qml
src/QmlControls/VehicleSummaryRow.qml
src/ViewWidgets/ViewWidget.qml
diff --git a/src/MissionManager/QGCMapPolylineVisuals.qml b/src/MissionManager/QGCMapPolylineVisuals.qml
index 20e1fc7778b74f9ec9ea2c2c54d827a561a81617..2fa3993024fdd60e6a91d99e17706992200ec408 100644
--- a/src/MissionManager/QGCMapPolylineVisuals.qml
+++ b/src/MissionManager/QGCMapPolylineVisuals.qml
@@ -20,7 +20,7 @@ import QGroundControl.Controls 1.0
import QGroundControl.FlightMap 1.0
import QGroundControl.ShapeFileHelper 1.0
-/// QGCmapPolyline map visuals
+/// QGCMapPolyline map visuals
Item {
id: _root
@@ -98,6 +98,8 @@ Item {
}
}
+ onVisibleChanged: _polylineComponent.visible = visible
+
Component.onCompleted: {
addVisuals()
if (interactive) {
diff --git a/src/PlanView/CorridorScanMapVisual.qml b/src/PlanView/CorridorScanMapVisual.qml
index ec9e052c60f078f18f5e837cf90e3748dc49546d..d674a61d5f2af79e3b79841f338404525c529056 100644
--- a/src/PlanView/CorridorScanMapVisual.qml
+++ b/src/PlanView/CorridorScanMapVisual.qml
@@ -16,107 +16,18 @@ import QGroundControl 1.0
import QGroundControl.Controls 1.0
/// Corridor Scan Complex Mission Item visuals
-Item {
- id: _root
+TransectStyleMapVisuals {
+ property bool _currentItem: object.isCurrentItem
- property var map ///< Map control to place item in
-
- property var _missionItem: object
- property var _entryCoordinate
- property var _exitCoordinate
- property var _transectLines
-
- signal clicked(int sequenceNumber)
-
- function _addVisualElements() {
- _entryCoordinate = entryPointComponent.createObject(map)
- _exitCoordinate = exitPointComponent.createObject(map)
- _transectLines = transectsComponent.createObject(map)
- map.addMapItem(_entryCoordinate)
- map.addMapItem(_exitCoordinate)
- map.addMapItem(_transectLines)
- }
-
- function _destroyVisualElements() {
- _entryCoordinate.destroy()
- _exitCoordinate.destroy()
- _transectLines.destroy()
- }
-
- Component.onCompleted: {
- mapPolylineVisuals.addInitialPolyline()
- _addVisualElements()
- }
-
- Component.onDestruction: {
- _destroyVisualElements()
- }
-
- QGCMapPolygonVisuals {
- mapControl: map
- mapPolygon: object.surveyAreaPolygon
- interactive: false
- interiorColor: "green"
- interiorOpacity: 0.25
- }
+ Component.onCompleted: mapPolylineVisuals.addInitialPolyline()
QGCMapPolylineVisuals {
id: mapPolylineVisuals
mapControl: map
mapPolyline: object.corridorPolyline
- interactive: _missionItem.isCurrentItem
+ interactive: _currentItem
lineWidth: 3
lineColor: "#be781c"
- }
-
- // Entry point
- Component {
- id: entryPointComponent
-
- MapQuickItem {
- anchorPoint.x: sourceItem.anchorPointX
- anchorPoint.y: sourceItem.anchorPointY
- z: QGroundControl.zOrderMapItems
- coordinate: _missionItem.coordinate
- visible: _missionItem.coordinate.isValid
-
- sourceItem: MissionItemIndexLabel {
- index: _missionItem.sequenceNumber
- label: "Entry"
- checked: _missionItem.isCurrentItem
- onClicked: _root.clicked(_missionItem.sequenceNumber)
- }
- }
- }
-
- // Exit point
- Component {
- id: exitPointComponent
-
- MapQuickItem {
- anchorPoint.x: sourceItem.anchorPointX
- anchorPoint.y: sourceItem.anchorPointY
- z: QGroundControl.zOrderMapItems
- coordinate: _missionItem.exitCoordinate
- visible: _missionItem.exitCoordinate.isValid
-
- sourceItem: MissionItemIndexLabel {
- index: _missionItem.lastSequenceNumber
- label: "Exit"
- checked: _missionItem.isCurrentItem
- onClicked: _root.clicked(_missionItem.sequenceNumber)
- }
- }
- }
-
- // Transect lines
- Component {
- id: transectsComponent
-
- MapPolyline {
- line.color: "white"
- line.width: 2
- path: _missionItem.visualTransectPoints
- }
+ visible: _currentItem
}
}
diff --git a/src/PlanView/SurveyMapVisual.qml b/src/PlanView/SurveyMapVisual.qml
index 237297b01aeb6fb937270e7c18645ce1591b2173..ec4e4cbe5b3d0cd95e1ce9d1da551e7e0be10801 100644
--- a/src/PlanView/SurveyMapVisual.qml
+++ b/src/PlanView/SurveyMapVisual.qml
@@ -19,45 +19,8 @@ import QGroundControl.Controls 1.0
import QGroundControl.FlightMap 1.0
/// Survey Complex Mission Item visuals
-Item {
- id: _root
-
- property var map ///< Map control to place item in
-
- property var _missionItem: object
- property var _mapPolygon: object.surveyAreaPolygon
- property bool _currentItem: object.isCurrentItem
- property var _transectPoints: _missionItem.visualTransectPoints
- property bool _showPartialEntryExit: !_currentItem && _missionItem.turnAroundDistance.rawValue != 0 &&_transectPoints.length > 1
- property var _fullTransectsComponent: null
- property var _entryTransectsComponent: null
- property var _exitTransectsComponent: null
- property var _entryCoordinate
- property var _exitCoordinate
-
- signal clicked(int sequenceNumber)
-
- function _addVisualElements() {
- _fullTransectsComponent = fullTransectsComponent.createObject(map)
- _entryTransectsComponent = entryTransectComponent.createObject(map)
- _exitTransectsComponent = exitTransectComponent.createObject(map)
- _entryCoordinate = entryPointComponent.createObject(map)
- _exitCoordinate = exitPointComponent.createObject(map)
-
- map.addMapItem(_fullTransectsComponent)
- map.addMapItem(_entryTransectsComponent)
- map.addMapItem(_exitTransectsComponent)
- map.addMapItem(_entryCoordinate)
- map.addMapItem(_exitCoordinate)
- }
-
- function _destroyVisualElements() {
- _fullTransectsComponent.destroy()
- _entryTransectsComponent.destroy()
- _exitTransectsComponent.destroy()
- _entryCoordinate.destroy()
- _exitCoordinate.destroy()
- }
+TransectStyleMapVisuals {
+ property var _mapPolygon: object.surveyAreaPolygon
/// Add an initial 4 sided polygon if there is none
function _addInitialPolygon() {
@@ -90,99 +53,5 @@ Item {
}
}
- Component.onCompleted: {
- _addInitialPolygon()
- _addVisualElements()
- }
-
- Component.onDestruction: {
- _destroyVisualElements()
- }
-
- QGCMapPolygonVisuals {
- id: mapPolygonVisuals
- mapControl: map
- mapPolygon: _mapPolygon
- interactive: _missionItem.isCurrentItem
- borderWidth: 1
- borderColor: "black"
- interiorColor: "green"
- interiorOpacity: 0.5
- }
-
- // Full set of transects lines. Shown when item is selected.
- Component {
- id: fullTransectsComponent
-
- MapPolyline {
- line.color: "white"
- line.width: 2
- path: _transectPoints
- visible: _currentItem
- }
- }
-
- // Entry and exit transect lines only. Used when item is not selected.
- Component {
- id: entryTransectComponent
-
- MapPolyline {
- line.color: "white"
- line.width: 2
- path: _showPartialEntryExit ? [ _transectPoints[0], _transectPoints[1] ] : []
- visible: _showPartialEntryExit
- }
- }
- Component {
- id: exitTransectComponent
-
- MapPolyline {
- line.color: "white"
- line.width: 2
- path: _showPartialEntryExit ? [ _transectPoints[lastPointIndex - 1], _transectPoints[lastPointIndex] ] : []
- visible: _showPartialEntryExit
-
- property int lastPointIndex: _transectPoints.length - 1
- }
- }
-
- // Entry point
- Component {
- id: entryPointComponent
-
- MapQuickItem {
- anchorPoint.x: sourceItem.anchorPointX
- anchorPoint.y: sourceItem.anchorPointY
- z: QGroundControl.zOrderMapItems
- coordinate: _missionItem.coordinate
- visible: _missionItem.exitCoordinate.isValid
-
- sourceItem: MissionItemIndexLabel {
- index: _missionItem.sequenceNumber
- label: "Entry"
- checked: _missionItem.isCurrentItem
- onClicked: _root.clicked(_missionItem.sequenceNumber)
- }
- }
- }
-
- // Exit point
- Component {
- id: exitPointComponent
-
- MapQuickItem {
- anchorPoint.x: sourceItem.anchorPointX
- anchorPoint.y: sourceItem.anchorPointY
- z: QGroundControl.zOrderMapItems
- coordinate: _missionItem.exitCoordinate
- visible: _missionItem.exitCoordinate.isValid
-
- sourceItem: MissionItemIndexLabel {
- index: _missionItem.lastSequenceNumber
- label: "Exit"
- checked: _missionItem.isCurrentItem
- onClicked: _root.clicked(_missionItem.sequenceNumber)
- }
- }
- }
+ Component.onCompleted: _addInitialPolygon()
}
diff --git a/src/PlanView/TransectStyleMapVisuals.qml b/src/PlanView/TransectStyleMapVisuals.qml
new file mode 100644
index 0000000000000000000000000000000000000000..57212b8411f08ac039565ad16b091c087b6e5534
--- /dev/null
+++ b/src/PlanView/TransectStyleMapVisuals.qml
@@ -0,0 +1,157 @@
+/****************************************************************************
+ *
+ * (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 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
+
+/// Base control for both Survey and Corridor Scan map visuals
+Item {
+ id: _root
+
+ property var map ///< Map control to place item in
+
+ property var _missionItem: object
+ property var _mapPolygon: object.surveyAreaPolygon
+ property bool _currentItem: object.isCurrentItem
+ property var _transectPoints: _missionItem.visualTransectPoints
+ property bool _showPartialEntryExit: !_currentItem && _missionItem.turnAroundDistance.rawValue !== 0 &&_transectPoints.length >= 2
+ property var _fullTransectsComponent: null
+ property var _entryTransectsComponent: null
+ property var _exitTransectsComponent: null
+ property var _entryCoordinate
+ property var _exitCoordinate
+
+ signal clicked(int sequenceNumber)
+
+ function _addVisualElements() {
+ _fullTransectsComponent = fullTransectsComponent.createObject(map)
+ _entryTransectsComponent = entryTransectComponent.createObject(map)
+ _exitTransectsComponent = exitTransectComponent.createObject(map)
+ _entryCoordinate = entryPointComponent.createObject(map)
+ _exitCoordinate = exitPointComponent.createObject(map)
+
+ map.addMapItem(_fullTransectsComponent)
+ map.addMapItem(_entryTransectsComponent)
+ map.addMapItem(_exitTransectsComponent)
+ map.addMapItem(_entryCoordinate)
+ map.addMapItem(_exitCoordinate)
+ }
+
+ function _destroyVisualElements() {
+ _fullTransectsComponent.destroy()
+ _entryTransectsComponent.destroy()
+ _exitTransectsComponent.destroy()
+ _entryCoordinate.destroy()
+ _exitCoordinate.destroy()
+ }
+
+ Component.onCompleted: {
+ _addVisualElements()
+ }
+
+ Component.onDestruction: {
+ _destroyVisualElements()
+ }
+
+ // Area polygon
+ QGCMapPolygonVisuals {
+ id: mapPolygonVisuals
+ mapControl: map
+ mapPolygon: _mapPolygon
+ interactive: _missionItem.isCurrentItem
+ borderWidth: 1
+ borderColor: "black"
+ interiorColor: "green"
+ interiorOpacity: 0.5
+ }
+
+ // Full set of transects lines. Shown when item is selected.
+ Component {
+ id: fullTransectsComponent
+
+ MapPolyline {
+ line.color: "white"
+ line.width: 2
+ path: _transectPoints
+ visible: _currentItem
+ }
+ }
+
+ // Entry and exit transect lines only. Used when item is not selected.
+ Component {
+ id: entryTransectComponent
+
+ MapPolyline {
+ line.color: "white"
+ line.width: 2
+ path: _showPartialEntryExit ? [ _transectPoints[0], _transectPoints[1] ] : []
+ visible: _showPartialEntryExit
+ }
+ }
+ Component {
+ id: exitTransectComponent
+
+ MapPolyline {
+ line.color: "white"
+ line.width: 2
+ path: _showPartialEntryExit ? [ _transectPoints[lastPointIndex - 1], _transectPoints[lastPointIndex] ] : []
+ visible: _showPartialEntryExit
+
+ property int lastPointIndex: _transectPoints.length - 1
+ }
+ }
+
+ // Entry point
+ Component {
+ id: entryPointComponent
+
+ MapQuickItem {
+ anchorPoint.x: sourceItem.anchorPointX
+ anchorPoint.y: sourceItem.anchorPointY
+ z: QGroundControl.zOrderMapItems
+ coordinate: _missionItem.coordinate
+ visible: _missionItem.exitCoordinate.isValid
+
+ sourceItem: MissionItemIndexLabel {
+ index: _missionItem.sequenceNumber
+ label: qsTr("Entry")
+ checked: _missionItem.isCurrentItem
+ onClicked: _root.clicked(_missionItem.sequenceNumber)
+ }
+ }
+ }
+
+ // Exit point
+ Component {
+ id: exitPointComponent
+
+ MapQuickItem {
+ anchorPoint.x: sourceItem.anchorPointX
+ anchorPoint.y: sourceItem.anchorPointY
+ z: QGroundControl.zOrderMapItems
+ coordinate: _missionItem.exitCoordinate
+ visible: _missionItem.exitCoordinate.isValid
+
+ sourceItem: MissionItemIndexLabel {
+ index: _missionItem.lastSequenceNumber
+ label: qsTr("Exit")
+ checked: _missionItem.isCurrentItem
+ onClicked: _root.clicked(_missionItem.sequenceNumber)
+ }
+ }
+ }
+}
diff --git a/src/QmlControls/QGroundControl/Controls/qmldir b/src/QmlControls/QGroundControl/Controls/qmldir
index 219191864f612881c12937076ce87739b793584f..da47b31aeffea12bf4467660240fee81f46b0fb6 100644
--- a/src/QmlControls/QGroundControl/Controls/qmldir
+++ b/src/QmlControls/QGroundControl/Controls/qmldir
@@ -80,6 +80,7 @@ SliderSwitch 1.0 SliderSwitch.qml
SubMenuButton 1.0 SubMenuButton.qml
SurveyMapVisuals 1.0 SurveyMapVisuals.qml
TransectStyleComplexItemStats 1.0 TransectStyleComplexItemStats.qml
+TransectStyleMapVisuals 1.0 TransectStyleMapVisuals.qml
ToolStrip 1.0 ToolStrip.qml
VehicleRotationCal 1.0 VehicleRotationCal.qml
VehicleSummaryRow 1.0 VehicleSummaryRow.qml