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 ColumnLayout { id:root property int availableWidth: 300 property var missionItem: undefined ///< Mission Item for editor property bool checked: true property real _margin: ScreenTools.defaultFontPixelWidth / 2 property var _generator: missionItem.generator property var _generatorEditor: undefined width: availableWidth Component.onCompleted: { console.assert(missionItem !== undefined, "please set the missionItem property") _addGeneratorEditor() } Component.onDestruction: { _destroyGeneratorEditor() } on_GeneratorChanged: { _destroyGeneratorEditor() _addGeneratorEditor() } SectionHeader { id: generalHeader Layout.fillWidth: true text: qsTr("General") } GridLayout { id: generalGrid Layout.fillWidth: true 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 Layout.fillWidth: true text: qsTr("Generator") } GridLayout{ Layout.fillWidth: true columnSpacing: _margin rowSpacing: _margin columns: 2 visible: generatorHeader.checked QGCComboBox { property var names: missionItem.generatorNameList property int length: names.length enabled: root.checked anchors.margins: ScreenTools.defaultFontPixelWidth currentIndex: missionItem.generatorIndex Layout.columnSpan: 2 model: missionItem.generatorNameList onActivated: { if (index != -1){ missionItem.switchToGenerator(index) } } } } ColumnLayout{ id:generatorEditorParent Layout.fillWidth: true visible: generatorHeader.checked } // bussy indicator ColumnLayout{ Layout.fillWidth: true spacing: _margin BusyIndicator{ id: indicator 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 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 } } }