@@ -11,6 +11,7 @@ import Qt.labs.settings 1.0
1111import QtQuick.Dialogs 1.3
1212import "qmlcomponents"
1313import "qmlcomponents/SettingsLabels.js" as SettingsLabels
14+ import "qmlcomponents/FleetProfilesHelper.js" as FleetProfilesHelper
1415
1516Rectangle {
1617 id: page
@@ -29,10 +30,14 @@ Rectangle {
2930
3031 property var settingsMap: ({})
3132 property bool settingsMapLoaded: false
33+ onVisibleChanged: {
34+ if (visible && settingsMapLoaded) settingsMap = JSON .parse (JSON .stringify (FleetProfilesHelper .getSettingsMap (imageWriter)))
35+ }
3236
3337 // refactored settings
3438 property string bootType
3539 property string fileName
40+ property string platform: imageWriter .getValue (" platform" ) || " "
3641 property string sbc
3742 property string camera
3843 property string camera2
@@ -165,6 +170,33 @@ Rectangle {
165170 width: deviceRoleCard .availableWidth
166171 spacing: 10
167172
173+ Label { text: qsTr (" Hardware platform" ); Layout .fillWidth : true }
174+ ModernComboBox {
175+ Layout .fillWidth : true
176+ model: settingsMap .platforms || []
177+ textRole: " label"
178+ currentIndex: {
179+ for (var n= 0 ; n< model .length ; ++ n) if (model[n].id === page .platform ) return n
180+ return - 1
181+ }
182+ displayText: currentIndex >= 0 ? currentText : qsTr (" Choose hardware platform" )
183+ onActivated: {
184+ var board = model[currentIndex]
185+ page .platform = board .id
186+ sbc = board .sbc
187+ imageWriter .setSetting (" platform" , board .id )
188+ imageWriter .setSetting (" sbc" , board .sbc )
189+ if (board .roles .indexOf (bootType .toLowerCase ()) < 0 ) bootType = board .roles [0 ] === " air" ? " Air" : " Ground"
190+ rpi = sbc === " rpi" ; rock5 = sbc === " rock-5a" || sbc === " rock-5b" || sbc === " radxa-cm5" ; rock3 = sbc === " zero3w" || sbc === " radxa-cm3" ; page .refreshCameraOptions ()
191+ }
192+ }
193+ InitialSettingsPanel {
194+ id: initialDefaults
195+ Layout .fillWidth : true
196+ settingsOwner: imageWriter
197+ fields: settingsMap .initialFields || []
198+ role: String (bootType).toLowerCase ()
199+ }
168200 ModernComboBox {
169201 id: bootTypeSelector
170202 Layout .fillWidth : true
@@ -1074,86 +1106,15 @@ Rectangle {
10741106 else if (! supportsAir)
10751107 bootType = " Ground"
10761108
1077- if (normalizedPlatform .indexOf (" raspberry-pi" ) === 0 ) {
1078- imageWriter .setSetting (" sbc" , " rpi" );
1079- sbc = " rpi"
1080- rpi= true ;
1081- rock5= false ;
1082- rock3= false ;
1083- }
1084- else if (normalizedFileName .includes (" rock5a" ) || normalizedFileName .includes (" rock-5a" )) {
1085- imageWriter .setSetting (" sbc" , " rock-5a" );
1086- sbc = " rock-5a"
1087- rpi= false ; rock5= true ; rock3= false ;
1088- }
1089- else if (normalizedFileName .includes (" rock5b" ) || normalizedFileName .includes (" rock-5b" )) {
1090- imageWriter .setSetting (" sbc" , " rock-5b" );
1091- sbc = " rock-5b"
1092- rpi= false ; rock5= true ; rock3= false ;
1093- }
1094- else if (normalizedFileName .includes (" zero3" ) || normalizedFileName .includes (" zero-3" )) {
1095- imageWriter .setSetting (" sbc" , " zero3w" );
1096- sbc = " zero3w"
1097- rpi= false ; rock5= false ; rock3= true ;
1098- }
1099- else if (normalizedFileName .includes (" radxa-cm5" ) || normalizedFileName .includes (" radxa_cm5" )) {
1100- sbc = " radxa-cm5" ; rpi= false ; rock5= true ; rock3= false ;
1101- }
1102- else if (normalizedFileName .includes (" radxa-cm3" ) || normalizedFileName .includes (" radxa_cm3" )) {
1103- imageWriter .setSetting (" sbc" , " radxa-cm3" );
1104- sbc = " radxa-cm3"
1105- rpi= false ; rock5= false ; rock3= true ;
1106- }
1107- else if (normalizedFileName .includes (" qrb5165" )) {
1108- sbc = " qrb5165" ; rpi= false ; rock5= false ; rock3= false ;
1109- }
1110- else if (normalizedFileName .includes (" qcs405" )) {
1111- sbc = " qcs405" ; rpi= false ; rock5= false ; rock3= false ;
1112- }
1113- else if (normalizedFileName .includes (" openipc" )) {
1114- sbc = " openipc" ; rpi= false ; rock5= false ; rock3= false ;
1115- }
1116- else if (normalizedFileName .includes (" rv1103" ) || normalizedFileName .includes (" rv1106" ) || normalizedFileName .includes (" rv1126" ) || normalizedFileName .includes (" luckfox" )) {
1117- sbc = " rockchip-rv" ; rpi= false ; rock5= false ; rock3= false ;
1118- }
1119- else if (normalizedFileName .includes (" orqa" )) {
1120- sbc = " orqa" ; rpi= false ; rock5= false ; rock3= false ;
1121- }
1122- else if (normalizedFileName .includes (" x20" )) {
1123- sbc = " x20" ; rpi= false ; rock5= false ; rock3= false ;
1124- }
1125- else if (normalizedFileName .includes (" x21" )) {
1126- sbc = " x21" ; rpi= false ; rock5= false ; rock3= false ;
1127- }
1128- else if (normalizedFileName .includes (" cubie" ) || normalizedFileName .includes (" a733" )) {
1129- sbc = " cubie" ; rpi= false ; rock5= false ; rock3= false ;
1130- }
1131- else if (normalizedFileName .includes (" xavier" ) || normalizedFileName .includes (" jetson" )) {
1132- sbc = " nvidia-xavier" ; rpi= false ; rock5= false ; rock3= false ;
1133- }
1134- else if (normalizedFileName .includes (" uvx" ) || normalizedFileName .includes (" uvx-mod" )) {
1135- sbc = " uvx" ; rpi= false ; rock5= false ; rock3= false ;
1136- }
1137- else if (normalizedFileName .includes (" imx8" ) || normalizedFileName .includes (" nxp" )) {
1138- sbc = " nxp-imx8" ; rpi= false ; rock5= false ; rock3= false ;
1139- }
1140- else if (normalizedFileName .includes (" x86" ) || normalizedFileName .includes (" amd64" )) {
1141- sbc = " x86" ; rpi= false ; rock5= false ; rock3= false ;
1142- }
1143- else if (normalizedFileName .includes (" raspberry" ) || normalizedFileName .includes (" rpi" ) || normalizedFileName .includes (" image-pi" ) || normalizedFileName .includes (" image_pi" )) {
1144- imageWriter .setSetting (" sbc" , " rpi" );
1145- sbc = " rpi"
1146- rpi= true ;
1147- rock5= false ;
1148- rock3= false ;
1149- }
1150- else {
1151- imageWriter .setSetting (" sbc" , " unknown" );
1152- sbc = " unknown"
1153- rpi= false ;
1154- rock5= false ;
1155- rock3= false ;
1156- }
1109+ FleetProfilesHelper .getSettingsMap (imageWriter)
1110+ var board = FleetProfilesHelper .platformForHint (normalizedPlatform) || FleetProfilesHelper .platformForHint (normalizedFileName) ||
1111+ FleetProfilesHelper .platformForHardware (imageWriter .getValue (" platform" ))
1112+ platform = board ? board .id : " "
1113+ sbc = board ? board .sbc : " unknown"
1114+ rpi = sbc === " rpi"
1115+ rock5 = sbc === " rock-5a" || sbc === " rock-5b" || sbc === " radxa-cm5"
1116+ rock3 = sbc === " zero3w" || sbc === " radxa-cm3"
1117+ imageWriter .setSetting (" platform" , platform)
11571118 imageWriter .setSetting (" sbc" , sbc)
11581119 imageWriter .setSetting (" bootType" , bootType)
11591120
@@ -1241,8 +1202,10 @@ Rectangle {
12411202 function availableBootOptions () {
12421203 if (! settingsMap .bootType || ! settingsMap .bootType .options )
12431204 return []
1205+ var board = FleetProfilesHelper .platformForHardware (platform)
12441206 return settingsMap .bootType .options .filter (function (option ) {
12451207 return option .id && option .id .length > 0 &&
1208+ (! board || board .roles .indexOf (option .id .toLowerCase ()) >= 0 ) &&
12461209 ((option .id === " Air" && supportsAir) ||
12471210 (option .id === " Ground" && supportsGround))
12481211 })
@@ -1269,6 +1232,8 @@ Rectangle {
12691232 }
12701233 }
12711234
1235+ imageWriter .setSetting (" platform" , platform)
1236+ imageWriter .setSetting (" initialParameterDefaults" , JSON .stringify (initialDefaults .exportDefaults ()))
12721237 imageWriter .setSetting (" bootType" , bootType)
12731238 imageWriter .setSetting (" camera" , camera)
12741239 imageWriter .setSetting (" camera2" , camera2)
@@ -1323,7 +1288,7 @@ Rectangle {
13231288 return
13241289
13251290 try {
1326- settingsMap = JSON . parse (imageWriter . readResourceText ( " :/doc/openhd_settings_map.json " ) )
1291+ settingsMap = FleetProfilesHelper . getSettingsMap (imageWriter)
13271292 settingsMapLoaded = true
13281293 } catch (e) {
13291294 console .log (" Failed to load OpenHD settings map: " + e)
0 commit comments