Added multi menu function

Also corrected Dutch translation.
This commit is contained in:
Sjef Verhoeven PE5PVB
2023-06-05 21:24:30 +02:00
parent fb662d7922
commit f2ba6218d9
2 changed files with 439 additions and 343 deletions

View File

@@ -49,10 +49,12 @@ bool Stereostatusold;
bool StereoToggle = true; bool StereoToggle = true;
bool store; bool store;
bool tuned; bool tuned;
byte language = 0; byte language;
byte tunemode; byte tunemode;
byte memorypos; byte memorypos;
byte memoryposold; byte memoryposold;
byte menupage = 2;
byte menupagestotal = 2;
bool USBstatus; bool USBstatus;
bool XDRMute; bool XDRMute;
byte band; byte band;
@@ -155,8 +157,8 @@ TFT_eSprite sprite = TFT_eSprite(&tft);
void setup() { void setup() {
setupmode = true; setupmode = true;
EEPROM.begin(221); EEPROM.begin(221);
if (EEPROM.readByte(43) != 16) { if (EEPROM.readByte(43) != 17) {
EEPROM.writeByte(43, 16); EEPROM.writeByte(43, 17);
EEPROM.writeUInt(0, 10000); EEPROM.writeUInt(0, 10000);
EEPROM.writeInt(4, 0); EEPROM.writeInt(4, 0);
EEPROM.writeInt(8, 0); EEPROM.writeInt(8, 0);
@@ -180,6 +182,7 @@ void setup() {
EEPROM.writeByte(54, 0); EEPROM.writeByte(54, 0);
EEPROM.writeInt(55, 20); EEPROM.writeInt(55, 20);
EEPROM.writeByte(59, 1); EEPROM.writeByte(59, 1);
EEPROM.writeByte(91, 0);
for (int i = 0; i < 30; i++) EEPROM.writeByte(i + 60, 0); for (int i = 0; i < 30; i++) EEPROM.writeByte(i + 60, 0);
for (int i = 0; i < 30; i++) EEPROM.writeUInt((i * 4) + 100, 8750); for (int i = 0; i < 30; i++) EEPROM.writeUInt((i * 4) + 100, 8750);
EEPROM.commit(); EEPROM.commit();
@@ -208,6 +211,7 @@ void setup() {
TEF = EEPROM.readByte(54); TEF = EEPROM.readByte(54);
LowLevelSet = EEPROM.readInt(55); LowLevelSet = EEPROM.readInt(55);
showrdserrors = EEPROM.readByte(59); showrdserrors = EEPROM.readByte(59);
language = EEPROM.readByte(91);
for (int i = 0; i < 30; i++) memoryband[i] = EEPROM.readByte(i + 60); for (int i = 0; i < 30; i++) memoryband[i] = EEPROM.readByte(i + 60);
for (int i = 0; i < 30; i++) memory[i] = EEPROM.readUInt((i * 4) + 100); for (int i = 0; i < 30; i++) memory[i] = EEPROM.readUInt((i * 4) + 100);
btStop(); btStop();
@@ -714,6 +718,8 @@ void ModeButtonPress() {
EEPROM.writeInt(32, HighCutLevel); EEPROM.writeInt(32, HighCutLevel);
EEPROM.writeInt(36, HighCutOffset); EEPROM.writeInt(36, HighCutOffset);
EEPROM.writeInt(55, LowLevelSet); EEPROM.writeInt(55, LowLevelSet);
EEPROM.writeByte(59, showrdserrors);
EEPROM.writeByte(91, language);
EEPROM.commit(); EEPROM.commit();
} }
while (digitalRead(MODEBUTTON) == LOW) delay(50); while (digitalRead(MODEBUTTON) == LOW) delay(50);
@@ -836,6 +842,8 @@ void ButtonPress() {
menuopen = true; menuopen = true;
tft.drawRoundRect(30, 40, 240, 160, 5, TFT_WHITE); tft.drawRoundRect(30, 40, 240, 160, 5, TFT_WHITE);
tft.fillRoundRect(32, 42, 236, 156, 5, TFT_BLACK); tft.fillRoundRect(32, 42, 236, 156, 5, TFT_BLACK);
switch (menupage) {
case 1:
switch (menuoption) { switch (menuoption) {
case 30: case 30:
tft.setTextColor(TFT_WHITE); tft.setTextColor(TFT_WHITE);
@@ -922,6 +930,24 @@ void ButtonPress() {
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4); tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
break; break;
} }
break;
case 2:
switch (menuoption) {
case 30:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][40], 150, 70, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawCentreString(myLanguage[language][0], 150, 110, 4);
break;
case 50:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][38], 150, 70, 4);
tft.setTextColor(TFT_YELLOW);
if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 150, 110, 4); else tft.drawCentreString(myLanguage[language][30], 150, 110, 4);
break;
}
}
} else { } else {
menuopen = false; menuopen = false;
BuildMenu(); BuildMenu();
@@ -962,9 +988,16 @@ void KeyUp() {
if (menuopen == false) { if (menuopen == false) {
tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_BLACK); tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_BLACK);
menuoption += 20; menuoption += 20;
if (menuoption > 210) menuoption = 30; if (menuoption > 210) {
menupage++;
if (menupage > menupagestotal) menupage = 1;
menuoption = 30;
BuildMenu();
}
tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE); tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE);
} else { } else {
switch (menupage) {
case 1:
switch (menuoption) { switch (menuoption) {
case 30: case 30:
tft.setTextColor(TFT_BLACK); tft.setTextColor(TFT_BLACK);
@@ -1078,6 +1111,27 @@ void KeyUp() {
analogWrite(CONTRASTPIN, ContrastSet * 2 + 27); analogWrite(CONTRASTPIN, ContrastSet * 2 + 27);
break; break;
} }
break;
case 2:
switch (menuoption) {
case 30:
tft.setTextColor(TFT_BLACK);
tft.drawCentreString(myLanguage[language][0], 150, 110, 4);
language ++;
if (language == (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = 0;
tft.setTextColor(TFT_YELLOW);
tft.drawCentreString(myLanguage[language][0], 150, 110, 4);
break;
case 50:
tft.setTextColor(TFT_BLACK);
if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 150, 110, 4); else tft.drawCentreString(myLanguage[language][30], 150, 110, 4);
if (showrdserrors) showrdserrors = false; else showrdserrors = true;
tft.setTextColor(TFT_YELLOW);
if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 150, 110, 4); else tft.drawCentreString(myLanguage[language][30], 150, 110, 4);
break;
}
}
} }
} }
} }
@@ -1115,10 +1169,15 @@ void KeyDown() {
tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_BLACK); tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_BLACK);
menuoption -= 20; menuoption -= 20;
if (menuoption < 30) { if (menuoption < 30) {
menupage--;
if (menupage == 0) menupage = menupagestotal;
menuoption = 210; menuoption = 210;
BuildMenu();
} }
tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE); tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE);
} else { } else {
switch (menupage) {
case 1:
switch (menuoption) { switch (menuoption) {
case 30: case 30:
tft.setTextColor(TFT_BLACK); tft.setTextColor(TFT_BLACK);
@@ -1234,6 +1293,28 @@ void KeyDown() {
analogWrite(CONTRASTPIN, ContrastSet * 2 + 27); analogWrite(CONTRASTPIN, ContrastSet * 2 + 27);
break; break;
} }
break;
case 2:
switch (menuoption) {
case 30:
tft.setTextColor(TFT_BLACK);
tft.drawCentreString(myLanguage[language][0], 150, 110, 4);
language --;
if (language > (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = (sizeof (myLanguage) / sizeof (myLanguage[0])) - 1;
tft.setTextColor(TFT_YELLOW);
tft.drawCentreString(myLanguage[language][0], 150, 110, 4);
break;
case 50:
tft.setTextColor(TFT_BLACK);
if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 150, 110, 4); else tft.drawCentreString(myLanguage[language][30], 150, 110, 4);
if (showrdserrors) showrdserrors = false; else showrdserrors = true;
tft.setTextColor(TFT_YELLOW);
if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 150, 110, 4); else tft.drawCentreString(myLanguage[language][30], 150, 110, 4);
break;
}
}
} }
} }
} }
@@ -1393,9 +1474,11 @@ void BuildMenu() {
tft.setTextColor(TFT_SKYBLUE); tft.setTextColor(TFT_SKYBLUE);
tft.drawString(myLanguage[language][41], 10, 4, 2); tft.drawString(myLanguage[language][41], 10, 4, 2);
tft.setTextColor(TFT_WHITE); tft.setTextColor(TFT_WHITE);
tft.drawRightString(VERSION, 305, 4, 2); tft.drawRightString(String(menupage) + "/" + String(menupagestotal), 305, 4, 2);
tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE); tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE);
tft.setTextColor(TFT_WHITE); tft.setTextColor(TFT_WHITE);
switch (menupage) {
case 1:
tft.drawRightString("dB", 305, 30, 2); tft.drawRightString("dB", 305, 30, 2);
tft.drawRightString("MHz", 305, 50, 2); tft.drawRightString("MHz", 305, 50, 2);
tft.drawRightString("MHz", 305, 70, 2); tft.drawRightString("MHz", 305, 70, 2);
@@ -1427,6 +1510,16 @@ void BuildMenu() {
if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 270, 170, 2); else tft.drawRightString(myLanguage[language][30], 270, 170, 2); if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 270, 170, 2); else tft.drawRightString(myLanguage[language][30], 270, 170, 2);
tft.drawRightString(String(LowLevelSet, DEC), 270, 190, 2); tft.drawRightString(String(LowLevelSet, DEC), 270, 190, 2);
tft.drawRightString(String(ContrastSet, DEC), 270, 210, 2); tft.drawRightString(String(ContrastSet, DEC), 270, 210, 2);
break;
case 2:
tft.drawString(myLanguage[language][39], 20, 30, 2);
tft.drawString(myLanguage[language][38], 20, 50, 2);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(myLanguage[language][0], 305, 30, 2);
if (showrdserrors) tft.drawRightString(myLanguage[language][42], 305, 50, 2); else tft.drawRightString(myLanguage[language][30], 305, 50, 2);
break;
}
analogWrite(SMETERPIN, 0); analogWrite(SMETERPIN, 0);
} }

View File

@@ -1,6 +1,6 @@
// [number of languages][number of texts][max. length of text] // [number of languages][number of texts][max. length of text]
const char myLanguage[3][42][50] = { const char myLanguage[3][43][50] = {
{ "English", { "English",
"Rotary direction changed", "Rotary direction changed",
"Please release button", "Please release button",
@@ -41,8 +41,9 @@ const char myLanguage[3][42][50] = {
"Please restart tuner", "Please restart tuner",
"Show RDS errors", "Show RDS errors",
"Language", "Language",
"Choose your language", "Choose language",
"PRESS MODE TO EXIT AND STORE" "PRESS MODE TO EXIT AND STORE",
"On"
}, },
{ "Nederlands", { "Nederlands",
@@ -60,9 +61,9 @@ const char myLanguage[3][42][50] = {
"Lage bandgrens:", "Lage bandgrens:",
"Hoge bandgrens:", "Hoge bandgrens:",
"RF niveau afwijking:", "RF niveau afwijking:",
"Stereo signaalgrens:", "Stereo grens:",
"Hoge tonen afval:", "Hoge tonen afval:",
"Hoge tonen afval grens:", "Hoog afval grens:",
"Laag signaal grens:", "Laag signaal grens:",
"Helderheid:", "Helderheid:",
"Stel volume in", "Stel volume in",
@@ -83,10 +84,11 @@ const char myLanguage[3][42][50] = {
"Tuner niet herkend!", "Tuner niet herkend!",
"Tuner versie ingesteld: v", "Tuner versie ingesteld: v",
"Herstart de tuner", "Herstart de tuner",
"RDS fouten weergeven", "Toon RDS fouten",
"Taal", "Taal",
"Kies uw taal", "Kies taal",
"DRUK OP MODE OM AF TE SLUITEN" "DRUK OP MODE OM AF TE SLUITEN",
"Aan"
}, },
{ "Polski", { "Polski",
"Kierunek obrotu zmieniony", "Kierunek obrotu zmieniony",
@@ -129,7 +131,8 @@ const char myLanguage[3][42][50] = {
"Pokaz bledy RDS", "Pokaz bledy RDS",
"Jezyk", "Jezyk",
"Wybierz swoj jezyk", "Wybierz swoj jezyk",
"WCISNIJ MODE ABY ZAMKNAC I ZAPISAC" "WCISNIJ MODE ABY ZAMKNAC I ZAPISAC",
"On" // Needs translation!
} }