7import QGroundControl.FactControls
8import QGroundControl.Controls
12 pageComponent: subFramePageComponent
14 property bool _oldFW: globals.activeVehicle.versionCompare(3 ,5 ,2) < 0
15 property bool _hasSensibledefaults: globals.activeVehicle.versionCompare(4 ,1 ,0) >= 0
17 property var frameModelSelected: undefined
19 APMAirframeComponentController { id: controller; }
21 property Fact _frameConfig: controller.getParameterFact(-1, "FRAME_CONFIG")
23 function setFrameConfig(frameNumber) {
24 _frameConfig.value = frameNumber
27 function loadFrameDefaultParameters(frameName) {
28 controller.loadParameters(subFramePage.getParametersFile(frameName))
31 function getParametersFile(frameName) {
34 if (globals.activeVehicle.versionCompare(4, 0, 0) >= 0) {
36 } else if (globals.activeVehicle.versionCompare(3, 5, 4) >= 0) {
38 } else if (globals.activeVehicle.versionCompare(3, 5, 2) >= 0) {
42 return `Sub/${frameName}-${version}.params`
46 id: subFramePageComponent
52 QGCPalette { id: qgcPal; colorGroupEnabled: true }
54 property real _minW: ScreenTools.defaultFontPixelWidth * 30
55 property real _boxWidth: _minW
56 property real _boxSpace: ScreenTools.defaultFontPixelWidth
62 Component.onCompleted: computeDimensions()
64 function computeDimensions() {
67 var idx = Math.floor(mainColumn.width / (_minW + ScreenTools.defaultFontPixelWidth))
69 _boxWidth = mainColumn.width
74 _boxSpace = ScreenTools.defaultFontPixelWidth
75 sw = _boxSpace * (idx - 1)
77 rw = mainColumn.width - sw
87 resource: "qrc:///qmlimages/Frames/BlueROV1.png"
92 name: "BlueROV2/Vectored"
93 resource: "qrc:///qmlimages/Frames/Vectored.png"
95 paramFileName: "bluerov2"
100 resource: "qrc:///qmlimages/Frames/Vectored6DOF.png"
102 paramFileName: "bluerov2-heavy"
107 resource: "qrc:///qmlimages/Frames/SimpleROV-3.png"
113 resource: "qrc:///qmlimages/Frames/SimpleROV-4.png"
119 resource: "qrc:///qmlimages/Frames/SimpleROV-5.png"
134 height: ScreenTools.defaultFontPixelHeight * 14
139 text: subFrameModel.get(index).name
143 anchors.topMargin: ScreenTools.defaultFontPixelHeight / 2
144 anchors.top: title.bottom
145 anchors.bottom: parent.bottom
146 anchors.left: parent.left
147 anchors.right: parent.right
148 color: subFrameModel.get(index).paramValue == _frameConfig.value ? qgcPal.buttonHighlight: qgcPal.windowShade
151 anchors.margins: ScreenTools.defaultFontPixelWidth
152 anchors.top: parent.top
153 anchors.bottom: parent.bottom
154 anchors.left: parent.left
155 anchors.right: parent.right
156 fillMode: Image.PreserveAspectFit
159 source: subFrameModel.get(index).resource
164 cursorShape: Qt.PointingHandCursor
166 frameModelSelected = subFrameModel.get(index)
167 if (_hasSensibledefaults) {
168 // No need to suggest loading the default parameters.
169 // The firmware default should be good enough.
170 setFrameConfig(frameModelSelected.paramValue)
173 confirmFrameDialogFactory.open()
183 QGCPopupDialogFactory {
184 id: confirmFrameDialogFactory
186 dialogComponent: confirmFrameComponent
190 id: confirmFrameComponent
193 id: confirmFrameDialog
194 title: qsTr("Frame selection")
195 buttons: Dialog.Close
200 width: firstButton.width
201 wrapMode: Text.WordWrap
202 text: frameModelSelected.paramFileName != undefined ?
203 qsTr("Would you like to load the default parameters for the frame?") :
204 qsTr("Would you like to set the desired frame?")
209 Layout.fillWidth: true
210 text: qsTr("Yes, Load default parameter set for %1").arg(frameModelSelected.name)
211 visible: frameModelSelected.paramFileName != undefined
214 setFrameConfig(frameModelSelected.paramValue)
215 loadFrameDefaultParameters(frameModelSelected.paramFileName)
216 confirmFrameDialog.close()
221 Layout.fillWidth: true
222 text: frameModelSelected.paramFileName != undefined ?
223 qsTr("No, set frame only") :
224 qsTr("Confirm frame %1").arg(frameModelSelected.name)
227 setFrameConfig(frameModelSelected.paramValue)
228 confirmFrameDialog.close()