@@ -28,6 +28,10 @@ EepromAuthenticatorManager authManager;
2828TitleWidget wifiWidget (iconsWifi, 5 , 16 , 12 , nullptr );
2929AmplifierController controller;
3030
31+ const char * simFilesForList[] = { " SuperFile1.txt" , " CustomFile.cpp" , " SuperDuper.h" , " File303.cpp" , " File123443.h" };
32+ #define SIM_FILES_ARRAY_SIZE 5
33+
34+
3135void prepareWifiForUse ();
3236
3337void setup () {
@@ -94,7 +98,7 @@ void setup() {
9498 dlg->show (pgmVersionHeader, false );
9599 });
96100
97- menuStatusDataList.setNumberOfRows (5 );
101+ menuStatusDataList.setNumberOfRows (SIM_FILES_ARRAY_SIZE );
98102
99103 // If your app relies on getting the callbacks after a menuMgr.load(..) has finished then this does the callbacks
100104 triggerAllChangedCallbacks ();
@@ -164,6 +168,11 @@ void CALLBACK_FUNCTION onShowDialogs(int id) {
164168}
165169
166170int CALLBACK_FUNCTION fnStatusDataListRtCall (RuntimeMenuItem* item, uint8_t row, RenderFnMode mode, char * buffer, int bufferSize) {
171+ if (row > SIM_FILES_ARRAY_SIZE && row != LIST_PARENT_ITEM_POS) {
172+ // you wouldn't need this in a production build, it is for our debugging to do bounds checking.
173+ serdebugF2 (" picked row > max!! " , row);
174+ return false ;
175+ }
167176 switch (mode) {
168177 case RENDERFN_INVOKE:
169178 if (row != LIST_PARENT_ITEM_POS && renderer.getDialog () && !renderer.getDialog ()->isInUse ()) {
@@ -175,11 +184,21 @@ int CALLBACK_FUNCTION fnStatusDataListRtCall(RuntimeMenuItem* item, uint8_t row,
175184 }
176185 return true ;
177186 case RENDERFN_NAME:
178- ltoaClrBuff (buffer, row, 3 , NOT_PADDED, bufferSize);
187+ if (row == LIST_PARENT_ITEM_POS) {
188+ strcpy (buffer, " Sim Files" );
189+ }
190+ else {
191+ ltoaClrBuff (buffer, row, 3 , NOT_PADDED, bufferSize);
192+ }
179193 return true ;
180194 case RENDERFN_VALUE:
181- buffer[0 ] = ' V' ; buffer[1 ]=0 ;
182- fastltoa (buffer, row, 3 , NOT_PADDED, bufferSize);
195+ if (row == LIST_PARENT_ITEM_POS) {
196+ strcpy (buffer, " >>" );
197+ }
198+ else {
199+ strncpy (buffer, simFilesForList[row], bufferSize);
200+ buffer[bufferSize - 1 ] = 0 ;
201+ }
183202 return true ;
184203 case RENDERFN_EEPROM_POS: return 0xffff ; // lists are generally not saved to EEPROM
185204 default : return false ;
0 commit comments