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

View File

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