/**************************************************************************** * * (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 Item { id: _root property var map: undefined ///< Map control to place item in property var geoArea: undefined ///< GeoArea derived class opacity: 0.2 signal clicked(int sequenceNumber) Component.onCompleted: { console.assert(map !== undefined, "please set the map property") console.assert(geoArea !== undefined, "please set the geoArea property") } // Area polygon QGCMapPolygonVisuals { id: mapPolygonVisuals mapControl: _root.map mapPolygon: _root.geoArea interactive: geoArea.interactive borderWidth: 3 interiorColor: "green" altColor: QGroundControl.globalPalette.surveyPolygonTerrainCollision z: QGroundControl.zOrderMapItems - 3 interiorOpacity: _root.opacity } Repeater { id: progressRepeater property bool enable: geoArea.showTiles.value model: enable ? geoArea.tiles : [] Item { property var _tileComponent Component.onCompleted: { _tileComponent = tileComponent.createObject(map) _tileComponent.polygon.path = Qt.binding(function () { return object.path }) _tileComponent.polygon.opacity = 0.6 _tileComponent.polygon.border.color = "black" _tileComponent.polygon.border.width = 1 _tileComponent.polygon.color = Qt.binding(function () { return getColor(object.progress) }) } Component.onDestruction: { _tileComponent.destroy() } } } Component { id: tileComponent Item { id: root property MapPolygon polygon MapPolygon { id: mapPolygon z: QGroundControl.zOrderMapItems - 2 path: [] } Component.onCompleted: { polygon = mapPolygon map.addMapItem(mapPolygon) } Component.onDestruction: { map.removeMapItem(mapPolygon) } } } function getColor(progress) { if (progress === 0) return "transparent" if (progress < 33) return "orange" if (progress < 66) return "yellow" if (progress < 100) return "greenyellow" return "limegreen" } }