From 5977565ff0970fe8e0af5f837ee0277bb6621d99 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Wed, 3 May 2017 12:08:19 -0700 Subject: [PATCH] Fix bad redraw with Simple Mission Item editors --- src/PlanView/MissionItemEditor.qml | 8 +- src/PlanView/SimpleItemEditor.qml | 270 ++++++++++++++--------------- 2 files changed, 128 insertions(+), 150 deletions(-) diff --git a/src/PlanView/MissionItemEditor.qml b/src/PlanView/MissionItemEditor.qml index 0ccdd27e6..1fd1167f5 100644 --- a/src/PlanView/MissionItemEditor.qml +++ b/src/PlanView/MissionItemEditor.qml @@ -15,7 +15,7 @@ import QGroundControl.Palette 1.0 /// Mission item edit control Rectangle { id: _root - height: editorLoader.y + editorLoader.height + (_margin * 2) + height: editorLoader.y + (editorLoader.visible ? editorLoader.height : 0) + (_margin * 2) color: _currentItem ? qgcPal.missionItemEditor : qgcPal.windowShade radius: _radius @@ -198,12 +198,8 @@ Rectangle { anchors.topMargin: _margin anchors.left: parent.left anchors.top: commandPicker.bottom - height: item ? item.height : 0 source: missionItem.editorQml - - onLoaded: { - item.visible = Qt.binding(function() { return _currentItem; }) - } + visible: _currentItem property var masterController: _masterController property real availableWidth: _root.width - (_margin * 2) ///< How wide the editor should be diff --git a/src/PlanView/SimpleItemEditor.qml b/src/PlanView/SimpleItemEditor.qml index 97c3f3a3d..7b354b774 100644 --- a/src/PlanView/SimpleItemEditor.qml +++ b/src/PlanView/SimpleItemEditor.qml @@ -12,148 +12,130 @@ import QGroundControl.Palette 1.0 // Editor for Simple mission items Rectangle { - id: valuesRect - width: availableWidth - height: deferedload.status == Loader.Ready ? (visible ? deferedload.item.height : 0) : 0 - color: qgcPal.windowShadeDark - visible: missionItem.isCurrentItem - radius: _radius - - Loader { - id: deferedload - active: valuesRect.visible - asynchronous: true - anchors.margins: _margin - anchors.left: valuesRect.left - anchors.right: valuesRect.right - anchors.top: valuesRect.top - - sourceComponent: Component { - Item { - id: valuesItem - height: valuesColumn.height + (_margin * 2) - - Column { - id: valuesColumn - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - spacing: _margin - - QGCLabel { - width: parent.width - wrapMode: Text.WordWrap - font.pointSize: ScreenTools.smallFontPointSize - text: missionItem.rawEdit ? - qsTr("Provides advanced access to all commands/parameters. Be very careful!") : - missionItem.commandDescription - } - - GridLayout { - anchors.left: parent.left - anchors.right: parent.right - columns: 2 - - Repeater { - model: missionItem.comboboxFacts - - QGCLabel { - text: object.name - visible: object.name != "" - Layout.column: 0 - Layout.row: index - } - } - - Repeater { - model: missionItem.comboboxFacts - - FactComboBox { - indexModel: false - model: object.enumStrings - fact: object - Layout.column: 1 - Layout.row: index - Layout.fillWidth: true - } - } - } - - GridLayout { - anchors.left: parent.left - anchors.right: parent.right - flow: GridLayout.TopToBottom - rows: missionItem.textFieldFacts.count + missionItem.nanFacts.count + (missionItem.speedSection.available ? 1 : 0) - columns: 2 - - Repeater { - model: missionItem.textFieldFacts - - QGCLabel { text: object.name } - } - - Repeater { - model: missionItem.nanFacts - - QGCCheckBox { - text: object.name - checked: !isNaN(object.rawValue) - onClicked: object.rawValue = checked ? 0 : NaN - } - } - - QGCCheckBox { - id: flightSpeedCheckbox - text: qsTr("Flight Speed") - checked: missionItem.speedSection.specifyFlightSpeed - onClicked: missionItem.speedSection.specifyFlightSpeed = checked - visible: missionItem.speedSection.available - } - - Repeater { - model: missionItem.textFieldFacts - - FactTextField { - showUnits: true - fact: object - Layout.fillWidth: true - } - } - - Repeater { - model: missionItem.nanFacts - - FactTextField { - showUnits: true - fact: object - Layout.fillWidth: true - enabled: !isNaN(object.rawValue) - } - } - - FactTextField { - fact: missionItem.speedSection.flightSpeed - Layout.fillWidth: true - enabled: flightSpeedCheckbox.checked - visible: missionItem.speedSection.available - } - } - - Repeater { - model: missionItem.checkboxFacts - - FactCheckBox { - text: object.name - fact: object - } - } - - CameraSection { - checked: missionItem.cameraSection.settingsSpecified - visible: missionItem.cameraSection.available - } - } // Column - } // Item - } // Component - } // Loader + width: availableWidth + height: valuesColumn.height + _margin + color: qgcPal.windowShadeDark + radius: _radius + + Column { + id: valuesColumn + anchors.margins: _margin + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + spacing: _margin + + QGCLabel { + width: parent.width + wrapMode: Text.WordWrap + font.pointSize: ScreenTools.smallFontPointSize + text: missionItem.rawEdit ? + qsTr("Provides advanced access to all commands/parameters. Be very careful!") : + missionItem.commandDescription + } + + GridLayout { + anchors.left: parent.left + anchors.right: parent.right + columns: 2 + + Repeater { + model: missionItem.comboboxFacts + + QGCLabel { + text: object.name + visible: object.name != "" + Layout.column: 0 + Layout.row: index + } + } + + Repeater { + model: missionItem.comboboxFacts + + FactComboBox { + indexModel: false + model: object.enumStrings + fact: object + Layout.column: 1 + Layout.row: index + Layout.fillWidth: true + } + } + } + + GridLayout { + anchors.left: parent.left + anchors.right: parent.right + flow: GridLayout.TopToBottom + rows: missionItem.textFieldFacts.count + missionItem.nanFacts.count + (missionItem.speedSection.available ? 1 : 0) + columns: 2 + + Repeater { + model: missionItem.textFieldFacts + + QGCLabel { text: object.name } + } + + Repeater { + model: missionItem.nanFacts + + QGCCheckBox { + text: object.name + checked: !isNaN(object.rawValue) + onClicked: object.rawValue = checked ? 0 : NaN + } + } + + QGCCheckBox { + id: flightSpeedCheckbox + text: qsTr("Flight Speed") + checked: missionItem.speedSection.specifyFlightSpeed + onClicked: missionItem.speedSection.specifyFlightSpeed = checked + visible: missionItem.speedSection.available + } + + Repeater { + model: missionItem.textFieldFacts + + FactTextField { + showUnits: true + fact: object + Layout.fillWidth: true + } + } + + Repeater { + model: missionItem.nanFacts + + FactTextField { + showUnits: true + fact: object + Layout.fillWidth: true + enabled: !isNaN(object.rawValue) + } + } + + FactTextField { + fact: missionItem.speedSection.flightSpeed + Layout.fillWidth: true + enabled: flightSpeedCheckbox.checked + visible: missionItem.speedSection.available + } + } + + Repeater { + model: missionItem.checkboxFacts + + FactCheckBox { + text: object.name + fact: object + } + } + + CameraSection { + checked: missionItem.cameraSection.settingsSpecified + visible: missionItem.cameraSection.available + } + } // Column } // Rectangle -- 2.22.0