7import QGroundControl.Controls
8import QGroundControl.FactControls
11 title: qsTr("Load Parameters")
12 buttons: Dialog.Cancel | (_sendableCount > 0 ? Dialog.Ok : 0)
13 acceptButtonEnabled: paramController.diffSelectedCount > 0
15 required property var paramController
17 property int _sendableCount: paramController.diffSendableCount
19 onAccepted: paramController.sendDiff()
21 Component.onDestruction: paramController.clearDiff();
24 spacing: ScreenTools.defaultDialogControlSpacing
28 objectName: "diffSummaryLabel"
29 Layout.preferredWidth: mainGrid.visible ? mainGrid.width : ScreenTools.defaultFontPixelWidth * 40
30 wrapMode: Text.WordWrap
33 if (_sendableCount > 0) {
34 if (paramController.diffNoVehicleCount > 0) {
35 clauses.push(qsTr("%1 will be changed (including %2 not currently on the Vehicle)").arg(_sendableCount).arg(paramController.diffNoVehicleCount))
37 clauses.push(qsTr("%1 will be changed").arg(_sendableCount))
40 if (paramController.diffUnchangedCount === 1) {
41 clauses.push(qsTr("1 already matches the Vehicle"))
42 } else if (paramController.diffUnchangedCount > 1) {
43 clauses.push(qsTr("%1 already match the Vehicle").arg(paramController.diffUnchangedCount))
45 if (paramController.diffReadOnlyCount === 1) {
46 clauses.push(qsTr("1 read-only parameter will not be sent"))
47 } else if (paramController.diffReadOnlyCount > 1) {
48 clauses.push(qsTr("%1 read-only parameters will not be sent").arg(paramController.diffReadOnlyCount))
50 if (paramController.diffMissingParams.length > 0) {
51 clauses.push(qsTr("%1 not found on the Vehicle and cannot be sent").arg(paramController.diffMissingParams.length))
53 if (paramController.diffParsedCount === 1) {
54 return clauses.length === 0 ? qsTr("Loaded 1 parameter from file.")
55 : qsTr("Loaded 1 parameter from file: %1.").arg(clauses.join(", "))
57 return clauses.length === 0 ? qsTr("Loaded %1 parameters from file.").arg(paramController.diffParsedCount)
58 : qsTr("Loaded %1 parameters from file: %2.").arg(paramController.diffParsedCount).arg(clauses.join(", "))
63 objectName: "diffOkHintLabel"
64 Layout.preferredWidth: summaryLabel.Layout.preferredWidth
65 wrapMode: Text.WordWrap
66 visible: _sendableCount > 0
67 text: qsTr("Click 'Ok' to update the parameters below on the Vehicle.")
72 objectName: "diffGrid"
73 rows: paramController.diffList.count + 1
74 columns: paramController.diffMultipleComponents ? 5 : 4
75 flow: GridLayout.TopToBottom
77 columnSpacing: ScreenTools.defaultFontPixelWidth
78 visible: paramController.diffList.count
81 objectName: "diffCheckAllCheckbox"
84 for (var i=0; i<paramController.diffList.count; i++) {
85 var paramDiff = paramController.diffList.get(i)
86 if (!paramDiff.cannotSend) {
87 paramDiff.load = checked
93 model: paramController.diffList
95 objectName: "diffRowCheckbox_" + (paramController.diffMultipleComponents ? object.componentId + "_" : "") + object.name
96 enabled: !object.cannotSend
98 onClicked: object.load = checked
103 model: paramController.diffMultipleComponents ? 1 : 0
104 QGCLabel { text: qsTr("Comp ID") }
107 model: paramController.diffMultipleComponents ? paramController.diffList : 0
108 QGCLabel { text: object.componentId }
111 QGCLabel { text: qsTr("Name") }
113 model: paramController.diffList
114 QGCLabel { text: object.name }
117 QGCLabel { text: qsTr("File") }
119 model: paramController.diffList
120 QGCLabel { text: object.fileValue + " " + object.units }
123 QGCLabel { text: qsTr("Vehicle") }
125 model: paramController.diffList
127 text: object.cannotSend ? qsTr("N/A — not on Vehicle") :
128 object.noVehicleValue ? qsTr("N/A — new to Vehicle") :
129 object.vehicleValue + " " + object.units
135 objectName: "diffNoVehicleHintLabel"
136 Layout.preferredWidth: summaryLabel.Layout.preferredWidth
137 wrapMode: Text.WordWrap
138 visible: paramController.diffNoVehicleCount > 0
139 text: qsTr("Parameters marked 'new to Vehicle' have not been reported by the Vehicle. They may only become visible after they are sent and the Vehicle is rebooted.")
143 objectName: "diffCannotSendHintLabel"
144 Layout.preferredWidth: summaryLabel.Layout.preferredWidth
145 wrapMode: Text.WordWrap
146 visible: paramController.diffMissingParams.length > 0
147 text: qsTr("Parameters marked 'not on Vehicle' cannot be sent since the file does not include type information. They may only exist after another parameter is changed and the Vehicle is rebooted, after which you can load this file again.")