diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 70f9abb..f73c08b 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -559,14 +559,6 @@ void setup() { FrequencySprite.createSprite(200, 50); FrequencySprite.setTextDatum(TR_DATUM); - switch (freqfont) { - case 0: FrequencySprite.loadFont(FREQFONT0); break; - case 1: FrequencySprite.loadFont(FREQFONT1); break; - case 2: FrequencySprite.loadFont(FREQFONT2); break; - case 3: FrequencySprite.loadFont(FREQFONT3); break; - case 4: FrequencySprite.loadFont(FREQFONT4); break; - case 5: FrequencySprite.loadFont(FREQFONT5); break; - } AdvRadiotextSprite.createSprite(162, 19); AdvRadiotextSprite.setTextDatum(TL_DATUM); @@ -583,21 +575,7 @@ void setup() { OneBigLineSprite.createSprite(270, 30); OneBigLineSprite.setSwapBytes(true); - if (language == LANGUAGE_CHS) { - RadiotextSprite.loadFont(FONT16_CHS); - AdvRadiotextSprite.loadFont(FONT16_CHS); - RDSSprite.loadFont(FONT16_CHS); - SquelchSprite.loadFont(FONT16_CHS); - FullLineSprite.loadFont(FONT16_CHS); - OneBigLineSprite.loadFont(FONT28_CHS); - } else { - RadiotextSprite.loadFont(FONT16); - AdvRadiotextSprite.loadFont(FONT16); - RDSSprite.loadFont(FONT16); - SquelchSprite.loadFont(FONT16); - FullLineSprite.loadFont(FONT16); - OneBigLineSprite.loadFont(FONT28); - } + UpdateFonts(); if (digitalRead(BWBUTTON) == LOW && digitalRead(ROTARY_BUTTON) == HIGH) { if (rotarymode == 0) rotarymode = 1; else rotarymode = 0; @@ -2000,28 +1978,7 @@ void ModeButtonPress() { RDSSprite.unloadFont(); SquelchSprite.unloadFont(); FrequencySprite.unloadFont(); - if (language == LANGUAGE_CHS) { - RadiotextSprite.loadFont(FONT16_CHS); - AdvRadiotextSprite.loadFont(FONT16_CHS); - RDSSprite.loadFont(FONT16_CHS); - SquelchSprite.loadFont(FONT16_CHS); - FullLineSprite.loadFont(FONT16_CHS); - } else { - RadiotextSprite.loadFont(FONT16); - AdvRadiotextSprite.loadFont(FONT16); - RDSSprite.loadFont(FONT16); - SquelchSprite.loadFont(FONT16); - FullLineSprite.loadFont(FONT16); - } - switch (freqfont) { - case 0: FrequencySprite.loadFont(FREQFONT0); break; - case 1: FrequencySprite.loadFont(FREQFONT1); break; - case 2: FrequencySprite.loadFont(FREQFONT2); break; - case 3: FrequencySprite.loadFont(FREQFONT3); break; - case 4: FrequencySprite.loadFont(FREQFONT4); break; - case 5: FrequencySprite.loadFont(FREQFONT5); break; - } - + UpdateFonts(); BuildDisplay(); ShowSignalLevel(); ShowBW(); @@ -3744,3 +3701,30 @@ void deepSleep() { esp_sleep_enable_ext0_wakeup(GPIO_NUM_34, LOW); esp_deep_sleep_start(); } + +void UpdateFonts() { + if (language == LANGUAGE_CHS) { + RadiotextSprite.loadFont(FONT16_CHS); + AdvRadiotextSprite.loadFont(FONT16_CHS); + RDSSprite.loadFont(FONT16_CHS); + SquelchSprite.loadFont(FONT16_CHS); + FullLineSprite.loadFont(FONT16_CHS); + OneBigLineSprite.loadFont(FONT28_CHS); + } else { + RadiotextSprite.loadFont(FONT16); + AdvRadiotextSprite.loadFont(FONT16); + RDSSprite.loadFont(FONT16); + SquelchSprite.loadFont(FONT16); + FullLineSprite.loadFont(FONT16); + OneBigLineSprite.loadFont(FONT28); + } + + switch (freqfont) { + case 0: FrequencySprite.loadFont(FREQFONT0); break; + case 1: FrequencySprite.loadFont(FREQFONT1); break; + case 2: FrequencySprite.loadFont(FREQFONT2); break; + case 3: FrequencySprite.loadFont(FREQFONT3); break; + case 4: FrequencySprite.loadFont(FREQFONT4); break; + case 5: FrequencySprite.loadFont(FREQFONT5); break; + } +} diff --git a/src/gui.cpp b/src/gui.cpp index fae10a0..8ed95b1 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -6,7 +6,6 @@ #include #include - byte menuitem; byte items[8] = {8, static_cast(dynamicspi ? 7 : 6), 7, 10, 9, 10, 10, 6}; @@ -479,8 +478,16 @@ void BuildAFScreen() { } void ShowOneLine(byte position, byte item, bool selected) { - FullLineSprite.pushImage (-8, -position - 2, 320, 240, configurationbackground); - if (selected) FullLineSprite.pushImage(0, 0, 304, 20, selector); + switch (CurrentSkin) { + case 0: + FullLineSprite.fillSprite(BackgroundColor); + break; + + case 1: + FullLineSprite.pushImage (-8, -position - 2, 320, 240, configurationbackground); + if (selected) FullLineSprite.pushImage(0, 0, 304, 20, selector); + break; + } switch (item) { case 0: @@ -488,13 +495,13 @@ void ShowOneLine(byte position, byte item, bool selected) { case INDEX: FullLineSprite.setTextDatum(TC_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][177], 152, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][177]), 152, 3); break; case MAINSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][108], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][108]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -509,7 +516,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AUDIOSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][20], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][20]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -521,7 +528,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case DISPLAYSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][39], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][39]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -531,7 +538,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case RDSSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][38], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][38]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -547,7 +554,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][21], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][21]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -559,7 +566,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][44], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][44]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -569,7 +576,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case CONNECTIVITY: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][50], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][50]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -583,13 +590,13 @@ void ShowOneLine(byte position, byte item, bool selected) { case INDEX: FullLineSprite.setTextDatum(TC_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][178], 152, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][178]), 152, 3); break; case MAINSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][107], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][107]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -599,7 +606,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AUDIOSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][45], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][45]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -609,7 +616,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case DISPLAYSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][29], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][29]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -621,7 +628,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case RDSSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][46], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][46]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -632,7 +639,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][22], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][22]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -644,7 +651,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][64], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][64]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -656,7 +663,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case CONNECTIVITY: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][51] + (wifi ? " IP: " + String(WiFi.localIP().toString()) : ""), 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][51] + (wifi ? " IP: " + String(WiFi.localIP().toString()) : "")), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -670,13 +677,13 @@ void ShowOneLine(byte position, byte item, bool selected) { case INDEX: FullLineSprite.setTextDatum(TC_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][179], 152, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][179]), 152, 3); break; case MAINSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][75], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][75]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -688,7 +695,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AUDIOSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][67], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][67]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -698,7 +705,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case DISPLAYSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][63], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][63]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -708,7 +715,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case RDSSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][49], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][49]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -718,7 +725,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][23], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][23]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -730,7 +737,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][97], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][97]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -742,7 +749,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case CONNECTIVITY: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][52], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][52]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -756,13 +763,13 @@ void ShowOneLine(byte position, byte item, bool selected) { case INDEX: FullLineSprite.setTextDatum(TC_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][180], 152, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][180]), 152, 3); break; case MAINSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][62], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][62]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -772,7 +779,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AUDIOSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][25], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][25]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -784,7 +791,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case DISPLAYSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][91], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][91]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -796,7 +803,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case RDSSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][60], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][60]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -806,7 +813,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][24], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][24]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -818,7 +825,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][101], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][101]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -838,7 +845,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case CONNECTIVITY: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][58], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][58]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -852,13 +859,13 @@ void ShowOneLine(byte position, byte item, bool selected) { case INDEX: FullLineSprite.setTextDatum(TC_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][181], 152, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][181]), 152, 3); break; case MAINSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][37], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][37]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -870,7 +877,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AUDIOSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][26], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][26]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -882,7 +889,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case DISPLAYSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][74], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][74]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -898,7 +905,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case RDSSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][61], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][61]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -908,7 +915,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][28], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][28]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -920,7 +927,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][59], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][59]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -930,7 +937,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case CONNECTIVITY: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][197], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][197]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -944,13 +951,13 @@ void ShowOneLine(byte position, byte item, bool selected) { case INDEX: FullLineSprite.setTextDatum(TC_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][182], 152, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][182]), 152, 3); break; case MAINSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][198], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][198]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -962,7 +969,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AUDIOSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][27], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][27]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -974,7 +981,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case DISPLAYSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][173], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][173]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -989,22 +996,22 @@ void ShowOneLine(byte position, byte item, bool selected) { case RDSSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][99], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][99]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); switch (af) { case 0: FullLineSprite.drawString(myLanguage[language][30], 298, 3); break; - case 1: FullLineSprite.drawString(String(myLanguage[language][42]) + "/ REG" + String(myLanguage[language][42]), 298, 3); break; - case 2: FullLineSprite.drawString(String(myLanguage[language][42]) + "/ REG" + String(myLanguage[language][30]), 298, 3); break; + case 1: FullLineSprite.drawString(String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 298, 3); break; + case 2: FullLineSprite.drawString(String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 298, 3); break; } break; case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][43], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][43]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1014,7 +1021,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][185], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][185]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1026,7 +1033,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case CONNECTIVITY: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][205], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][205]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1040,15 +1047,14 @@ void ShowOneLine(byte position, byte item, bool selected) { case INDEX: FullLineSprite.setTextDatum(TC_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][183], 152, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][183]), 152, 3); break; case MAINSETTINGS: if (dynamicspi) { - FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][81], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][81]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -1061,7 +1067,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AUDIOSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][199], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][199]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1073,7 +1079,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case DISPLAYSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][98], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][98]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1083,7 +1089,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case RDSSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][176], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][176]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1093,7 +1099,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][65], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][65]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1105,7 +1111,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][187], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][187]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1119,13 +1125,13 @@ void ShowOneLine(byte position, byte item, bool selected) { case INDEX: FullLineSprite.setTextDatum(TC_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][70], 152, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][70]), 152, 3); break; case DISPLAYSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][78], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][78]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1135,7 +1141,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case RDSSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][196], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][196]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); FullLineSprite.drawString((radio.rds.sortaf ? myLanguage[language][42] : myLanguage[language][30]), 298, 3); @@ -1144,7 +1150,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][90], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][90]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -1161,7 +1167,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][36], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][36]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1177,7 +1183,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case DISPLAYSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][77], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][77]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1187,7 +1193,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case RDSSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][203], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][203]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); FullLineSprite.drawString((radio.rds.fastps ? myLanguage[language][42] : myLanguage[language][30]), 298, 3); @@ -1196,7 +1202,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][100], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][100]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1212,7 +1218,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][169], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][169]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1228,13 +1234,13 @@ void ShowOneLine(byte position, byte item, bool selected) { case INDEX: FullLineSprite.setTextDatum(TC_DATUM); FullLineSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false); - FullLineSprite.drawString(String(myLanguage[language][84]) + " " + String(VERSION), 152, 3); + FullLineSprite.drawString(removeNewline(String(myLanguage[language][84]) + " " + String(VERSION)), 152, 3); break; case DISPLAYSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][85], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][85]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1244,7 +1250,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][82], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][82]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1254,7 +1260,7 @@ void ShowOneLine(byte position, byte item, bool selected) { case AMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(myLanguage[language][82], 6, 3); + FullLineSprite.drawString(removeNewline(myLanguage[language][82]), 6, 3); FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); @@ -1274,21 +1280,10 @@ void BuildMenu() { tft.fillScreen(BackgroundColor); tft.drawRect(0, 0, 320, 240, FrameColor); tft.drawLine(0, 23, 320, 23, FrameColor); - tft.drawRoundRect(3, menuoption + 3, 315, 21, 5, ActiveColor); break; case 1: tft.pushImage (0, 0, 320, 240, configurationbackground); - ShowOneLine(ITEM1, 0, (menuoption == ITEM1 ? true : false)); - ShowOneLine(ITEM2, 1, (menuoption == ITEM2 ? true : false)); - ShowOneLine(ITEM3, 2, (menuoption == ITEM3 ? true : false)); - ShowOneLine(ITEM4, 3, (menuoption == ITEM4 ? true : false)); - ShowOneLine(ITEM5, 4, (menuoption == ITEM5 ? true : false)); - ShowOneLine(ITEM6, 5, (menuoption == ITEM6 ? true : false)); - ShowOneLine(ITEM7, 6, (menuoption == ITEM7 ? true : false)); - ShowOneLine(ITEM8, 7, (menuoption == ITEM8 ? true : false)); - ShowOneLine(ITEM9, 8, (menuoption == ITEM9 ? true : false)); - ShowOneLine(ITEM10, 9, (menuoption == ITEM10 ? true : false)); break; } @@ -1299,249 +1294,19 @@ void BuildMenu() { tftPrint(1, myLanguage[language][189 + menupage - 1], 312, 6, ActiveColor, ActiveColorSmooth, 16); } - if (CurrentSkin == 0) { - switch (menupage) { - case INDEX: - tftPrint(0, myLanguage[language][177], 160, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(0, myLanguage[language][178], 160, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(0, myLanguage[language][179], 160, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(0, myLanguage[language][180], 160, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(0, myLanguage[language][181], 160, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(0, myLanguage[language][182], 160, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(0, myLanguage[language][183], 160, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(0, myLanguage[language][70], 160, ITEM8 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(0, String(myLanguage[language][84]) + " " + String(VERSION), 160, ITEM10 + 6, SecondaryColor, SecondaryColorSmooth, 16); - break; + ShowOneLine(ITEM1, 0, (menuoption == ITEM1 ? true : false)); + ShowOneLine(ITEM2, 1, (menuoption == ITEM2 ? true : false)); + ShowOneLine(ITEM3, 2, (menuoption == ITEM3 ? true : false)); + ShowOneLine(ITEM4, 3, (menuoption == ITEM4 ? true : false)); + ShowOneLine(ITEM5, 4, (menuoption == ITEM5 ? true : false)); + ShowOneLine(ITEM6, 5, (menuoption == ITEM6 ? true : false)); + ShowOneLine(ITEM7, 6, (menuoption == ITEM7 ? true : false)); + ShowOneLine(ITEM8, 7, (menuoption == ITEM8 ? true : false)); + ShowOneLine(ITEM9, 8, (menuoption == ITEM9 ? true : false)); + ShowOneLine(ITEM10, 9, (menuoption == ITEM10 ? true : false)); - case MAINSETTINGS: - tftPrint(-1, myLanguage[language][108], 8, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][107], 8, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][75], 8, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][62], 8, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][37], 8, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][198], 8, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); + if (CurrentSkin == 0) tft.drawRoundRect(3, menuoption + 3, 315, 21, 5, ActiveColor); - - switch (hardwaremodel) { - case BASE_ILI9341: tftPrint(1, myLanguage[language][109], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case PORTABLE_ILI9341: tftPrint(1, myLanguage[language][110 ], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case PORTABLE_TOUCH_ILI9341: tftPrint(1, myLanguage[language][111], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - } - - if (touchrotating) tftPrint(1, myLanguage[language][42], 310, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (tot != 0) tftPrint(1, String(tot), 270, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (tot != 0) tftPrint(1, myLanguage[language][80], 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (usesquelch) tftPrint(1, myLanguage[language][42], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, "dBµV", 310, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(1, "dBµV", 310, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(1, String(fmagc, DEC), 270, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, String(amagc, DEC), 270, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); - - if (dynamicspi) { - tftPrint(1, "MHz", 310, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][81], 8, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); - if (spispeed == SPI_SPEED_DEFAULT) tftPrint(1, String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC), 270, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); - else tftPrint(1, String(spispeed * 10, DEC), 270, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); - } - break; - - case AUDIOSETTINGS: - tftPrint(-1, myLanguage[language][20], 8, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][45], 8, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][67], 8, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][25], 8, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][26], 8, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][27], 8, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][199], 8, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); - - tftPrint(1, "dB", 310, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16); - if (VolSet > 0) tftPrint(1, "+" + String(VolSet, DEC), 270, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, String(VolSet, DEC), 270, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (edgebeep) tftPrint(1, myLanguage[language][42], 310, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (audiomode) tftPrint(1, "MPX", 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, "Stereo", 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (StereoLevel != 0) tftPrint(1, "dBμV", 310, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); - if (StereoLevel != 0) tftPrint(1, String(StereoLevel, DEC), 270, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (HighCutLevel != 0) tftPrint(1, "Hz", 310, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - if (HighCutLevel != 0) tftPrint(1, String(HighCutLevel * 100, DEC), 270, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (HighCutOffset != 0) tftPrint(1, "dBμV", 310, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); - if (HighCutOffset != 0) tftPrint(1, String(HighCutOffset, DEC), 270, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(1, String((fmdeemphasis == DEEMPHASIS_50 ? FM_DEEMPHASIS_50 : FM_DEEMPHASIS_75), DEC), 270, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(1, "μs", 310, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); - break; - - case DISPLAYSETTINGS: - tftPrint(-1, myLanguage[language][39], 8, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][29], 8, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][63], 8, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][91], 8, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][74], 8, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][173], 8, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][98], 8, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][78], 8, ITEM8 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][77], 8, ITEM9 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][85], 8, ITEM10 + 6, ActiveColor, ActiveColorSmooth, 16); - - tftPrint(1, myLanguage[language][0], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, "%", 310, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(1, String(ContrastSet, DEC), 270, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); - - if (showmodulation) tftPrint(1, myLanguage[language][42], 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (screensaverset) tftPrint(1, myLanguage[language][92], 310, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (screensaverset) tftPrint(1, String(screensaverOptions[screensaverset], DEC), 270, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); - - switch (poweroptions) { - case LCD_OFF: tftPrint(1, myLanguage[language][76], 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case LCD_BRIGHTNESS_1_PERCENT: tftPrint(1, myLanguage[language][94], 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case LCD_BRIGHTNESS_A_QUARTER: tftPrint(1, myLanguage[language][95], 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case LCD_BRIGHTNESS_HALF: tftPrint(1, myLanguage[language][96], 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - } - - switch (batteryoptions) { - case BATTERY_NONE: tftPrint(1, myLanguage[language][30], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case BATTERY_VALUE: tftPrint(1, myLanguage[language][174], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case BATTERY_PERCENT: tftPrint(1, myLanguage[language][175], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - } - - tftPrint(1, unitString[unit], 310, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, Skin[CurrentSkin], 310, ITEM8 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, Theme[CurrentTheme], 310, ITEM9 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, FreqFont[freqfont], 310, ITEM10 + 6, PrimaryColor, PrimaryColorSmooth, 16); - break; - - case RDSSETTINGS: - tftPrint(-1, myLanguage[language][38], 8, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][46], 8, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][49], 8, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][60], 8, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][61], 8, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][99], 8, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][176], 8, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][196], 8, ITEM8 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][203], 8, ITEM9 + 6, ActiveColor, ActiveColorSmooth, 16); - - switch (showrdserrors) { - case 0: tftPrint(1, myLanguage[language][30], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case 1: tftPrint(1, myLanguage[language][200], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case 2: tftPrint(1, myLanguage[language][201], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case 3: tftPrint(1, myLanguage[language][202], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - } - - if (region == REGION_EU) tftPrint(1, myLanguage[language][47], 310, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (region == REGION_US) tftPrint(1, myLanguage[language][48], 310, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (radio.underscore) tftPrint(1, myLanguage[language][42], 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (radio.rds.filter) tftPrint(1, myLanguage[language][42], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (radio.rds.pierrors) tftPrint(1, myLanguage[language][42], 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); - - switch (af) { - case 0: tftPrint(1, myLanguage[language][30], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case 1: tftPrint(1, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case 2: tftPrint(1, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - } - - if (radio.rds.rtbuffer) tftPrint(1, myLanguage[language][42], 310, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (radio.rds.sortaf) tftPrint(1, myLanguage[language][42], 310, ITEM8 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM8 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (radio.rds.fastps) tftPrint(1, myLanguage[language][42], 310, ITEM9 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM9 + 6, PrimaryColor, PrimaryColorSmooth, 16); - break; - - case FMSETTINGS: - tftPrint(-1, myLanguage[language][21], 8, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][22], 8, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][23], 8, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][24], 8, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][28], 8, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][43], 8, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][65], 8, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][90], 8, ITEM8 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][100], 8, ITEM9 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][82], 8, ITEM10 + 6, ActiveColor, ActiveColorSmooth, 16); - - tftPrint(1, "MHz", 310, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(1, String(ConverterSet, DEC), 270, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, "MHz", 310, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(1, String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 270, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, "MHz", 310, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(1, String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 270, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, "dB", 310, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); - if (LevelOffset > 0) tftPrint(1, "+" + String(LevelOffset, DEC), 270, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, String(LevelOffset, DEC), 270, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, "dBμV", 310, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(1, String(LowLevelSet, DEC), 270, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (softmutefm) tftPrint(1, myLanguage[language][42], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (fmnb != 0) tftPrint(1, "%", 310, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); - if (fmnb != 0) tftPrint(1, String(fmnb, DEC), 270, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, "kHz", 310, ITEM8 + 6, ActiveColor, ActiveColorSmooth, 16); - - switch (fmdefaultstepsize) { - case 0: tftPrint(1, String(FREQ_FM_STEP_50K * 10, DEC), 270, ITEM8 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case 1: tftPrint(1, String(FREQ_FM_STEP_100K * 10, DEC), 270, ITEM8 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case 2: tftPrint(1, String(FREQ_FM_STEP_200K * 10, DEC), 270, ITEM8 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - } - - switch (bandFM) { - case FM_BAND_ALL: tftPrint(1, myLanguage[language][105] + String(",") + myLanguage[language][106], 310, ITEM9 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case FM_BAND_OIRT: tftPrint(1, myLanguage[language][106], 310, ITEM9 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case FM_BAND_FM: tftPrint(1, myLanguage[language][105], 310, ITEM9 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case FM_BAND_NONE: tftPrint(1, myLanguage[language][83], 310, ITEM9 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - } - tftPrint(1, String(fmscansens), 310, ITEM10 + 6, PrimaryColor, PrimaryColorSmooth, 16); - break; - - case AMSETTINGS: - tftPrint(-1, myLanguage[language][44], 8, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][64], 8, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][97], 8, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][101], 8, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][59], 8, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][185], 8, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][187], 8, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][36], 8, ITEM8 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][169], 8, ITEM9 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][82], 8, ITEM10 + 6, ActiveColor, ActiveColorSmooth, 16); - - if (softmuteam) tftPrint(1, myLanguage[language][42], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (amnb != 0) tftPrint(1, "%", 310, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - if (amnb != 0) tftPrint(1, String(amnb, DEC), 270, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, "dB", 310, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16); - if (AMLevelOffset > 0) tftPrint(1, "+" + String(AMLevelOffset, DEC), 270, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, String(AMLevelOffset, DEC), 270, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (amgain != 0) tftPrint(1, "dB", 310, ITEM8 + 6, ActiveColor, ActiveColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM8 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, "kHz", 310, ITEM9 + 6, ActiveColor, ActiveColorSmooth, 16); - - switch (bandAM) { - case AM_BAND_ALL: tftPrint(1, myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case AM_BAND_LW_MW: tftPrint(1, myLanguage[language][102] + String(",") + myLanguage[language][103], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case AM_BAND_LW_SW: tftPrint(1, myLanguage[language][102] + String(",") + myLanguage[language][104], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case AM_BAND_MW_SW: tftPrint(1, myLanguage[language][103] + String(",") + myLanguage[language][104], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case AM_BAND_LW: tftPrint(1, myLanguage[language][102], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case AM_BAND_MW: tftPrint(1, myLanguage[language][103], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case AM_BAND_SW: tftPrint(1, myLanguage[language][104], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - case AM_BAND_NONE: tftPrint(1, myLanguage[language][83], 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; - } - - if (showSWMIBand) tftPrint(1, myLanguage[language][42], 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (amcodect != 0) tftPrint(1, "%", 310, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); - if (amcodect != 0) tftPrint(1, String(amcodect, DEC), 270, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, String(amcodectcount, DEC), 310, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (amgain != 0) tftPrint(1, String(amgain, DEC), 270, ITEM8 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (mwstepsize) tftPrint(1, "10", 270, ITEM9 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, "9", 270, ITEM9 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, String(amscansens), 310, ITEM10 + 6, PrimaryColor, PrimaryColorSmooth, 16); - break; - - case CONNECTIVITY: - tftPrint(-1, myLanguage[language][50], 8, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16); - if (wifi) tftPrint(-1, String(myLanguage[language][51]) + " IP: " + String(WiFi.localIP().toString()), 8, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); else tftPrint(-1, myLanguage[language][51], 8, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][52], 8, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][58], 8, ITEM4 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][197], 8, ITEM5 + 6, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, myLanguage[language][205], 8, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); - - if (USBmode) tftPrint(1, "RDS Spy", 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, "XDRGTK", 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (wifi) tftPrint(1, myLanguage[language][42], 310, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM2 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, ">", 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (wifi) tftPrint(1, String(WiFi.localIP()[0]) + "." + String(WiFi.localIP()[1]) + "." + String(WiFi.localIP()[2]) + "." + String(subnetclient, DEC), 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, "-", 310, ITEM4 + 6, PrimaryColor, PrimaryColorSmooth, 16); - tftPrint(1, String(stationlistid, DEC), 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); - if (XDRGTKMuteScreen) tftPrint(1, myLanguage[language][42], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); - break; - - } - } analogWrite(SMETERPIN, 0); } @@ -1812,11 +1577,11 @@ void BuildDisplay() { void MenuUp() { if (!menuopen) { - if (CurrentSkin == 0) { - tft.drawRoundRect(3, menuoption + 3, 315, 21, 5, BackgroundColor); - } else if (CurrentSkin == 1) { - ShowOneLine(menuoption, menuitem, false); + switch (CurrentSkin) { + case 0: tft.drawRoundRect(3, menuoption + 3, 315, 21, 5, BackgroundColor); break; + case 1: ShowOneLine(menuoption, menuitem, false); break; } + if (hardwaremodel == BASE_ILI9341) { menuoption += ITEM_GAP; menuitem++; @@ -1836,43 +1601,44 @@ void MenuUp() { } } } - if (CurrentSkin == 0) { - tft.drawRoundRect(3, menuoption + 3, 315, 21, 5, ActiveColor); - } else if (CurrentSkin == 1) { - ShowOneLine(menuoption, menuitem, true); + + switch (CurrentSkin) { + case 0: tft.drawRoundRect(3, menuoption + 3, 315, 21, 5, ActiveColor); break; + case 1: ShowOneLine(menuoption, menuitem, true); break; } } else { + switch (CurrentSkin) { + case 0: OneBigLineSprite.fillSprite(BackgroundColor); break; + case 1: OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground); break; + } + + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.setTextDatum(TC_DATUM); + switch (menupage) { case MAINSETTINGS: switch (menuoption) { case ITEM1: - switch (hardwaremodelold) { - case BASE_ILI9341: tftPrint(0, myLanguage[language][109], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case PORTABLE_ILI9341: tftPrint(0, myLanguage[language][110], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case PORTABLE_TOUCH_ILI9341: tftPrint(0, myLanguage[language][111], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } - hardwaremodel++; if (hardwaremodel > RADIO_HARDWARE_CNT - 1) hardwaremodel = 0; switch (hardwaremodel) { - case BASE_ILI9341: tftPrint(0, myLanguage[language][109], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case PORTABLE_ILI9341: tftPrint(0, myLanguage[language][110], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case PORTABLE_TOUCH_ILI9341: tftPrint(0, myLanguage[language][111], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case BASE_ILI9341: OneBigLineSprite.drawString(myLanguage[language][109], 135, 0); break; + case PORTABLE_ILI9341: OneBigLineSprite.drawString(myLanguage[language][110], 135, 0); break; + case PORTABLE_TOUCH_ILI9341: OneBigLineSprite.drawString(myLanguage[language][111], 135, 0); break; } - hardwaremodelold = hardwaremodel; + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: - if (touchrotating) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (touchrotating) touchrotating = 0; else touchrotating = 1; - if (touchrotating) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((touchrotating ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: - if (tot != 0) tftPrint(-1, myLanguage[language][80], 170, 118, BackgroundColor, BackgroundColor, 28); - if (tot != 0) tftPrint(1, String(tot), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); switch (tot) { case 0: tot = 15; break; case 15: tot = 30; break; @@ -1880,44 +1646,69 @@ void MenuUp() { case 60: tot = 90; break; default: tot = 0; break; } - if (tot != 0) tftPrint(-1, myLanguage[language][80], 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (tot != 0) tftPrint(1, String(tot), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + + if (tot != 0) { + OneBigLineSprite.drawString(myLanguage[language][80], 150, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(tot), 135, 0); + } else { + OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); + } + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: - if (usesquelch) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (usesquelch) usesquelch = false; else usesquelch = true; - if (usesquelch) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((usesquelch ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: - tftPrint(1, String(fmagc), 155, 118, BackgroundColor, BackgroundColor, 28); fmagc++; if (fmagc > 92) fmagc = 84; - tftPrint(1, String(fmagc), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dBµV", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(fmagc), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setAGC(fmagc); break; case ITEM6: - tftPrint(1, String(amagc), 155, 118, BackgroundColor, BackgroundColor, 28); amagc++; if (amagc > 102) amagc = 94; - tftPrint(1, String(amagc), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dBµV", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(amagc), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setAMAGC(amagc); break; case ITEM7: - if (spispeed == SPI_SPEED_DEFAULT) tftPrint(1, String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); - else tftPrint(1, String(spispeed * 10, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); - spispeed++; if (spispeed > SPI_SPEED_COUNT - 1) spispeed = 0; - if (spispeed == SPI_SPEED_DEFAULT) tftPrint(1, String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - else tftPrint(1, String(spispeed * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0); + OneBigLineSprite.pushSprite(24, 118); if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10); - spispeedold = spispeed; break; } break; @@ -1925,67 +1716,91 @@ void MenuUp() { case AUDIOSETTINGS: switch (menuoption) { case ITEM1: - if (VolSet > 0) tftPrint(1, "+" + String(VolSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(1, String(VolSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); VolSet++; if (VolSet > 10) VolSet = 10; - if (VolSet > 0) tftPrint(1, "+" + String(VolSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, String(VolSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dB", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((VolSet > 0 ? "+" : "") + String(VolSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setVolume(VolSet); break; case ITEM2: - if (edgebeep) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (edgebeep) edgebeep = false; else edgebeep = true; - if (edgebeep) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((edgebeep ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: - if (audiomode) tftPrint(0, "MPX", 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, "Stereo", 155, 118, BackgroundColor, BackgroundColor, 28); if (audiomode) audiomode = false; else audiomode = true; - if (audiomode) tftPrint(0, "MPX", 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, "Stereo", 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((audiomode ? "MPX" : "Stereo"), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setAudio(audiomode); break; case ITEM4: - if (StereoLevel != 0) tftPrint(1, String(StereoLevel, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (StereoLevel != 0) tftPrint(-1, "dBμV", 170, 118, BackgroundColor, BackgroundColor, 28); StereoLevel ++; if (StereoLevel > 60 || StereoLevel <= 30) { if (StereoLevel == 1) StereoLevel = 30; else StereoLevel = 0; } - if (StereoLevel != 0) tftPrint(-1, "dBμV", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (StereoLevel != 0) tftPrint(1, String(StereoLevel, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (StereoLevel != 0) OneBigLineSprite.drawString("dBµV", 155, 0); + if (StereoLevel != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((StereoLevel != 0 ? String(StereoLevel, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setStereoLevel(StereoLevel); break; case ITEM5: tftPrint(1, String(HighCutLevel * 100, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); + HighCutLevel ++; if (HighCutLevel > 70) HighCutLevel = 15; - tftPrint(1, String(HighCutLevel * 100, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("Hz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(HighCutLevel * 100, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setHighCutLevel(HighCutLevel); break; case ITEM6: - if (HighCutOffset != 0) tftPrint(-1, "dBμV", 170, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (HighCutOffset != 0) tftPrint(1, String(HighCutOffset, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); HighCutOffset ++; + if (HighCutOffset > 60 || HighCutOffset <= 20) { if (HighCutOffset == 1) HighCutOffset = 20; else HighCutOffset = 0; } - if (HighCutOffset != 0) tftPrint(-1, "dBμV", 170, 118, ActiveColor, ActiveColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (HighCutOffset != 0) tftPrint(1, String(HighCutOffset, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (HighCutOffset != 0) OneBigLineSprite.drawString("dBµV", 155, 0); + if (HighCutOffset != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((HighCutOffset != 0 ? String(HighCutOffset, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setHighCutOffset(HighCutOffset); break; case ITEM7: - tftPrint(0, myLanguage[language][199], 155, 78, ActiveColor, ActiveColorSmooth, 28); - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(1, String((fmdeemphasis == DEEMPHASIS_50 ? FM_DEEMPHASIS_50 : FM_DEEMPHASIS_75), DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (fmnb != 0) tftPrint(-1, "μs", 170, 118, ActiveColor, ActiveColor, 28); - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(-1, "μs", 170, 118, BackgroundColor, BackgroundColor, 28); fmdeemphasis++; if (fmdeemphasis > DEEMPHASIS_COUNT - 1) fmdeemphasis = DEEMPHASIS_NONE; - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(1, String((fmdeemphasis == DEEMPHASIS_50 ? FM_DEEMPHASIS_50 : FM_DEEMPHASIS_75), DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(-1, "μs", 170, 118, ActiveColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (fmdeemphasis != DEEMPHASIS_NONE) OneBigLineSprite.drawString("μs", 155, 0); + if (fmdeemphasis != DEEMPHASIS_NONE) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((fmdeemphasis != DEEMPHASIS_NONE ? (fmdeemphasis == DEEMPHASIS_50 ? String(FM_DEEMPHASIS_50, DEC) : String(FM_DEEMPHASIS_75, DEC)) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setDeemphasis(fmdeemphasis); break; } @@ -1994,102 +1809,126 @@ void MenuUp() { case DISPLAYSETTINGS: switch (menuoption) { case ITEM1: - tftPrint(0, myLanguage[language][0], 155, 118, BackgroundColor, BackgroundColor, 28); language ++; if (language == (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = 0; - tftPrint(0, myLanguage[language][0], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString(myLanguage[language][0], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: - tftPrint(1, String(ContrastSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); ContrastSet ++; if (ContrastSet > 100) ContrastSet = 1; - tftPrint(1, String(ContrastSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("%", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(ContrastSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); analogWrite(CONTRASTPIN, ContrastSet * 2 + 27); break; case ITEM3: - if (showmodulation) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (showmodulation) showmodulation = false; else showmodulation = true; - if (showmodulation) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((showmodulation ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: - if (screensaverset) tftPrint(-1, myLanguage[language][92], 170, 118, BackgroundColor, BackgroundColor, 28); - if (!screensaverset) tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(1, String(screensaverOptions[screensaverset]), 155, 118, BackgroundColor, BackgroundColor, 28); screensaverset ++; if (screensaverset > sizeof(screensaverOptions) / sizeof(screensaverOptions[0]) - 1) screensaverset = 0; - if (screensaverset) tftPrint(-1, myLanguage[language][92], 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (!screensaverset) tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, String(screensaverOptions[screensaverset]), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (screensaverset) OneBigLineSprite.drawString(myLanguage[language][92], 155, 0); + if (screensaverset) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((screensaverset ? String(screensaverOptions[screensaverset], DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: - switch (poweroptionsold) { - case LCD_OFF: tftPrint(0, myLanguage[language][76], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case LCD_BRIGHTNESS_1_PERCENT: tftPrint(0, myLanguage[language][94], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case LCD_BRIGHTNESS_A_QUARTER: tftPrint(0, myLanguage[language][95], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case LCD_BRIGHTNESS_HALF: tftPrint(0, myLanguage[language][96], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } - poweroptions++; if (poweroptions > RADIO_POWER_MODE_CNT - 1) poweroptions = 0; switch (poweroptions) { - case LCD_OFF: tftPrint(0, myLanguage[language][76], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case LCD_BRIGHTNESS_1_PERCENT: tftPrint(0, myLanguage[language][94], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case LCD_BRIGHTNESS_A_QUARTER: tftPrint(0, myLanguage[language][95], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case LCD_BRIGHTNESS_HALF: tftPrint(0, myLanguage[language][96], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case LCD_OFF: OneBigLineSprite.drawString(myLanguage[language][76], 135, 0); break; + case LCD_BRIGHTNESS_1_PERCENT: OneBigLineSprite.drawString(myLanguage[language][94], 135, 0); break; + case LCD_BRIGHTNESS_A_QUARTER: OneBigLineSprite.drawString(myLanguage[language][95], 135, 0); break; + case LCD_BRIGHTNESS_HALF: OneBigLineSprite.drawString(myLanguage[language][96], 135, 0); break; } - poweroptionsold = poweroptions; + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: - switch (batteryoptionsold) { - case BATTERY_NONE: tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case BATTERY_VALUE: tftPrint(0, myLanguage[language][174], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case BATTERY_PERCENT: tftPrint(0, myLanguage[language][175], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } - batteryoptions++; if (batteryoptions > RADIO_BATTERY_CNT - 1) batteryoptions = 0; switch (batteryoptions) { - case BATTERY_NONE: tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case BATTERY_VALUE: tftPrint(0, myLanguage[language][174], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case BATTERY_PERCENT: tftPrint(0, myLanguage[language][175], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case BATTERY_NONE: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case BATTERY_VALUE: OneBigLineSprite.drawString(myLanguage[language][174], 135, 0); break; + case BATTERY_PERCENT: OneBigLineSprite.drawString(myLanguage[language][175], 135, 0); break; } - batteryoptionsold = batteryoptions; + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM7: - tftPrint(0, unitString[unit], 155, 118, BackgroundColor, BackgroundColor, 28); unit ++; if (unit > sizeof(unitString) / sizeof(unitString[0]) - 1) unit = 0; - tftPrint(0, unitString[unit], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString(unitString[unit], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM8: - tftPrint(0, Skin[CurrentSkin], 155, 118, BackgroundColor, BackgroundColor, 28); CurrentSkin ++; if (CurrentSkin > sizeof(Skin) / sizeof(Skin[0]) - 1) CurrentSkin = 0; - tftPrint(0, Skin[CurrentSkin], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + BuildMenu(); + if (CurrentSkin == 0) { + tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor); + tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor); + OneBigLineSprite.fillSprite(BackgroundColor); + } else if (CurrentSkin == 1) { + tft.pushImage (13, 30, 292, 170, popupbackground); + OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.setTextDatum(TC_DATUM); + } + + Infoboxprint(myLanguage[language][78]); + OneBigLineSprite.drawString(Skin[CurrentSkin], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM9: CurrentTheme ++; if (CurrentTheme > sizeof(Theme) / sizeof(Theme[0]) - 1) CurrentTheme = 0; doTheme(); - tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor); - tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor); - tftPrint(0, myLanguage[language][77], 155, 78, ActiveColor, ActiveColorSmooth, 28); - tftPrint(0, Theme[CurrentTheme], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + if (CurrentSkin == 0) { + tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor); + tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor); + } else if (CurrentSkin == 1) { + tft.pushImage (13, 30, 292, 170, popupbackground); + OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.setTextDatum(TC_DATUM); + } + Infoboxprint(myLanguage[language][77]); + OneBigLineSprite.drawString(Theme[CurrentTheme], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM10: - tftPrint(0, FreqFont[freqfont], 155, 118, BackgroundColor, BackgroundColor, 28); freqfont ++; if (freqfont > sizeof(FreqFont) / sizeof(FreqFont[0]) - 1) freqfont = 0; - tftPrint(0, FreqFont[freqfont], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString(FreqFont[freqfont], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -2097,82 +1936,80 @@ void MenuUp() { case RDSSETTINGS: switch (menuoption) { case ITEM1: - switch (showrdserrors) { - case 0: tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 1: tftPrint(0, myLanguage[language][200], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 2: tftPrint(0, myLanguage[language][201], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 3: tftPrint(0, myLanguage[language][202], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } showrdserrors++; if (showrdserrors > 3) showrdserrors = 0; switch (showrdserrors) { - case 0: tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 1: tftPrint(0, myLanguage[language][200], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 2: tftPrint(0, myLanguage[language][201], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 3: tftPrint(0, myLanguage[language][202], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case 1: OneBigLineSprite.drawString(myLanguage[language][200], 135, 0); break; + case 2: OneBigLineSprite.drawString(myLanguage[language][201], 135, 0); break; + case 3: OneBigLineSprite.drawString(myLanguage[language][202], 135, 0); break; } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: - if (region == REGION_EU) tftPrint(0, myLanguage[language][47], 155, 118, BackgroundColor, BackgroundColor, 28); - if (region == REGION_US) tftPrint(0, myLanguage[language][48], 155, 118, BackgroundColor, BackgroundColor, 28); if (region == REGION_EU) region = REGION_US; else region = REGION_EU; - if (region == REGION_EU) tftPrint(0, myLanguage[language][47], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (region == REGION_US) tftPrint(0, myLanguage[language][48], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + if (region == REGION_EU) OneBigLineSprite.drawString(myLanguage[language][47], 135, 0); + if (region == REGION_US) OneBigLineSprite.drawString(myLanguage[language][48], 135, 0); + + OneBigLineSprite.pushSprite(24, 118); radio.rds.region = region; break; case ITEM3: - if (radio.underscore) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.underscore) radio.underscore = false; else radio.underscore = true; - if (radio.underscore) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.underscore ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: - if (radio.rds.filter) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.rds.filter) radio.rds.filter = false; else radio.rds.filter = true; - if (radio.rds.filter) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.rds.filter ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: - if (radio.rds.pierrors) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.rds.pierrors) radio.rds.pierrors = false; else radio.rds.pierrors = true; - if (radio.rds.pierrors) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.rds.pierrors ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: - switch (af) { - case 0: tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 1: tftPrint(0, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 2: tftPrint(0, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 155, 118, BackgroundColor, BackgroundColor, 28); break; - } af++; if (af > 2) af = 0; switch (af) { - case 0: tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 1: tftPrint(0, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 2: tftPrint(0, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case 1: OneBigLineSprite.drawString(String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 135, 0); break; + case 2: OneBigLineSprite.drawString(String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 135, 0); break; } + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM7: - if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.rds.rtbuffer) radio.rds.rtbuffer = false; else radio.rds.rtbuffer = true; - if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.rds.rtbuffer ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM8: - if (radio.rds.sortaf) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.rds.sortaf) radio.rds.sortaf = false; else radio.rds.sortaf = true; - if (radio.rds.sortaf) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.rds.sortaf ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM9: - if (radio.rds.fastps) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.rds.fastps) radio.rds.fastps = false; else radio.rds.fastps = true; - if (radio.rds.fastps) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.rds.fastps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -2180,7 +2017,6 @@ void MenuUp() { case FMSETTINGS: switch (menuoption) { case ITEM1: - tftPrint(1, String(ConverterSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); ConverterSet++; if (ConverterSet > 2400 || ConverterSet <= 200) { if (ConverterSet == 1) ConverterSet = 200; else ConverterSet = 0; @@ -2191,21 +2027,40 @@ void MenuUp() { Wire.write(ConverterSet & (0xFF)); Wire.endTransmission(); } - tftPrint(1, String(ConverterSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(ConverterSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: - tftPrint(1, String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); LowEdgeSet ++; if (LowEdgeSet > 1070) LowEdgeSet = 650; - tftPrint(1, String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: - tftPrint(1, String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); HighEdgeSet ++; if (HighEdgeSet > 1080) HighEdgeSet = 660; - tftPrint(1, String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: @@ -2218,70 +2073,79 @@ void MenuUp() { break; case ITEM5: - tftPrint(1, String(LowLevelSet, DEC), 145, 118, BackgroundColor, BackgroundColor, 28); LowLevelSet++; if (LowLevelSet > 30) LowLevelSet = -15; - tftPrint(1, String(LowLevelSet, DEC), 145, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dBμV", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(LowLevelSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: - if (softmutefm) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (softmutefm) softmutefm = false; else softmutefm = true; - if (softmutefm) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((softmutefm ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setSoftmuteFM(softmutefm); break; case ITEM7: - if (fmnb != 0) tftPrint(1, String(fmnb, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (fmnb != 0) tftPrint(-1, "%", 170, 118, BackgroundColor, BackgroundColor, 28); fmnb ++; if (fmnb > 150 || fmnb <= 50) { if (fmnb == 1) fmnb = 50; else fmnb = 0; } - if (fmnb != 0) tftPrint(1, String(fmnb, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (fmnb != 0) tftPrint(-1, "%", 170, 118, ActiveColor, ActiveColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (fmnb != 0) OneBigLineSprite.drawString("%", 155, 0); + if (fmnb != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((fmnb != 0 ? String(fmnb, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setFMNoiseBlanker(fmnb); break; case ITEM8: - switch (fmdefaultstepsize) { - case 0: tftPrint(1, String(FREQ_FM_STEP_50K * 10, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 1: tftPrint(1, String(FREQ_FM_STEP_100K * 10, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 2: tftPrint(1, String(FREQ_FM_STEP_200K * 10, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); break; - } fmdefaultstepsize++; if (fmdefaultstepsize > 2) fmdefaultstepsize = 0; + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("kHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + switch (fmdefaultstepsize) { - case 0: tftPrint(1, String(FREQ_FM_STEP_50K * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 1: tftPrint(1, String(FREQ_FM_STEP_100K * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 2: tftPrint(1, String(FREQ_FM_STEP_200K * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case 0: OneBigLineSprite.drawString(String(FREQ_FM_STEP_50K * 10, DEC), 135, 0); break; + case 1: OneBigLineSprite.drawString(String(FREQ_FM_STEP_100K * 10, DEC), 135, 0); break; + case 2: OneBigLineSprite.drawString(String(FREQ_FM_STEP_200K * 10, DEC), 135, 0); break; } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM9: - switch (bandFM) { - case FM_BAND_ALL: tftPrint(0, myLanguage[language][105] + String(",") + myLanguage[language][106], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case FM_BAND_OIRT: tftPrint(0, myLanguage[language][106], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case FM_BAND_FM: tftPrint(0, myLanguage[language][105], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case FM_BAND_NONE: tftPrint(0, myLanguage[language][83], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } - bandFM++; if (bandFM > FM_BAND_CNT - 1) bandFM = FM_BAND_ALL; switch (bandFM) { - case FM_BAND_ALL: tftPrint(0, myLanguage[language][105] + String(",") + myLanguage[language][106], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case FM_BAND_OIRT: tftPrint(0, myLanguage[language][106], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case FM_BAND_FM: tftPrint(0, myLanguage[language][105], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case FM_BAND_NONE: tftPrint(0, myLanguage[language][83], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case FM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][105] + String(",") + myLanguage[language][106], 135, 0); break; + case FM_BAND_OIRT: OneBigLineSprite.drawString(myLanguage[language][106], 135, 0); break; + case FM_BAND_FM: OneBigLineSprite.drawString(myLanguage[language][105], 135, 0); break; + case FM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break; } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM10: - tftPrint(1, String(fmscansens), 155, 118, BackgroundColor, BackgroundColor, 28); fmscansens++; if (fmscansens > 15) fmscansens = 1; - tftPrint(1, String(fmscansens), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString(String(fmscansens), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -2289,92 +2153,104 @@ void MenuUp() { case AMSETTINGS: switch (menuoption) { case ITEM1: - if (softmuteam) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (softmuteam) softmuteam = false; else softmuteam = true; - if (softmuteam) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((softmuteam ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setSoftmuteAM(softmuteam); break; case ITEM2: - if (amnb != 0) tftPrint(1, String(amnb, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (amnb != 0) tftPrint(-1, "%", 170, 118, BackgroundColor, BackgroundColor, 28); amnb ++; if (amnb > 150 || amnb <= 50) { if (amnb == 1) amnb = 50; else amnb = 0; } - if (amnb != 0) tftPrint(1, String(amnb, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (amnb != 0) tftPrint(-1, "%", 170, 118, ActiveColor, ActiveColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (amnb != 0) OneBigLineSprite.drawString("%", 155, 0); + if (amnb != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((amnb != 0 ? String(amnb, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setAMNoiseBlanker(amnb); break; case ITEM3: - if (AMLevelOffset > 0) tftPrint(1, "+" + String(AMLevelOffset, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(1, String(AMLevelOffset, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); AMLevelOffset++; if (AMLevelOffset > 15) AMLevelOffset = -50; - if (AMLevelOffset > 0) tftPrint(1, "+" + String(AMLevelOffset, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, String(AMLevelOffset, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dB", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((AMLevelOffset > 0 ? "+" : "") + String(AMLevelOffset, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setAMOffset(AMLevelOffset); break; case ITEM4: - switch (bandAM) { - case AM_BAND_ALL: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_LW_MW: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][103], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_LW_SW: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][104], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_MW_SW: tftPrint(0, myLanguage[language][103] + String(",") + myLanguage[language][104], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_LW: tftPrint(0, myLanguage[language][102], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_MW: tftPrint(0, myLanguage[language][103], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_SW: tftPrint(0, myLanguage[language][104], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_NONE: tftPrint(0, myLanguage[language][83], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } - bandAM++; if (bandAM > AM_BAND_CNT - 1) bandAM = AM_BAND_ALL; switch (bandAM) { - case AM_BAND_ALL: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_LW_MW: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][103], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_LW_SW: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_MW_SW: tftPrint(0, myLanguage[language][103] + String(",") + myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_LW: tftPrint(0, myLanguage[language][102], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_MW: tftPrint(0, myLanguage[language][103], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_SW: tftPrint(0, myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_NONE: tftPrint(0, myLanguage[language][83], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - } + case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104]), 135, 0); break; + case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break; + case AM_BAND_LW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 135, 0); break; + case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break; + case AM_BAND_LW: OneBigLineSprite.drawString(myLanguage[language][102], 135, 0); break; + case AM_BAND_MW: OneBigLineSprite.drawString(myLanguage[language][103], 135, 0); break; + case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break; + case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break; + } + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: - if (showSWMIBand) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (showSWMIBand) showSWMIBand = false; else showSWMIBand = true; - if (showSWMIBand) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: - if (amcodect != 0) tftPrint(-1, "%", 170, 118, BackgroundColor, BackgroundColor, 28); - if (amcodect != 0) tftPrint(1, String(amcodect, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); amcodect++; if (amcodect > 150 || amcodect <= 50) { if (amcodect == 1) amcodect = 50; else amcodect = 0; } - if (amcodect != 0) tftPrint(-1, "%", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (amcodect != 0) tftPrint(1, String(amcodect, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (amcodect != 0) OneBigLineSprite.drawString("%", 155, 0); + if (amcodect != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((amcodect != 0 ? String(amcodect, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); if (band > BAND_GAP) radio.setAMCoChannel(amcodect, amcodectcount); break; case ITEM7: - tftPrint(0, String(amcodectcount, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); amcodectcount++; if (amcodectcount > 15) amcodectcount = 1; - tftPrint(0, String(amcodectcount, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString(String(amcodectcount, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); if (band > BAND_GAP) radio.setAMCoChannel(amcodect, amcodectcount); break; case ITEM8: - if (amgain != 0) tftPrint(1, String(amgain, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (amgain != 0) tftPrint(-1, "dB", 170, 118, BackgroundColor, BackgroundColor, 28); amgain += 6; if (amgain > 36) amgain = 0; - if (amgain != 0) tftPrint(1, String(amgain, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (amgain != 0) tftPrint(-1, "dB", 170, 118, ActiveColor, ActiveColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (amgain != 0) OneBigLineSprite.drawString("dB", 155, 0); + if (amgain != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((amgain != 0 ? String(amgain, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); if (band > BAND_GAP) radio.setAMAttenuation(amgain); break; @@ -2434,11 +2310,11 @@ void MenuUp() { void MenuDown() { if (!menuopen) { - if (CurrentSkin == 0) { - tft.drawRoundRect(3, menuoption + 3, 315, 21, 5, BackgroundColor); - } else if (CurrentSkin == 1) { - ShowOneLine(menuoption, menuitem, false); + switch (CurrentSkin) { + case 0: tft.drawRoundRect(3, menuoption + 3, 315, 21, 5, BackgroundColor); break; + case 1: ShowOneLine(menuoption, menuitem, false); break; } + if (hardwaremodel == BASE_ILI9341) { menuoption -= ITEM_GAP; menuitem--; @@ -2458,42 +2334,44 @@ void MenuDown() { menuoption = ITEM1; } } - if (CurrentSkin == 0) { - tft.drawRoundRect(3, menuoption + 3, 315, 21, 5, ActiveColor); - } else if (CurrentSkin == 1) { - ShowOneLine(menuoption, menuitem, true); + + switch (CurrentSkin) { + case 0: tft.drawRoundRect(3, menuoption + 3, 315, 21, 5, ActiveColor); break; + case 1: ShowOneLine(menuoption, menuitem, true); break; } + } else { + switch (CurrentSkin) { + case 0: OneBigLineSprite.fillSprite(BackgroundColor); break; + case 1: OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground); break; + } + + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.setTextDatum(TC_DATUM); + switch (menupage) { case MAINSETTINGS: switch (menuoption) { case ITEM1: - switch (hardwaremodelold) { - case BASE_ILI9341: tftPrint(0, myLanguage[language][109], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case PORTABLE_ILI9341: tftPrint(0, myLanguage[language][110], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case PORTABLE_TOUCH_ILI9341: tftPrint(0, myLanguage[language][111], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } - hardwaremodel--; if (hardwaremodel > RADIO_HARDWARE_CNT - 1) hardwaremodel = RADIO_HARDWARE_CNT - 1; switch (hardwaremodel) { - case BASE_ILI9341: tftPrint(0, myLanguage[language][109], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case PORTABLE_ILI9341: tftPrint(0, myLanguage[language][110], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case PORTABLE_TOUCH_ILI9341: tftPrint(0, myLanguage[language][111], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case BASE_ILI9341: OneBigLineSprite.drawString(myLanguage[language][109], 135, 0); break; + case PORTABLE_ILI9341: OneBigLineSprite.drawString(myLanguage[language][110], 135, 0); break; + case PORTABLE_TOUCH_ILI9341: OneBigLineSprite.drawString(myLanguage[language][111], 135, 0); break; } - hardwaremodelold = hardwaremodel; + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: - if (touchrotating) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (touchrotating) touchrotating = 0; else touchrotating = 1; - if (touchrotating) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((touchrotating ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: - if (tot != 0) tftPrint(-1, myLanguage[language][80], 170, 118, BackgroundColor, BackgroundColor, 28); - if (tot != 0) tftPrint(1, String(tot), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); switch (tot) { case 15: tot = 0; break; case 30: tot = 15; break; @@ -2501,44 +2379,68 @@ void MenuDown() { case 90: tot = 60; break; default: tot = 90; break; } - if (tot != 0) tftPrint(-1, myLanguage[language][80], 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (tot != 0) tftPrint(1, String(tot), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + + if (tot != 0) { + OneBigLineSprite.drawString(myLanguage[language][80], 150, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(tot), 135, 0); + } else { + OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); + } + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: - if (usesquelch) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (usesquelch) usesquelch = false; else usesquelch = true; - if (usesquelch) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((usesquelch ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: - tftPrint(1, String(fmagc), 155, 118, BackgroundColor, BackgroundColor, 28); fmagc--; if (fmagc < 84) fmagc = 92; - tftPrint(1, String(fmagc), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dBµV", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(fmagc), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setAGC(fmagc); break; case ITEM6: - tftPrint(1, String(amagc), 155, 118, BackgroundColor, BackgroundColor, 28); amagc--; if (amagc < 94) amagc = 102; - tftPrint(1, String(amagc), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dBµV", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(amagc), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setAMAGC(amagc); break; case ITEM7: - if (spispeed == SPI_SPEED_DEFAULT) tftPrint(1, String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); - else tftPrint(1, String(spispeed * 10, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); - spispeed--; if (spispeed > SPI_SPEED_COUNT - 1) spispeed = SPI_SPEED_COUNT - 1; - - if (spispeed == SPI_SPEED_DEFAULT) tftPrint(1, String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - else tftPrint(1, String(spispeed * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0); + OneBigLineSprite.pushSprite(24, 118); if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10); - spispeedold = spispeed; break; } @@ -2547,67 +2449,88 @@ void MenuDown() { case AUDIOSETTINGS: switch (menuoption) { case ITEM1: - if (VolSet > 0) tftPrint(1, "+" + String(VolSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(1, String(VolSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); VolSet--; if (VolSet < -10) VolSet = -10; - if (VolSet > 10) VolSet = 10; - if (VolSet > 0) tftPrint(1, "+" + String(VolSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, String(VolSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dB", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((VolSet > 0 ? "+" : "") + String(VolSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setVolume(VolSet); break; case ITEM2: - if (edgebeep) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (edgebeep) edgebeep = false; else edgebeep = true; - if (edgebeep) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((edgebeep ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: - if (audiomode) tftPrint(0, "MPX", 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, "Stereo", 155, 118, BackgroundColor, BackgroundColor, 28); if (audiomode) audiomode = false; else audiomode = true; - if (audiomode) tftPrint(0, "MPX", 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, "Stereo", 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((audiomode ? "MPX" : "Stereo"), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setAudio(audiomode); break; case ITEM4: - if (StereoLevel != 0) tftPrint(1, String(StereoLevel, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (StereoLevel != 0) tftPrint(-1, "dBμV", 170, 118, BackgroundColor, BackgroundColor, 28); StereoLevel --; if (StereoLevel < 30 || StereoLevel > 60) { if (StereoLevel > 60) StereoLevel = 60; else StereoLevel = 0; } - if (StereoLevel != 0) tftPrint(-1, "dBμV", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (StereoLevel != 0) tftPrint(1, String(StereoLevel, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (StereoLevel != 0) OneBigLineSprite.drawString("dBµV", 155, 0); + if (StereoLevel != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((StereoLevel != 0 ? String(StereoLevel, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setStereoLevel(StereoLevel); break; case ITEM5: - tftPrint(1, String(HighCutLevel * 100, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); HighCutLevel --; if (HighCutLevel < 15 || HighCutLevel > 70) HighCutLevel = 70; - tftPrint(1, String(HighCutLevel * 100, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("Hz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(HighCutLevel * 100, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setHighCutLevel(HighCutLevel); break; case ITEM6: - if (HighCutOffset != 0) tftPrint(-1, "dBμV", 170, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (HighCutOffset != 0) tftPrint(1, String(HighCutOffset, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); HighCutOffset --; if (HighCutOffset < 20 || HighCutOffset > 60) { if (HighCutOffset > 60) HighCutOffset = 60; else HighCutOffset = 0; } - if (HighCutOffset != 0) tftPrint(-1, "dBμV", 170, 118, ActiveColor, ActiveColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (HighCutOffset != 0) tftPrint(1, String(HighCutOffset, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (HighCutOffset != 0) OneBigLineSprite.drawString("dBµV", 155, 0); + if (HighCutOffset != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((HighCutOffset != 0 ? String(HighCutOffset, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setHighCutOffset(HighCutOffset); break; case ITEM7: - tftPrint(0, myLanguage[language][199], 155, 78, ActiveColor, ActiveColorSmooth, 28); - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(1, String((fmdeemphasis == DEEMPHASIS_50 ? FM_DEEMPHASIS_50 : FM_DEEMPHASIS_75), DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(-1, "μs", 170, 118, BackgroundColor, BackgroundColor, 28); fmdeemphasis--; if (fmdeemphasis > DEEMPHASIS_COUNT - 1) fmdeemphasis = DEEMPHASIS_COUNT - 1; - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(1, String((fmdeemphasis == DEEMPHASIS_50 ? FM_DEEMPHASIS_50 : FM_DEEMPHASIS_75), DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(-1, "μs", 170, 118, ActiveColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (fmdeemphasis != DEEMPHASIS_NONE) OneBigLineSprite.drawString("μs", 155, 0); + if (fmdeemphasis != DEEMPHASIS_NONE) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((fmdeemphasis != DEEMPHASIS_NONE ? (fmdeemphasis == DEEMPHASIS_50 ? String(FM_DEEMPHASIS_50, DEC) : String(FM_DEEMPHASIS_75, DEC)) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setDeemphasis(fmdeemphasis); break; } @@ -2616,102 +2539,128 @@ void MenuDown() { case DISPLAYSETTINGS: switch (menuoption) { case ITEM1: - tftPrint(0, myLanguage[language][0], 155, 118, BackgroundColor, BackgroundColor, 28); language --; if (language > (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = (sizeof (myLanguage) / sizeof (myLanguage[0])) - 1; - tftPrint(0, myLanguage[language][0], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString(myLanguage[language][0], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: - tftPrint(1, String(ContrastSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); ContrastSet --; if (ContrastSet < 1) ContrastSet = 100; - tftPrint(1, String(ContrastSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("%", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(ContrastSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); analogWrite(CONTRASTPIN, ContrastSet * 2 + 27); break; case ITEM3: - if (showmodulation) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (showmodulation) showmodulation = false; else showmodulation = true; - if (showmodulation) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((showmodulation ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: - if (screensaverset) tftPrint(-1, myLanguage[language][92], 170, 118, BackgroundColor, BackgroundColor, 28); - if (!screensaverset) tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(1, String(screensaverOptions[screensaverset]), 155, 118, BackgroundColor, BackgroundColor, 28); screensaverset --; if (screensaverset > sizeof(screensaverOptions) / sizeof(screensaverOptions[0]) - 1) screensaverset = sizeof(screensaverOptions) / sizeof(screensaverOptions[0]) - 1; - if (screensaverset) tftPrint(-1, myLanguage[language][92], 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (!screensaverset) tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, String(screensaverOptions[screensaverset]), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (screensaverset) OneBigLineSprite.drawString(myLanguage[language][92], 155, 0); + if (screensaverset) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((screensaverset ? String(screensaverOptions[screensaverset], DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: - switch (poweroptionsold) { - case LCD_OFF: tftPrint(0, myLanguage[language][76], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case LCD_BRIGHTNESS_1_PERCENT: tftPrint(0, myLanguage[language][94], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case LCD_BRIGHTNESS_A_QUARTER: tftPrint(0, myLanguage[language][95], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case LCD_BRIGHTNESS_HALF: tftPrint(0, myLanguage[language][96], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } - poweroptions--; if (poweroptions > RADIO_POWER_MODE_CNT - 1) poweroptions = RADIO_POWER_MODE_CNT - 1; switch (poweroptions) { - case LCD_OFF: tftPrint(0, myLanguage[language][76], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case LCD_BRIGHTNESS_1_PERCENT: tftPrint(0, myLanguage[language][94], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case LCD_BRIGHTNESS_A_QUARTER: tftPrint(0, myLanguage[language][95], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case LCD_BRIGHTNESS_HALF: tftPrint(0, myLanguage[language][96], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case LCD_OFF: OneBigLineSprite.drawString(myLanguage[language][76], 135, 0); break; + case LCD_BRIGHTNESS_1_PERCENT: OneBigLineSprite.drawString(myLanguage[language][94], 135, 0); break; + case LCD_BRIGHTNESS_A_QUARTER: OneBigLineSprite.drawString(myLanguage[language][95], 135, 0); break; + case LCD_BRIGHTNESS_HALF: OneBigLineSprite.drawString(myLanguage[language][96], 135, 0); break; } - poweroptionsold = poweroptions; + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: - switch (batteryoptionsold) { - case BATTERY_NONE: tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case BATTERY_VALUE: tftPrint(0, myLanguage[language][174], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case BATTERY_PERCENT: tftPrint(0, myLanguage[language][175], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } - batteryoptions--; if (batteryoptions > RADIO_BATTERY_CNT - 1) batteryoptions = RADIO_BATTERY_CNT - 1; switch (batteryoptions) { - case BATTERY_NONE: tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case BATTERY_VALUE: tftPrint(0, myLanguage[language][174], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case BATTERY_PERCENT: tftPrint(0, myLanguage[language][175], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case BATTERY_NONE: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case BATTERY_VALUE: OneBigLineSprite.drawString(myLanguage[language][174], 135, 0); break; + case BATTERY_PERCENT: OneBigLineSprite.drawString(myLanguage[language][175], 135, 0); break; } - batteryoptionsold = batteryoptions; + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM7: - tftPrint(0, unitString[unit], 155, 118, BackgroundColor, BackgroundColor, 28); unit --; if (unit > sizeof(unitString) / sizeof(unitString[0]) - 1) unit = sizeof(unitString) / sizeof(unitString[0]) - 1; - tftPrint(0, unitString[unit], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString(unitString[unit], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM8: - tftPrint(0, Skin[CurrentSkin], 155, 118, BackgroundColor, BackgroundColor, 28); CurrentSkin --; if (CurrentSkin > sizeof(Skin) / sizeof(Skin[0]) - 1) CurrentSkin = sizeof(Skin) / sizeof(Skin[0]) - 1; - tftPrint(0, Skin[CurrentSkin], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + BuildMenu(); + if (CurrentSkin == 0) { + OneBigLineSprite.fillSprite(BackgroundColor); + tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor); + tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor); + } else if (CurrentSkin == 1) { + tft.pushImage (13, 30, 292, 170, popupbackground); + OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.setTextDatum(TC_DATUM); + } + + Infoboxprint(myLanguage[language][78]); + OneBigLineSprite.drawString(Skin[CurrentSkin], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM9: CurrentTheme --; if (CurrentTheme > sizeof(Theme) / sizeof(Theme[0]) - 1) CurrentTheme = sizeof(Theme) / sizeof(Theme[0]) - 1; + doTheme(); - tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor); - tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor); - tftPrint(0, myLanguage[language][77], 155, 78, ActiveColor, ActiveColorSmooth, 28); - tftPrint(0, Theme[CurrentTheme], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + if (CurrentSkin == 0) { + tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor); + tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor); + } else if (CurrentSkin == 1) { + tft.pushImage (13, 30, 292, 170, popupbackground); + OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.setTextDatum(TC_DATUM); + } + Infoboxprint(myLanguage[language][77]); + OneBigLineSprite.drawString(Theme[CurrentTheme], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM10: - tftPrint(0, FreqFont[freqfont], 155, 118, BackgroundColor, BackgroundColor, 28); freqfont --; if (freqfont > sizeof(FreqFont) / sizeof(FreqFont[0]) - 1) freqfont = sizeof(FreqFont) / sizeof(FreqFont[0]) - 1; - tftPrint(0, FreqFont[freqfont], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString(FreqFont[freqfont], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -2719,82 +2668,80 @@ void MenuDown() { case RDSSETTINGS: switch (menuoption) { case ITEM1: - switch (showrdserrors) { - case 0: tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 1: tftPrint(0, myLanguage[language][200], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 2: tftPrint(0, myLanguage[language][201], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 3: tftPrint(0, myLanguage[language][202], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } showrdserrors--; if (showrdserrors > 3) showrdserrors = 3; switch (showrdserrors) { - case 0: tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 1: tftPrint(0, myLanguage[language][200], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 2: tftPrint(0, myLanguage[language][201], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 3: tftPrint(0, myLanguage[language][202], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case 1: OneBigLineSprite.drawString(myLanguage[language][200], 135, 0); break; + case 2: OneBigLineSprite.drawString(myLanguage[language][201], 135, 0); break; + case 3: OneBigLineSprite.drawString(myLanguage[language][202], 135, 0); break; } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: - if (region == REGION_EU) tftPrint(0, myLanguage[language][47], 155, 118, BackgroundColor, BackgroundColor, 28); - if (region == REGION_US) tftPrint(0, myLanguage[language][48], 155, 118, BackgroundColor, BackgroundColor, 28); if (region == REGION_EU) region = REGION_US; else region = REGION_EU; - if (region == REGION_EU) tftPrint(0, myLanguage[language][47], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (region == REGION_US) tftPrint(0, myLanguage[language][48], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + if (region == REGION_EU) OneBigLineSprite.drawString(myLanguage[language][47], 135, 0); + if (region == REGION_US) OneBigLineSprite.drawString(myLanguage[language][48], 135, 0); + + OneBigLineSprite.pushSprite(24, 118); radio.rds.region = region; break; case ITEM3: - if (radio.underscore) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.underscore) radio.underscore = false; else radio.underscore = true; - if (radio.underscore) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.underscore ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: - if (radio.rds.filter) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.rds.filter) radio.rds.filter = false; else radio.rds.filter = true; - if (radio.rds.filter) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.rds.filter ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: - if (radio.rds.pierrors) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.rds.pierrors) radio.rds.pierrors = false; else radio.rds.pierrors = true; - if (radio.rds.pierrors) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.rds.pierrors ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: - switch (af) { - case 0: tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 1: tftPrint(0, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 2: tftPrint(0, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 155, 118, BackgroundColor, BackgroundColor, 28); break; - } af--; if (af > 2) af = 2; switch (af) { - case 0: tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 1: tftPrint(0, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 2: tftPrint(0, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case 1: OneBigLineSprite.drawString(String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 135, 0); break; + case 2: OneBigLineSprite.drawString(String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 135, 0); break; } + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM7: - if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.rds.rtbuffer) radio.rds.rtbuffer = false; else radio.rds.rtbuffer = true; - if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.rds.rtbuffer ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM8: - if (radio.rds.sortaf) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.rds.sortaf) radio.rds.sortaf = false; else radio.rds.sortaf = true; - if (radio.rds.sortaf) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.rds.sortaf ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM9: - if (radio.rds.fastps) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (radio.rds.fastps) radio.rds.fastps = false; else radio.rds.fastps = true; - if (radio.rds.fastps) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.rds.fastps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -2802,7 +2749,6 @@ void MenuDown() { case FMSETTINGS: switch (menuoption) { case ITEM1: - tftPrint(1, String(ConverterSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); ConverterSet--; if (ConverterSet < 200 || ConverterSet > 2400) { if (ConverterSet > 2400) ConverterSet = 2400; else ConverterSet = 0; @@ -2813,21 +2759,40 @@ void MenuDown() { Wire.write(ConverterSet & (0xFF)); Wire.endTransmission(); } - tftPrint(1, String(ConverterSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(ConverterSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: - tftPrint(1, String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); LowEdgeSet -= 10; if (LowEdgeSet < 650) LowEdgeSet = 1079; - tftPrint(1, String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: - tftPrint(1, String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); HighEdgeSet -= 10; if (HighEdgeSet < 660) HighEdgeSet = 1080; - tftPrint(1, String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: @@ -2839,70 +2804,79 @@ void MenuDown() { break; case ITEM5: - tftPrint(1, String(LowLevelSet, DEC), 145, 118, BackgroundColor, BackgroundColor, 28); LowLevelSet--; if (LowLevelSet < -15) LowLevelSet = 30; - tftPrint(1, String(LowLevelSet, DEC), 145, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dBμV", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(LowLevelSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: - if (softmutefm) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (softmutefm) softmutefm = false; else softmutefm = true; - if (softmutefm) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((softmutefm ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setSoftmuteFM(softmutefm); break; case ITEM7: - if (fmnb != 0) tftPrint(1, String(fmnb, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (fmnb != 0) tftPrint(-1, "%", 170, 118, BackgroundColor, BackgroundColor, 28); fmnb --; if (fmnb > 150 || fmnb <= 50) { if (fmnb > 150) fmnb = 150; else fmnb = 0; } - if (fmnb != 0) tftPrint(1, String(fmnb, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (fmnb != 0) tftPrint(-1, "%", 170, 118, ActiveColor, ActiveColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (fmnb != 0) OneBigLineSprite.drawString("%", 155, 0); + if (fmnb != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((fmnb != 0 ? String(fmnb, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setFMNoiseBlanker(fmnb); break; case ITEM8: - switch (fmdefaultstepsize) { - case 0: tftPrint(1, String(FREQ_FM_STEP_50K * 10, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 1: tftPrint(1, String(FREQ_FM_STEP_100K * 10, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); break; - case 2: tftPrint(1, String(FREQ_FM_STEP_200K * 10, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); break; - } fmdefaultstepsize--; if (fmdefaultstepsize > 2) fmdefaultstepsize = 2; + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("kHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + switch (fmdefaultstepsize) { - case 0: tftPrint(1, String(FREQ_FM_STEP_50K * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 1: tftPrint(1, String(FREQ_FM_STEP_100K * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 2: tftPrint(1, String(FREQ_FM_STEP_200K * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case 0: OneBigLineSprite.drawString(String(FREQ_FM_STEP_50K * 10, DEC), 135, 0); break; + case 1: OneBigLineSprite.drawString(String(FREQ_FM_STEP_100K * 10, DEC), 135, 0); break; + case 2: OneBigLineSprite.drawString(String(FREQ_FM_STEP_200K * 10, DEC), 135, 0); break; } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM9: - switch (bandFM) { - case FM_BAND_ALL: tftPrint(0, myLanguage[language][105] + String(",") + myLanguage[language][106], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case FM_BAND_OIRT: tftPrint(0, myLanguage[language][106], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case FM_BAND_FM: tftPrint(0, myLanguage[language][105], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case FM_BAND_NONE: tftPrint(0, myLanguage[language][83], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } - bandFM--; if (bandFM > FM_BAND_CNT) bandFM = FM_BAND_NONE; switch (bandFM) { - case FM_BAND_ALL: tftPrint(0, myLanguage[language][105] + String(",") + myLanguage[language][106], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case FM_BAND_OIRT: tftPrint(0, myLanguage[language][106], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case FM_BAND_FM: tftPrint(0, myLanguage[language][105], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case FM_BAND_NONE: tftPrint(0, myLanguage[language][83], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case FM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][105] + String(",") + myLanguage[language][106], 135, 0); break; + case FM_BAND_OIRT: OneBigLineSprite.drawString(myLanguage[language][106], 135, 0); break; + case FM_BAND_FM: OneBigLineSprite.drawString(myLanguage[language][105], 135, 0); break; + case FM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break; } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM10: - tftPrint(1, String(fmscansens), 155, 118, BackgroundColor, BackgroundColor, 28); fmscansens--; if (fmscansens == 0) fmscansens = 15; - tftPrint(1, String(fmscansens), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString(String(fmscansens), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -2910,92 +2884,103 @@ void MenuDown() { case AMSETTINGS: switch (menuoption) { case ITEM1: - if (softmuteam) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (softmuteam) softmuteam = false; else softmuteam = true; - if (softmuteam) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((softmuteam ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setSoftmuteAM(softmuteam); break; case ITEM2: - if (amnb != 0) tftPrint(1, String(amnb, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (amnb != 0) tftPrint(-1, "%", 170, 118, BackgroundColor, BackgroundColor, 28); amnb --; if (amnb > 150 || amnb <= 50) { if (amnb > 150) amnb = 150; else amnb = 0; } - if (amnb != 0) tftPrint(1, String(amnb, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (amnb != 0) tftPrint(-1, "%", 170, 118, ActiveColor, ActiveColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (amnb != 0) OneBigLineSprite.drawString("%", 155, 0); + if (amnb != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((amnb != 0 ? String(amnb, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setAMNoiseBlanker(amnb); break; case ITEM3: - if (AMLevelOffset > 0) tftPrint(1, "+" + String(AMLevelOffset, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(1, String(AMLevelOffset, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); AMLevelOffset--; if (AMLevelOffset < -50) AMLevelOffset = 15; - if (AMLevelOffset > 0) tftPrint(1, "+" + String(AMLevelOffset, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, String(AMLevelOffset, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dB", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((AMLevelOffset > 0 ? "+" : "") + String(AMLevelOffset, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); radio.setAMOffset(AMLevelOffset); break; case ITEM4: - switch (bandAM) { - case AM_BAND_ALL: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_LW_MW: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][103], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_LW_SW: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][104], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_MW_SW: tftPrint(0, myLanguage[language][103] + String(",") + myLanguage[language][104], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_LW: tftPrint(0, myLanguage[language][102], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_MW: tftPrint(0, myLanguage[language][103], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_SW: tftPrint(0, myLanguage[language][104], 155, 118, BackgroundColor, BackgroundColor, 28); break; - case AM_BAND_NONE: tftPrint(0, myLanguage[language][83], 155, 118, BackgroundColor, BackgroundColor, 28); break; - } - bandAM--; if (bandAM > AM_BAND_CNT) bandAM = AM_BAND_NONE; switch (bandAM) { - case AM_BAND_ALL: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_LW_MW: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][103], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_LW_SW: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_MW_SW: tftPrint(0, myLanguage[language][103] + String(",") + myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_LW: tftPrint(0, myLanguage[language][102], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_MW: tftPrint(0, myLanguage[language][103], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_SW: tftPrint(0, myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_NONE: tftPrint(0, myLanguage[language][83], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - } + case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104]), 135, 0); break; + case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break; + case AM_BAND_LW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 135, 0); break; + case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break; + case AM_BAND_LW: OneBigLineSprite.drawString(myLanguage[language][102], 135, 0); break; + case AM_BAND_MW: OneBigLineSprite.drawString(myLanguage[language][103], 135, 0); break; + case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break; + case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break; + } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: - if (showSWMIBand) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); if (showSWMIBand) showSWMIBand = false; else showSWMIBand = true; - if (showSWMIBand) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: - if (amcodect != 0) tftPrint(-1, "%", 170, 118, BackgroundColor, BackgroundColor, 28); - if (amcodect != 0) tftPrint(1, String(amcodect, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); amcodect--; if (amcodect < 50 || amcodect > 150) { if (amcodect > 150) amcodect = 150; else amcodect = 0; } - if (amcodect != 0) tftPrint(-1, "%", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (amcodect != 0) tftPrint(1, String(amcodect, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (amcodect != 0) OneBigLineSprite.drawString("%", 155, 0); + if (amcodect != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((amcodect != 0 ? String(amcodect, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); if (band > BAND_GAP) radio.setAMCoChannel(amcodect, amcodectcount); break; case ITEM7: - tftPrint(0, String(amcodectcount, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); amcodectcount--; if (amcodectcount < 1) amcodectcount = 15; - tftPrint(0, String(amcodectcount, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString(String(amcodectcount, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); if (band > BAND_GAP) radio.setAMCoChannel(amcodect, amcodectcount); break; case ITEM8: - if (amgain != 0) tftPrint(1, String(amgain, DEC), 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); - if (amgain != 0) tftPrint(-1, "dB", 170, 118, BackgroundColor, BackgroundColor, 28); amgain -= 6; if (amgain > 36) amgain = 36; - if (amgain != 0) tftPrint(1, String(amgain, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (amgain != 0) tftPrint(-1, "dB", 170, 118, ActiveColor, ActiveColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (amgain != 0) OneBigLineSprite.drawString("dB", 155, 0); + if (amgain != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((amgain != 0 ? String(amgain, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); if (band > BAND_GAP) radio.setAMAttenuation(amgain); break; @@ -3067,6 +3052,13 @@ void DoMenu() { OneBigLineSprite.setTextDatum(TC_DATUM); } } + switch (CurrentSkin) { + case 0: OneBigLineSprite.fillSprite(BackgroundColor); break; + case 1: OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground); break; + } + + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.setTextDatum(TC_DATUM); switch (menupage) { case INDEX: @@ -3159,47 +3151,79 @@ void DoMenu() { switch (menuoption) { case ITEM1: Infoboxprint(myLanguage[language][108]); + switch (hardwaremodel) { - case BASE_ILI9341: tftPrint(0, myLanguage[language][109], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case PORTABLE_ILI9341: tftPrint(0, myLanguage[language][110], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case PORTABLE_TOUCH_ILI9341: tftPrint(0, myLanguage[language][111], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case BASE_ILI9341: OneBigLineSprite.drawString(myLanguage[language][109], 135, 0); break; + case PORTABLE_ILI9341: OneBigLineSprite.drawString(myLanguage[language][110], 135, 0); break; + case PORTABLE_TOUCH_ILI9341: OneBigLineSprite.drawString(myLanguage[language][111], 135, 0); break; } - hardwaremodelold = hardwaremodel; + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: Infoboxprint(myLanguage[language][68]); - if (touchrotating) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((touchrotating ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: Infoboxprint(myLanguage[language][75]); - if (tot != 0) tftPrint(-1, myLanguage[language][80], 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (tot != 0) tftPrint(1, String(tot), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + + if (tot != 0) { + OneBigLineSprite.drawString(myLanguage[language][80], 150, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(tot), 135, 0); + } else { + OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); + } + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: Infoboxprint(myLanguage[language][62]); - if (usesquelch) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((usesquelch ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: Infoboxprint(myLanguage[language][37]); - tftPrint(-1, "dBµV", 170, 118, ActiveColor, ActiveColorSmooth, 28); - tftPrint(1, String(fmagc), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dBµV", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(fmagc), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: Infoboxprint(myLanguage[language][198]); - tftPrint(-1, "dBµV", 170, 118, ActiveColor, ActiveColorSmooth, 28); - tftPrint(1, String(amagc), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dBµV", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(amagc), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM7: Infoboxprint(myLanguage[language][81]); - tftPrint(-1, "MHz", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (spispeed == SPI_SPEED_DEFAULT) tftPrint(1, String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, String(spispeed * 10 , DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -3208,42 +3232,70 @@ void DoMenu() { switch (menuoption) { case ITEM1: Infoboxprint(myLanguage[language][10]); - tftPrint(-1, "dB", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (VolSet > 0) tftPrint(1, "+" + String(VolSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, String(VolSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dB", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((VolSet > 0 ? "+" : "") + String(VolSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); + radio.setVolume(VolSet); break; case ITEM2: Infoboxprint(myLanguage[language][45]); - if (edgebeep) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((edgebeep ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: Infoboxprint(myLanguage[language][67]); - if (audiomode) tftPrint(0, "MPX", 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, "Stereo", 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((audiomode ? "MPX" : "Stereo"), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: Infoboxprint(myLanguage[language][15]); - if (StereoLevel != 0) tftPrint(-1, "dBμV", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (StereoLevel != 0) tftPrint(1, String(StereoLevel, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (StereoLevel != 0) OneBigLineSprite.drawString("dBµV", 155, 0); + if (StereoLevel != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((StereoLevel != 0 ? String(StereoLevel, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: Infoboxprint(myLanguage[language][16]); - if (HighCutLevel != 0) tftPrint(-1, "Hz", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (HighCutLevel != 0) tftPrint(1, String(HighCutLevel * 100, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("Hz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(HighCutLevel * 100, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: Infoboxprint(myLanguage[language][17]); - if (HighCutOffset != 0) tftPrint(-1, "dBμV", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (HighCutOffset != 0) tftPrint(1, String(HighCutOffset, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (HighCutOffset != 0) OneBigLineSprite.drawString("dBµV", 155, 0); + if (HighCutOffset != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((HighCutOffset != 0 ? String(HighCutOffset, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM7: Infoboxprint(myLanguage[language][199]); - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(1, String((fmdeemphasis == DEEMPHASIS_50 ? FM_DEEMPHASIS_50 : FM_DEEMPHASIS_75), DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (fmdeemphasis != DEEMPHASIS_NONE) tftPrint(-1, "μs", 170, 118, ActiveColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (fmdeemphasis != DEEMPHASIS_NONE) OneBigLineSprite.drawString("μs", 155, 0); + if (fmdeemphasis != DEEMPHASIS_NONE) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((fmdeemphasis != DEEMPHASIS_NONE ? (fmdeemphasis == DEEMPHASIS_50 ? String(FM_DEEMPHASIS_50, DEC) : String(FM_DEEMPHASIS_75, DEC)) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -3252,65 +3304,85 @@ void DoMenu() { switch (menuoption) { case ITEM1: Infoboxprint(myLanguage[language][40]); - tftPrint(0, myLanguage[language][0], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString(myLanguage[language][0], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: Infoboxprint(myLanguage[language][19]); - tftPrint(-1, "%", 170, 118, ActiveColor, ActiveColorSmooth, 28); - tftPrint(1, String(ContrastSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("%", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(ContrastSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: Infoboxprint(myLanguage[language][63]); - if (showmodulation) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((showmodulation ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: Infoboxprint(myLanguage[language][91]); - if (screensaverset) tftPrint(-1, myLanguage[language][92], 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (!screensaverset) tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, String(screensaverOptions[screensaverset], DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (screensaverset) OneBigLineSprite.drawString(myLanguage[language][92], 155, 0); + if (screensaverset) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((screensaverset ? String(screensaverOptions[screensaverset], DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: Infoboxprint(myLanguage[language][74]); switch (poweroptions) { - case LCD_OFF: tftPrint(0, myLanguage[language][76], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case LCD_BRIGHTNESS_1_PERCENT: tftPrint(0, myLanguage[language][94], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case LCD_BRIGHTNESS_A_QUARTER: tftPrint(0, myLanguage[language][95], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case LCD_BRIGHTNESS_HALF: tftPrint(0, myLanguage[language][96], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case LCD_OFF: OneBigLineSprite.drawString(myLanguage[language][76], 135, 0); break; + case LCD_BRIGHTNESS_1_PERCENT: OneBigLineSprite.drawString(myLanguage[language][94], 135, 0); break; + case LCD_BRIGHTNESS_A_QUARTER: OneBigLineSprite.drawString(myLanguage[language][95], 135, 0); break; + case LCD_BRIGHTNESS_HALF: OneBigLineSprite.drawString(myLanguage[language][96], 135, 0); break; } - poweroptionsold = poweroptions; + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: Infoboxprint(myLanguage[language][173]); switch (batteryoptions) { - case BATTERY_NONE: tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case BATTERY_VALUE: tftPrint(0, myLanguage[language][174], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case BATTERY_PERCENT: tftPrint(0, myLanguage[language][175], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case BATTERY_NONE: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case BATTERY_VALUE: OneBigLineSprite.drawString(myLanguage[language][174], 135, 0); break; + case BATTERY_PERCENT: OneBigLineSprite.drawString(myLanguage[language][175], 135, 0); break; } - batteryoptionsold = batteryoptions; + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM7: Infoboxprint(myLanguage[language][98]); - tftPrint(0, unitString[unit], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString(unitString[unit], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM8: Infoboxprint(myLanguage[language][78]); - tftPrint(0, Skin[CurrentSkin], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString(Skin[CurrentSkin], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM9: Infoboxprint(myLanguage[language][77]); - tftPrint(0, Theme[CurrentTheme], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString(Theme[CurrentTheme], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM10: Infoboxprint(myLanguage[language][85]); - tftPrint(0, FreqFont[freqfont], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString(FreqFont[freqfont], 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -3320,56 +3392,68 @@ void DoMenu() { case ITEM1: Infoboxprint(myLanguage[language][38]); switch (showrdserrors) { - case 0: tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 1: tftPrint(0, myLanguage[language][200], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 2: tftPrint(0, myLanguage[language][201], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 3: tftPrint(0, myLanguage[language][202], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case 1: OneBigLineSprite.drawString(myLanguage[language][200], 135, 0); break; + case 2: OneBigLineSprite.drawString(myLanguage[language][201], 135, 0); break; + case 3: OneBigLineSprite.drawString(myLanguage[language][202], 135, 0); break; } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: Infoboxprint(myLanguage[language][46]); - if (region == REGION_EU) tftPrint(0, myLanguage[language][47], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); - if (region == REGION_US) tftPrint(0, myLanguage[language][48], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + if (region == REGION_EU) OneBigLineSprite.drawString(myLanguage[language][47], 135, 0); + if (region == REGION_US) OneBigLineSprite.drawString(myLanguage[language][48], 135, 0); + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: Infoboxprint(myLanguage[language][49]); - if (radio.underscore) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.drawString((radio.underscore ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: Infoboxprint(myLanguage[language][60]); - if (radio.rds.filter) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((radio.rds.filter ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: Infoboxprint(myLanguage[language][61]); - if (radio.rds.pierrors) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((radio.rds.pierrors ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: Infoboxprint(myLanguage[language][99]); switch (af) { - case 0: tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 1: tftPrint(0, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 2: tftPrint(0, String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case 1: OneBigLineSprite.drawString(String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 135, 0); break; + case 2: OneBigLineSprite.drawString(String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 135, 0); break; } + + OneBigLineSprite.pushSprite(24, 118); break; case ITEM7: Infoboxprint(myLanguage[language][176]); - if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((radio.rds.rtbuffer ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM8: Infoboxprint(myLanguage[language][196]); - if (radio.rds.sortaf) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((radio.rds.sortaf ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM9: Infoboxprint(myLanguage[language][203]); - if (radio.rds.fastps) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((radio.rds.fastps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -3378,20 +3462,35 @@ void DoMenu() { switch (menuoption) { case ITEM1: Infoboxprint(myLanguage[language][11]); - tftPrint(-1, "MHz", 170, 118, ActiveColor, ActiveColorSmooth, 28); - tftPrint(1, String(ConverterSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(ConverterSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: Infoboxprint(myLanguage[language][12]); - tftPrint(-1, "MHz", 170, 118, ActiveColor, ActiveColorSmooth, 28); - tftPrint(1, String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: Infoboxprint(myLanguage[language][13]); - tftPrint(-1, "MHz", 170, 118, ActiveColor, ActiveColorSmooth, 28); - tftPrint(1, String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("MHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: @@ -3405,44 +3504,67 @@ void DoMenu() { case ITEM5: Infoboxprint(myLanguage[language][18]); - tftPrint(-1, "dBμV", 155, 118, ActiveColor, ActiveColorSmooth, 28); - tftPrint(1, String(LowLevelSet, DEC), 145, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dBμV", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString(String(LowLevelSet, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: Infoboxprint(myLanguage[language][43]); - if (softmutefm) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((softmutefm ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM7: Infoboxprint(myLanguage[language][65]); - if (fmnb != 0) tftPrint(-1, "%", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (fmnb != 0) tftPrint(1, String(fmnb, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (fmnb != 0) OneBigLineSprite.drawString("%", 155, 0); + if (fmnb != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((fmnb != 0 ? String(fmnb, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM8: - tftPrint(-1, "kHz", 170, 118, ActiveColor, ActiveColorSmooth, 28); Infoboxprint(myLanguage[language][90]); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("kHz", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + switch (fmdefaultstepsize) { - case 0: tftPrint(1, String(FREQ_FM_STEP_50K * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 1: tftPrint(1, String(FREQ_FM_STEP_100K * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case 2: tftPrint(1, String(FREQ_FM_STEP_200K * 10, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case 0: OneBigLineSprite.drawString(String(FREQ_FM_STEP_50K * 10, DEC), 135, 0); break; + case 1: OneBigLineSprite.drawString(String(FREQ_FM_STEP_100K * 10, DEC), 135, 0); break; + case 2: OneBigLineSprite.drawString(String(FREQ_FM_STEP_200K * 10, DEC), 135, 0); break; } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM9: Infoboxprint(myLanguage[language][100]); + switch (bandFM) { - case FM_BAND_ALL: tftPrint(0, myLanguage[language][105] + String(",") + myLanguage[language][106], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case FM_BAND_OIRT: tftPrint(0, myLanguage[language][106], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case FM_BAND_FM: tftPrint(0, myLanguage[language][105], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case FM_BAND_NONE: tftPrint(0, myLanguage[language][83], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + case FM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][105] + String(",") + myLanguage[language][106], 135, 0); break; + case FM_BAND_OIRT: OneBigLineSprite.drawString(myLanguage[language][106], 135, 0); break; + case FM_BAND_FM: OneBigLineSprite.drawString(myLanguage[language][105], 135, 0); break; + case FM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break; } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM10: Infoboxprint(myLanguage[language][82]); - tftPrint (1, String(fmscansens), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString(String(fmscansens), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; } break; @@ -3451,55 +3573,82 @@ void DoMenu() { switch (menuoption) { case ITEM1: Infoboxprint(myLanguage[language][44]); - if (softmuteam) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((softmuteam ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM2: Infoboxprint(myLanguage[language][64]); - if (amnb != 0) tftPrint(-1, "%", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (amnb != 0) tftPrint(1, String(amnb, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (amnb != 0) OneBigLineSprite.drawString("%", 155, 0); + if (amnb != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((amnb != 0 ? String(amnb, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM3: Infoboxprint(myLanguage[language][97]); - tftPrint(-1, "dB", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (AMLevelOffset > 0) tftPrint(1, "+" + String(AMLevelOffset, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, String(AMLevelOffset, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + OneBigLineSprite.drawString("dB", 155, 0); + OneBigLineSprite.setTextDatum(TR_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((AMLevelOffset > 0 ? "+" : "") + String(AMLevelOffset, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM4: Infoboxprint(myLanguage[language][101]); + switch (bandAM) { - case AM_BAND_ALL: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_LW_MW: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][103], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_LW_SW: tftPrint(0, myLanguage[language][102] + String(",") + myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_MW_SW: tftPrint(0, myLanguage[language][103] + String(",") + myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_LW: tftPrint(0, myLanguage[language][102], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_MW: tftPrint(0, myLanguage[language][103], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_SW: tftPrint(0, myLanguage[language][104], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - case AM_BAND_NONE: tftPrint(0, myLanguage[language][83], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; - } + case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104]), 135, 0); break; + case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break; + case AM_BAND_LW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 135, 0); break; + case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break; + case AM_BAND_LW: OneBigLineSprite.drawString(myLanguage[language][102], 135, 0); break; + case AM_BAND_MW: OneBigLineSprite.drawString(myLanguage[language][103], 135, 0); break; + case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break; + case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break; + } + OneBigLineSprite.pushSprite(24, 118); break; case ITEM5: Infoboxprint(myLanguage[language][59]); - if (showSWMIBand) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM6: Infoboxprint(myLanguage[language][186]); - if (amcodect != 0) tftPrint(-1, "%", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (amcodect != 0) tftPrint(1, String(amcodect, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (amcodect != 0) OneBigLineSprite.drawString("%", 155, 0); + if (amcodect != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((amcodect != 0 ? String(amcodect, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM7: Infoboxprint(myLanguage[language][188]); - tftPrint(0, String(amcodectcount, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.drawString(String(amcodectcount, DEC), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM8: Infoboxprint(myLanguage[language][36]); - if (amgain != 0) tftPrint(-1, "dB", 170, 118, ActiveColor, ActiveColorSmooth, 28); - if (amgain != 0) tftPrint(1, String(amgain, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + OneBigLineSprite.setTextDatum(TL_DATUM); + OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + if (amgain != 0) OneBigLineSprite.drawString("dB", 155, 0); + if (amgain != 0) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM); + OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + OneBigLineSprite.drawString((amgain != 0 ? String(amgain, DEC) : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); break; case ITEM9: @@ -3580,6 +3729,7 @@ void DoMenu() { doTheme(); } menuopen = false; + UpdateFonts(); BuildMenu(); } } @@ -3610,4 +3760,16 @@ void Infoboxprint(const char* input) { } else { tftPrint(0, input, 155, 78, ActiveColor, ActiveColorSmooth, 28); } +} + +String removeNewline(String inputString) { + String outputString = ""; + for (int i = 0; i < inputString.length(); i++) { + if (inputString[i] == '\n') { + outputString += ' '; + } else { + outputString += inputString[i]; + } + } + return outputString; } \ No newline at end of file diff --git a/src/gui.h b/src/gui.h index d3f60e9..b528e3a 100644 --- a/src/gui.h +++ b/src/gui.h @@ -74,7 +74,7 @@ extern byte bandFM; extern byte bandforbidden; extern byte batteryold; extern byte batteryoptions; -extern byte batteryoptionsold; +//extern byte batteryoptionsold; extern byte ContrastSet; extern byte CurrentSkin; extern byte CurrentTheme; @@ -89,7 +89,7 @@ extern byte amcodect; extern byte amcodectcount; extern byte amgain; extern byte hardwaremodel; -extern byte hardwaremodelold; +//extern byte hardwaremodelold; extern byte HighCutLevel; extern byte HighCutOffset; extern byte language; @@ -97,7 +97,7 @@ extern byte licold; extern byte menupage; extern byte MSold; extern byte poweroptions; -extern byte poweroptionsold; +//extern byte poweroptionsold; extern byte eonptyold[20]; extern byte rdsblockold; extern byte region; @@ -116,7 +116,7 @@ extern byte tot; extern byte touchrotating; extern byte unit; extern byte spispeed; -extern byte spispeedold; +//extern byte spispeedold; extern char eonpicodeold[20][6]; extern char programTypePrevious[18]; extern float batteryVold; @@ -196,6 +196,7 @@ void MenuDown(); void DoMenu(); void doTheme(); void Infoboxprint(const char* input); +String removeNewline(String inputString); extern void ShowFreq(int mode); extern void ShowBandSelectionFM(bool notglanceview, bool normaldisplay); @@ -209,6 +210,7 @@ extern void updateiMS(); extern void updateEQ(); extern void doTheme(); extern void tryWiFi(); +extern void UpdateFonts(); extern void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int color, int smoothcolor, uint8_t fontsize); #endif \ No newline at end of file