import QtQuick 2.3 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.4 import QtQuick.Dialogs 1.2 import QtQuick.Extras 1.4 import QtQuick.Layouts 1.2 import QGroundControl 1.0 import QGroundControl.ScreenTools 1.0 import QGroundControl.Vehicle 1.0 import QGroundControl.Controls 1.0 import QGroundControl.FactSystem 1.0 import QGroundControl.FactControls 1.0 import QGroundControl.Palette 1.0 import QGroundControl.FlightMap 1.0 Rectangle { id: _root height: visible ? (editorColumn.height + (_margin * 2)) : 0 width: availableWidth color: qgcPal.windowShadeDark radius: _radius // The following properties must be available up the hierarchy chain //property real availableWidth ///< Width for control //property var missionItem ///< Mission Item for editor property real _margin: ScreenTools.defaultFontPixelWidth / 2 property real _fieldWidth: ScreenTools.defaultFontPixelWidth * 10.5 property var _vehicle: QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle : QGroundControl.multiVehicleManager.offlineEditingVehicle property var _missionItem: missionItem property var _generator: missionItem.generator property var _generatorEditor: undefined QGCPalette { id: qgcPal; colorGroupEnabled: true } Component.onCompleted: { _addGeneratorEditor() } Component.onDestruction: { _destroyGeneratorEditor() } on_GeneratorChanged: { _destroyGeneratorEditor() _addGeneratorEditor() } Column { // main column id: editorColumn anchors.margins: _margin anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right // ColumnLayout { // id: wizardColumn // anchors.left: parent.left // anchors.right: parent.right // spacing: _margin // visible: !_missionItem.surveyAreaPolygon.isValid || _missionItem.wizardMode // ColumnLayout { // Layout.fillWidth: true // spacing: _margin // visible: !_polygonDone // QGCLabel { // Layout.fillWidth: true // wrapMode: Text.WordWrap // horizontalAlignment: Text.AlignHCenter // text: qsTr("Use the Polygon Tools to create the polygon which outlines your survey area.") // } // } // } Column { anchors.left: parent.left anchors.right: parent.right spacing: _margin //visible: !wizardColumn.visible // QGCTabBar { // id: tabBar // anchors.left: parent.left // anchors.right: parent.right // Component.onCompleted: currentIndex = QGroundControl.settingsManager.planViewSettings.displayPresetsTabFirst.rawValue ? 2 : 0 // QGCTabButton { icon.source: "/qmlimages/PatternGrid.png"; icon.height: ScreenTools.defaultFontPixelHeight } // QGCTabButton { icon.source: "/qmlimages/PatternCamera.png"; icon.height: ScreenTools.defaultFontPixelHeight } // QGCTabButton { icon.source: "/qmlimages/PatternTerrain.png"; icon.height: ScreenTools.defaultFontPixelHeight } // QGCTabButton { icon.source: "/qmlimages/PatternPresets.png"; icon.height: ScreenTools.defaultFontPixelHeight } // } // Grid tab Column { anchors.left: parent.left anchors.right: parent.right spacing: _margin // visible: tabBar.currentIndex === 0 SectionHeader { id: generalHeader anchors.left: parent.left anchors.right: parent.right text: qsTr("General") } GridLayout { id: generalGrid anchors.left: parent.left anchors.right: parent.right columnSpacing: _margin rowSpacing: _margin columns: 2 visible: generalHeader.checked QGCLabel { text: qsTr("Altitude!!!") } QGCLabel { text: qsTr("Relative Altitude!!!") } QGCLabel { text: qsTr("Variant") Layout.columnSpan: 2 visible: variantRepeater.len > 0 } GridLayout{ Layout.columnSpan: 2 columnSpacing: _margin rowSpacing: _margin columns: 6 Repeater{ id: variantRepeater property var fact: missionItem.variant property int variant: fact.value property var names: missionItem.variantNames property int len: missionItem.variantNames.length model: len delegate: QGCRadioButton { checked: index === variantRepeater.variant text: variantRepeater.names[index] ? variantRepeater.names[index]: "" onCheckedChanged: { if (checked){ missionItem.variant.value = index } checked = Qt.binding(function(){ return index === variantRepeater.variant}) } } } // variant repeater } // variant grid } // general grid // Generator Editor SectionHeader { id: generatorHeader anchors.left: parent.left anchors.right: parent.right text: qsTr("Generator") } GridLayout{ anchors.left: parent.left anchors.right: parent.right columnSpacing: _margin rowSpacing: _margin columns: 2 visible: generatorHeader.checked QGCComboBox { property var names: missionItem.generatorNameList property int length: names.length anchors.margins: ScreenTools.defaultFontPixelWidth currentIndex: missionItem.generatorIndex Layout.columnSpan: 2 model: missionItem.generatorNameList onActivated: { missionItem.switchToGenerator(index) } } } ColumnLayout{ id:generatorEditorParent anchors.left: parent.left anchors.right: parent.right visible: generatorHeader.checked } // bussy indicator ColumnLayout{ anchors.left: parent.left anchors.right: parent.right spacing: _margin BusyIndicator{ id: indicator anchors.horizontalCenter: parent.horizontalCenter property bool calculating: missionItem.calculating running: calculating visible: calculating || timer.running onCalculatingChanged: { if(!calculating){ // defer hiding timer.restart() } } Timer{ id: timer interval: 1000 repeat: false running: false } } } // indicator column } // Grid Column } // Main editing column } // Top level Column KMLOrSHPFileDialog { id: kmlOrSHPLoadDialog title: qsTr("Select Polygon File") selectExisting: true onAcceptedForLoad: { _missionItem.surveyAreaPolygon.loadKMLOrSHPFile(file) _missionItem.resetState = false //editorMap.mapFitFunctions.fitMapViewportTo_missionItems() close() } } function _addGeneratorEditor(){ if (_generator.editorQml && !_generatorEditor) { var component = Qt.createComponent(_generator.editorQml) if (component.status === Component.Error) { console.log("Error loading Qml: ", _generator.editorQml, component.errorString()) } else { _generatorEditor = component.createObject( generatorEditorParent, { "generator": _root._generator, "availableWidth": generatorEditorParent.width, }) } } } function _destroyGeneratorEditor(){ if (_generatorEditor){ _generatorEditor.destroy() _generatorEditor = undefined } } } // Rectangle