Commit 94abe381 authored by Nate Weibley's avatar Nate Weibley

Defer loading and binding of mission editing QML components, fix editor view syncs

parent cfc67361
...@@ -46,8 +46,9 @@ QGCView { ...@@ -46,8 +46,9 @@ QGCView {
readonly property int _addMissionItemsButtonAutoOffTimeout: 10000 readonly property int _addMissionItemsButtonAutoOffTimeout: 10000
readonly property var _defaultVehicleCoordinate: QtPositioning.coordinate(37.803784, -122.462276) readonly property var _defaultVehicleCoordinate: QtPositioning.coordinate(37.803784, -122.462276)
property var _visualItems: controller.visualItems property var _visualItems: controller.visualItems
property var _currentMissionItem property var _currentMissionItem
property int _currentMissionIndex: 0
property bool _firstVehiclePosition: true property bool _firstVehiclePosition: true
property var activeVehiclePosition: _activeVehicle ? _activeVehicle.coordinate : QtPositioning.coordinate() property var activeVehiclePosition: _activeVehicle ? _activeVehicle.coordinate : QtPositioning.coordinate()
property bool _lightWidgetBorders: editorMap.isSatelliteMap property bool _lightWidgetBorders: editorMap.isSatelliteMap
...@@ -168,6 +169,7 @@ QGCView { ...@@ -168,6 +169,7 @@ QGCView {
if (visualItem.sequenceNumber == sequenceNumber) { if (visualItem.sequenceNumber == sequenceNumber) {
_currentMissionItem = visualItem _currentMissionItem = visualItem
_currentMissionItem.isCurrentItem = true _currentMissionItem.isCurrentItem = true
_currentMissionIndex = i
} else { } else {
visualItem.isCurrentItem = false visualItem.isCurrentItem = false
} }
...@@ -485,6 +487,7 @@ QGCView { ...@@ -485,6 +487,7 @@ QGCView {
model: controller.visualItems model: controller.visualItems
cacheBuffer: height * 2 cacheBuffer: height * 2
clip: true clip: true
currentIndex: _currentMissionIndex
highlightMoveDuration: 250 highlightMoveDuration: 250
delegate: MissionItemEditor { delegate: MissionItemEditor {
...@@ -506,16 +509,6 @@ QGCView { ...@@ -506,16 +509,6 @@ QGCView {
} }
onMoveHomeToMapCenter: controller.visualItems.get(0).coordinate = editorMap.center onMoveHomeToMapCenter: controller.visualItems.get(0).coordinate = editorMap.center
Connections {
target: object
onIsCurrentItemChanged: {
if (object.isCurrentItem) {
editorListView.currentIndex = index
}
}
}
} }
} // ListView } // ListView
} // Item - Mission Item editor } // Item - Mission Item editor
......
...@@ -87,6 +87,7 @@ Rectangle { ...@@ -87,6 +87,7 @@ Rectangle {
visible: _expanded visible: _expanded
width: parent.width - valueGrid.width - (_margins * 2) width: parent.width - valueGrid.width - (_margins * 2)
clip: true clip: true
currentIndex: _currentMissionIndex
delegate: Item { delegate: Item {
height: statusListView.height height: statusListView.height
...@@ -107,16 +108,6 @@ Rectangle { ...@@ -107,16 +108,6 @@ Rectangle {
label: object.abbreviation label: object.abbreviation
visible: object.relativeAltitude ? true : (object.homePosition || graphAbsolute) visible: object.relativeAltitude ? true : (object.homePosition || graphAbsolute)
} }
Connections {
target: object
onIsCurrentItemChanged: {
if (object.isCurrentItem) {
statusListView.currentIndex = index
}
}
}
} }
} }
} }
......
import QtQuick 2.2 import QtQuick 2.5
import QtQuick.Controls 1.2 import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2 import QtQuick.Controls.Styles 1.2
import QtQuick.Dialogs 1.2 import QtQuick.Dialogs 1.2
...@@ -13,112 +13,115 @@ import QGroundControl.Palette 1.0 ...@@ -13,112 +13,115 @@ import QGroundControl.Palette 1.0
Rectangle { Rectangle {
id: valuesRect id: valuesRect
width: availableWidth width: availableWidth
height: visible ? valuesItem.height : 0 height: deferedload.status == Loader.Ready ? (visible ? deferedload.item.height : 0) : 0
color: qgcPal.windowShadeDark color: qgcPal.windowShadeDark
visible: missionItem.isCurrentItem visible: missionItem.isCurrentItem
radius: _radius radius: _radius
// The following properties must be available up the hierachy chain Loader {
//property real availableWidth ///< Width for control id: deferedload
//property var missionItem ///< Mission Item for editor active: valuesRect.visible
asynchronous: true
Item { anchors.margins: _margin
id: valuesItem anchors.left: valuesRect.left
anchors.margins: _margin anchors.right: valuesRect.right
anchors.left: parent.left anchors.top: valuesRect.top
anchors.right: parent.right sourceComponent: Component {
anchors.top: parent.top Item {
height: valuesColumn.height + (_margin * 2) id: valuesItem
height: valuesColumn.height + (_margin * 2)
Column {
id: valuesColumn Column {
anchors.left: parent.left id: valuesColumn
anchors.right: parent.right anchors.left: parent.left
anchors.top: parent.top anchors.right: parent.right
spacing: _margin anchors.top: parent.top
spacing: _margin
QGCLabel {
width: parent.width
wrapMode: Text.WordWrap
font.pointSize: ScreenTools.smallFontPointSize
text: missionItem.sequenceNumber == 0 ?
qsTr("Planned home position. Actual home position set by Vehicle.") :
(missionItem.rawEdit ?
qsTr("Provides advanced access to all commands/parameters. Be very careful!") :
missionItem.commandDescription)
}
Repeater {
model: missionItem.comboboxFacts
Item {
width: valuesColumn.width
height: comboBoxFact.height
QGCLabel { QGCLabel {
id: comboBoxLabel width: parent.width
anchors.baseline: comboBoxFact.baseline wrapMode: Text.WordWrap
text: object.name font.pointSize: ScreenTools.smallFontPointSize
visible: object.name != "" text: missionItem.sequenceNumber == 0 ?
qsTr("Planned home position. Actual home position set by Vehicle.") :
(missionItem.rawEdit ?
qsTr("Provides advanced access to all commands/parameters. Be very careful!") :
missionItem.commandDescription)
} }
FactComboBox { Repeater {
id: comboBoxFact model: missionItem.comboboxFacts
anchors.right: parent.right
width: comboBoxLabel.visible ? _editFieldWidth : parent.width Item {
indexModel: false width: valuesColumn.width
model: object.enumStrings height: comboBoxFact.height
fact: object
QGCLabel {
id: comboBoxLabel
anchors.baseline: comboBoxFact.baseline
text: object.name
visible: object.name != ""
}
FactComboBox {
id: comboBoxFact
anchors.right: parent.right
width: comboBoxLabel.visible ? _editFieldWidth : parent.width
indexModel: false
model: object.enumStrings
fact: object
}
}
} }
}
}
Repeater { Repeater {
model: missionItem.textFieldFacts model: missionItem.textFieldFacts
Item { Item {
width: valuesColumn.width width: valuesColumn.width
height: textField.height height: textField.height
QGCLabel { QGCLabel {
id: textFieldLabel id: textFieldLabel
anchors.baseline: textField.baseline anchors.baseline: textField.baseline
text: object.name text: object.name
}
FactTextField {
id: textField
anchors.right: parent.right
width: _editFieldWidth
showUnits: true
fact: object
visible: !_root.readOnly
}
FactLabel {
anchors.baseline: textFieldLabel.baseline
anchors.right: parent.right
fact: object
visible: _root.readOnly
}
}
} }
FactTextField { Repeater {
id: textField model: missionItem.checkboxFacts
anchors.right: parent.right
width: _editFieldWidth FactCheckBox {
showUnits: true text: object.name
fact: object fact: object
visible: !_root.readOnly }
} }
FactLabel { QGCButton {
anchors.baseline: textFieldLabel.baseline text: qsTr("Move Home to map center")
anchors.right: parent.right visible: missionItem.homePosition
fact: object onClicked: editorRoot.moveHomeToMapCenter()
visible: _root.readOnly anchors.horizontalCenter: parent.horizontalCenter
} }
} } // Column
} } // Item
} // Component
Repeater { } // Loader
model: missionItem.checkboxFacts
FactCheckBox {
text: object.name
fact: object
}
}
QGCButton {
text: qsTr("Move Home to map center")
visible: missionItem.homePosition
onClicked: editorRoot.moveHomeToMapCenter()
anchors.horizontalCenter: parent.horizontalCenter
}
} // Column
} // Item
} // Rectangle } // Rectangle
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment