1919#include " AmplifierController.h"
2020#include " app_icondata.h"
2121#include " TouchCalibrator.h"
22+ #include " TestingDialogController.h"
2223
2324const char pgmVersionHeader[] PROGMEM = " tcMenu Version" ;
2425
2526bool connectedToWifi = false ;
2627EepromAuthenticatorManager authManager;
2728TitleWidget wifiWidget (iconsWifi, 5 , 16 , 12 , nullptr );
28- AnalogMenuItem* adjustMenuItems[] = {&menuSettingsLine1Adj, &menuSettingsLine2Adj, &menuSettingsLine3Adj};
29- AmplifierController controller (adjustMenuItems);
29+ AmplifierController controller;
3030
3131void prepareWifiForUse ();
3232
@@ -54,6 +54,8 @@ void setup() {
5454 menuDirect.setBoolean (true , true );
5555 });
5656
57+ controller.initialise ();
58+
5759 touchScreen.calibrateMinMaxValues (0 .240F , 0 .895F , 0 .09F , 0 .88F );
5860
5961 renderer.setCustomDrawingHandler (new TouchScreenCalibrator (&touchScreen));
@@ -92,6 +94,8 @@ void setup() {
9294 dlg->show (pgmVersionHeader, false );
9395 });
9496
97+ menuStatusDataList.setNumberOfRows (5 );
98+
9599 // If your app relies on getting the callbacks after a menuMgr.load(..) has finished then this does the callbacks
96100 triggerAllChangedCallbacks ();
97101}
@@ -155,45 +159,14 @@ void CALLBACK_FUNCTION onMuteSound(int id) {
155159 controller.onMute (menuMute.getBoolean ());
156160}
157161
158- class TestingDialogController : public BaseDialogController {
159- private:
160- MenuBasedDialog* theDialog;
161- public:
162- void initialiseAndGetHeader (BaseDialog *dialog, char *buffer, size_t bufferSize) override {
163- theDialog = reinterpret_cast <MenuBasedDialog *>(dialog);
164- strcpy (buffer, " Test Dialog" );
165- }
166-
167- void dialogDismissed (ButtonType buttonType) override {
168- if (buttonType == BTNTYPE_OK) {
169- theDialog->setButtons (BTNTYPE_NONE, BTNTYPE_CLOSE);
170- theDialog->showRam (" Extra dlg" , true );
171- theDialog->copyIntoBuffer (" more text" );
172- }
173- }
174-
175- bool dialogButtonPressed (int buttonNum) override {
176- return true ;
177- }
178-
179- void copyCustomButtonText (int buttonNumber, char *buffer, size_t bufferSize) override {
180- buffer[0 ] = 0 ;
181- }
182- } testingDialogController;
183-
184162void CALLBACK_FUNCTION onShowDialogs (int id) {
185- auto * dlg = renderer.getDialog ();
186- if (dlg && !dlg->isInUse ()) {
187- dlg->setButtons (BTNTYPE_OK, BTNTYPE_CANCEL);
188- dlg->showController (true , &testingDialogController);
189- dlg->copyIntoBuffer (" some more text" );
190- }
163+ showDialogs ();
191164}
192165
193166int CALLBACK_FUNCTION fnStatusDataListRtCall (RuntimeMenuItem* item, uint8_t row, RenderFnMode mode, char * buffer, int bufferSize) {
194167 switch (mode) {
195168 case RENDERFN_INVOKE:
196- if (renderer.getDialog () && renderer.getDialog ()->isInUse ()) {
169+ if (row != LIST_PARENT_ITEM_POS && renderer.getDialog () && ! renderer.getDialog ()->isInUse ()) {
197170 renderer.getDialog ()->setButtons (BTNTYPE_NONE, BTNTYPE_CLOSE);
198171 renderer.getDialog ()->showRam (" List select" , false );
199172 char sz[10 ];
@@ -212,3 +185,48 @@ int CALLBACK_FUNCTION fnStatusDataListRtCall(RuntimeMenuItem* item, uint8_t row,
212185 default : return false ;
213186 }
214187}
188+
189+ int CALLBACK_FUNCTION fnChannelSettingsChannelRtCall (RuntimeMenuItem * item, uint8_t row, RenderFnMode mode, char * buffer, int bufferSize) {
190+ switch (mode) {
191+ case RENDERFN_INVOKE: {
192+ auto *eeprom = menuMgr.getEepromAbstraction ();
193+ auto romPos = menuChannels.getEepromStart () + (row * menuChannels.getItemWidth ());
194+ eeprom->readIntoMemArray ((uint8_t *) menuChannelSettingsName.getTextValue (), romPos, menuChannels.getItemWidth ());
195+ menuChannelSettingsLevelTrim.setCurrentValue (controller.getTrim (row));
196+ return true ;
197+ }
198+ case RENDERFN_NAME:
199+ strcpy (buffer, " Channel" );
200+ return true ;
201+ case RENDERFN_VALUE:
202+ strcpy (buffer, " Line" );
203+ fastltoa (buffer, row + 1 , 2 , NOT_PADDED, bufferSize);
204+ return true ;
205+ case RENDERFN_EEPROM_POS: return 0xFFFF ; // lists are generally not saved to EEPROM
206+ default : return false ;
207+ }
208+ }
209+
210+ void CALLBACK_FUNCTION onChannelSetttingsUpdate (int id) {
211+ auto *eeprom = menuMgr.getEepromAbstraction ();
212+ auto romPos = menuChannels.getEepromStart () + (menuChannelSettingsChannel.getCurrentValue () * menuChannels.getItemWidth ());
213+ eeprom->writeArrayToRom (romPos, (uint8_t *) menuChannelSettingsName.getTextValue (), menuChannels.getItemWidth ());
214+ controller.setTrim (menuChannelSettingsChannel.getCurrentValue (), menuChannelSettingsLevelTrim.getCurrentValue ());
215+ if (renderer.getDialog () && !renderer.getDialog ()->isInUse ()) {
216+ renderer.getDialog ()->setButtons (BTNTYPE_NONE, BTNTYPE_OK);
217+ renderer.getDialog ()->showRam (" Channel setting saved" , true );
218+ char sz[5 ];
219+ ltoaClrBuff (sz, menuChannelSettingsChannel.getCurrentValue (), 2 , NOT_PADDED, sizeof sz);
220+ renderer.getDialog ()->copyIntoBuffer (sz);
221+ }
222+ }
223+
224+ void CALLBACK_FUNCTION onSaveSettings (int id) {
225+ menuMgr.save ();
226+ EEPROM.commit ();
227+
228+ if (renderer.getDialog () && !renderer.getDialog ()->isInUse ()) {
229+ renderer.getDialog ()->setButtons (BTNTYPE_NONE, BTNTYPE_OK);
230+ renderer.getDialog ()->showRam (" Committed all items" , true );
231+ }
232+ }
0 commit comments