Files
TEF6686_ESP32/src/gui.cpp
2024-09-02 21:28:16 +03:00

4810 lines
206 KiB
C++

#include "gui.h"
#include "language.h"
#include "constants.h"
#include "config.h"
#include <WiFi.h>
#include <Wire.h>
#include <EEPROM.h>
#include <cstring>
byte menuitem;
byte items[10] = {10, static_cast<byte>(dynamicspi ? 10 : 9), 7, 10, 10, 10, 9, 6, 9, 9};
extern mem presets[];
bool setWiFiConnectParam = false;
void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de/online/rgb565-color-picker/
switch (CurrentTheme) {
case 0: // Default PE5PVB theme
PrimaryColor = Yellow;
PrimaryColorSmooth = YellowSmooth;
SecondaryColor = Skyblue;
SecondaryColorSmooth = SkyblueSmooth;
FrameColor = Blue;
GreyoutColor = BlackOlive;
BackgroundColor = Black;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
FreqColor = Yellow;
FreqColorSmooth = YellowSmooth;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Green;
InsignificantColorSmooth = GreenSmooth;
StereoColor = Red;
StereoColorSmooth = RedSmooth;
RDSColor = Yellow;
RDSColorSmooth = YellowSmooth;
RDSDropoutColor = Teal;
RDSDropoutColorSmooth = TealSmooth;
BarSignificantColor = Red;
BarInsignificantColor = Green;
ModBarSignificantColor = Red;
ModBarInsignificantColor = Green;
BWAutoColor = Teal;
BWAutoColorSmooth = TealSmooth;
BatteryValueColor = Teal;
BatteryValueColorSmooth = Black;
break;
case 1: // Cyan theme
PrimaryColor = Cyan;
PrimaryColorSmooth = CyanSmooth;
SecondaryColor = Teal;
SecondaryColorSmooth = TealSmooth;
FrameColor = CyanFrame;
GreyoutColor = CyanGrey;
BackgroundColor = Black;
FreqColor = Cyan;
FreqColorSmooth = CyanSmooth;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Green;
InsignificantColorSmooth = GreenSmooth;
StereoColor = Cyan;
StereoColorSmooth = CyanSmooth;
RDSColor = Cyan;
RDSColorSmooth = CyanSmooth;
RDSDropoutColor = CyanDark;
RDSDropoutColorSmooth = CyanDarkSmooth;
BarSignificantColor = Red;
BarInsignificantColor = Cyan;
ModBarSignificantColor = Red;
ModBarInsignificantColor = Cyan;
BWAutoColor = Teal;
BWAutoColorSmooth = TealSmooth;
BatteryValueColor = Teal;
BatteryValueColorSmooth = TealSmooth;
break;
case 2: // Crimson theme
PrimaryColor = Crimson;
PrimaryColorSmooth = CrimsonSmooth;
SecondaryColor = Coral;
SecondaryColorSmooth = CoralSmooth;
FrameColor = CrimsonSmooth;
GreyoutColor = PaleGrey;
BackgroundColor = Black;
FreqColor = Crimson;
FreqColorSmooth = CrimsonSmooth;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
SignificantColor = Green;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Green;
InsignificantColorSmooth = GreenSmooth;
StereoColor = Crimson;
StereoColorSmooth = Black;
RDSColor = Crimson;
RDSColorSmooth = Black;
RDSDropoutColor = CrimsonDark;
RDSDropoutColorSmooth = CrimsonDarkSmooth;
BarSignificantColor = Yellow;
BarInsignificantColor = Crimson;
ModBarSignificantColor = Yellow;
ModBarInsignificantColor = Crimson;
BWAutoColor = Coral;
BWAutoColorSmooth = CoralSmooth;
BatteryValueColor = Watermelon;
BatteryValueColorSmooth = WatermelonSmooth;
break;
case 3: // Monochrome theme
PrimaryColor = White;
PrimaryColorSmooth = Black;
SecondaryColor = White;
SecondaryColorSmooth = Black;
FrameColor = GreenGrey;
GreyoutColor = PaleGrey;
BackgroundColor = Black;
FreqColor = White;
FreqColorSmooth = Black;
ActiveColor = White;
ActiveColorSmooth = Black;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Green;
InsignificantColorSmooth = GreenSmooth;
StereoColor = White;
StereoColorSmooth = Black;
RDSColor = White;
RDSColorSmooth = Black;
RDSDropoutColor = PaleGrey;
RDSDropoutColorSmooth = Black;
BarSignificantColor = Red;
BarInsignificantColor = Green;
ModBarSignificantColor = Red;
ModBarInsignificantColor = Green;
BWAutoColor = PureGrey;
BWAutoColorSmooth = Black;
BatteryValueColor = White;
BatteryValueColorSmooth = Black;
break;
case 4: // Volcano theme
PrimaryColor = Orange;
PrimaryColorSmooth = OrangeSmooth;
SecondaryColor = Tangerine;
SecondaryColorSmooth = TangerineSmooth;
FrameColor = GreenGrey;
GreyoutColor = Maroon;
BackgroundColor = Prussian;
FreqColor = Orange;
FreqColorSmooth = OrangeSmooth;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Green;
InsignificantColorSmooth = GreenSmooth;
StereoColor = Orange;
StereoColorSmooth = CyanSmooth;
RDSColor = Orange;
RDSColorSmooth = OrangeSmooth;
RDSDropoutColor = Dallas;
RDSDropoutColorSmooth = DallasSmooth;
BarSignificantColor = Red;
BarInsignificantColor = Orange;
ModBarSignificantColor = Red;
ModBarInsignificantColor = Orange;
BWAutoColor = Tangerine;
BWAutoColorSmooth = TangerineSmooth;
BatteryValueColor = Tangerine;
BatteryValueColorSmooth = TangerineSmooth;
break;
case 5: // Dendro theme
PrimaryColor = Green;
PrimaryColorSmooth = GreenDark;
SecondaryColor = Cabbage;
SecondaryColorSmooth = CabbageSmooth;
FrameColor = GreenDark;
GreyoutColor = PaleGrey;
BackgroundColor = Black;
FreqColor = Green;
FreqColorSmooth = GreenDark;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Green;
InsignificantColorSmooth = GreenSmooth;
StereoColor = Green;
StereoColorSmooth = GreenDark;
RDSColor = Green;
RDSColorSmooth = GreenDark;
RDSDropoutColor = Laurel;
RDSDropoutColorSmooth = LaurelSmooth;
BarSignificantColor = Red;
BarInsignificantColor = Green;
ModBarSignificantColor = Red;
ModBarInsignificantColor = Green;
BWAutoColor = Cabbage;
BWAutoColorSmooth = CabbageSmooth;
BatteryValueColor = Cabbage;
BatteryValueColorSmooth = CabbageSmooth;
break;
case 6: // Sakura theme
PrimaryColor = Sakura;
PrimaryColorSmooth = SakuraSmooth;
SecondaryColor = Cherry;
SecondaryColorSmooth = CherrySmooth;
FrameColor = Tyrian;
GreyoutColor = Blackberry;
BackgroundColor = Black;
FreqColor = Sakura;
FreqColorSmooth = SakuraSmooth;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Green;
InsignificantColorSmooth = GreenSmooth;
StereoColor = Sakura;
StereoColorSmooth = SakuraSmooth;
RDSColor = Sakura;
RDSColorSmooth = SakuraSmooth;
RDSDropoutColor = SakuraGrey;
RDSDropoutColorSmooth = SakuraGreySmooth;
BarSignificantColor = Black;
BarSignificantColor = Red;
BarInsignificantColor = Sakura;
ModBarSignificantColor = Red;
ModBarInsignificantColor = Sakura;
BWAutoColor = Cherry;
BWAutoColorSmooth = CherrySmooth;
BatteryValueColor = Cherry;
BatteryValueColorSmooth = CherrySmooth;
break;
case 7: // Whiteout theme
PrimaryColor = Black;
PrimaryColorSmooth = White;
SecondaryColor = Darkgrey;
SecondaryColorSmooth = White;
FrameColor = Darkgrey;
GreyoutColor = PureGrey;
BackgroundColor = Honeydew;
FreqColor = Black;
FreqColorSmooth = White;
ActiveColor = Black;
ActiveColorSmooth = Honeydew;
SignificantColor = Red;
SignificantColorSmooth = Honeydew;
InsignificantColor = Green;
InsignificantColorSmooth = GreenSmooth;
StereoColor = Black;
StereoColorSmooth = Honeydew;
RDSColor = Black;
RDSColorSmooth = Honeydew;
RDSDropoutColor = PureGrey;
RDSDropoutColorSmooth = White;
BarSignificantColor = Black;
BarInsignificantColor = Green;
ModBarSignificantColor = Black;
ModBarInsignificantColor = Green;
BWAutoColor = PureGrey;
BWAutoColorSmooth = White;
BatteryValueColor = Black;
BatteryValueColorSmooth = White;
break;
case 8: // Tangerine theme
PrimaryColor = Tangerine;
PrimaryColorSmooth = TangerineSmooth;
SecondaryColor = Yolk;
SecondaryColorSmooth = YolkSmooth;
FrameColor = Chocolate;
GreyoutColor = Spice;
BackgroundColor = Black;
FreqColor = Tangerine;
FreqColorSmooth = IndigoSmooth;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Green;
InsignificantColorSmooth = GreenSmooth;
StereoColor = Tangerine;
StereoColorSmooth = IndigoSmooth;
RDSColor = Tangerine;
RDSColorSmooth = IndigoSmooth;
RDSDropoutColor = Copper;
RDSDropoutColorSmooth = CopperSmooth;
BarSignificantColor = Red;
BarInsignificantColor = Green;
ModBarSignificantColor = Red;
ModBarInsignificantColor = Green;
BWAutoColor = Yolk;
BWAutoColorSmooth = YolkSmooth;
BatteryValueColor = Yolk;
BatteryValueColorSmooth = YolkSmooth;
break;
case 9: // Ocean theme
PrimaryColor = Ocean;
PrimaryColorSmooth = OceanSmooth;
SecondaryColor = Deepsky;
SecondaryColorSmooth = DeepskySmooth;
FrameColor = Navy;
GreyoutColor = Cornblue;
BackgroundColor = Black;
FreqColor = Ocean;
FreqColorSmooth = OceanSmooth;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Cyan;
InsignificantColorSmooth = CyanSmooth;
StereoColor = Ocean;
StereoColorSmooth = OceanSmooth;
RDSColor = Ocean;
RDSColorSmooth = OceanSmooth;
RDSDropoutColor = Cove;
RDSDropoutColorSmooth = CoveSmooth;
BarSignificantColor = Red;
BarInsignificantColor = Ocean;
ModBarSignificantColor = Red;
ModBarInsignificantColor = Ocean;
BWAutoColor = Deepsky;
BWAutoColorSmooth = DeepskySmooth;
BatteryValueColor = Deepsky;
BatteryValueColorSmooth = DeepskySmooth;
break;
case 10: // Indigo theme
PrimaryColor = Indigo;
PrimaryColorSmooth = IndigoSmooth;
SecondaryColor = Violet;
SecondaryColorSmooth = VioletSmooth;
FrameColor = Electric;
GreyoutColor = Meteorite;
BackgroundColor = Black;
FreqColor = Indigo;
FreqColorSmooth = IndigoSmooth;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Green;
InsignificantColorSmooth = GreenSmooth;
StereoColor = Indigo;
StereoColorSmooth = IndigoSmooth;
RDSColor = Indigo;
RDSColorSmooth = IndigoSmooth;
RDSDropoutColor = Logan;
RDSDropoutColorSmooth = LoganSmooth;
BarSignificantColor = Red;
BarInsignificantColor = Indigo;
ModBarSignificantColor = Red;
ModBarInsignificantColor = Indigo;
BWAutoColor = Violet;
BWAutoColorSmooth = VioletSmooth;
BatteryValueColor = Violet;
BatteryValueColorSmooth = VioletSmooth;
break;
case 11: // Maroon
PrimaryColor = Cherry;
PrimaryColorSmooth = CherrySmooth;
SecondaryColor = Crimson;
SecondaryColorSmooth = CrimsonSmooth;
FrameColor = Electric;
GreyoutColor = CoralSmooth;
BackgroundColor = MaroonSmooth;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
FreqColor = Cherry;
FreqColorSmooth = CherrySmooth;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Violet;
InsignificantColorSmooth = VioletSmooth;
StereoColor = Cherry;
StereoColorSmooth = CherrySmooth;
RDSColor = Coral;
RDSColorSmooth = CoralSmooth;
RDSDropoutColor = Logan;
RDSDropoutColorSmooth = LoganSmooth;
BarSignificantColor = Yolk;
BarInsignificantColor = Cherry;
ModBarSignificantColor = Yolk;
ModBarInsignificantColor = Cherry;
BWAutoColor = Violet;
BWAutoColorSmooth = VioletSmooth;
BatteryValueColor = Purple;
BatteryValueColorSmooth = PurpleSmooth;
break;
case 12: // GoldBrite
PrimaryColor = Yellow;
PrimaryColorSmooth = YellowSmooth;
SecondaryColor = Skyblue;
SecondaryColorSmooth = SkyblueSmooth;
FrameColor = Blue;
GreyoutColor = BlackOlive;
BackgroundColor = Black;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
FreqColor = White;
FreqColorSmooth = WhiteSmooth;
SignificantColor = Red;
SignificantColorSmooth = RedSmooth;
InsignificantColor = Ocean;
InsignificantColorSmooth = OceanSmooth;
StereoColor = Red;
StereoColorSmooth = RedSmooth;
RDSColor = Yellow;
RDSColorSmooth = YellowSmooth;
RDSDropoutColor = Teal;
RDSDropoutColorSmooth = TealSmooth;
BarSignificantColor = Red;
BarInsignificantColor = Ocean;
ModBarSignificantColor = Red;
ModBarInsignificantColor = Green;
BWAutoColor = Teal;
BWAutoColorSmooth = TealSmooth;
BatteryValueColor = Teal;
BatteryValueColorSmooth = Black;
break;
case 13: // Bubblegum
PrimaryColor = Cyan;
PrimaryColorSmooth = CyanSmooth;
SecondaryColor = Cherry;
SecondaryColorSmooth = CherrySmooth;
FrameColor = Electric;
GreyoutColor = Meteorite;
BackgroundColor = EerieBlack;
ActiveColor = White;
ActiveColorSmooth = WhiteSmooth;
FreqColor = Pink;
FreqColorSmooth = PinkSmooth;
SignificantColor = Purple;
SignificantColorSmooth = PurpleSmooth;
InsignificantColor = Cherry;
InsignificantColorSmooth = CherrySmooth;
StereoColor = Cherry;
StereoColorSmooth = CherrySmooth;
RDSColor = Teal;
RDSColorSmooth = TealSmooth;
RDSDropoutColor = Logan;
RDSDropoutColorSmooth = LoganSmooth;
BarSignificantColor = Coral;
BarInsignificantColor = Teal;
ModBarSignificantColor = Sakura;
ModBarInsignificantColor = Skyblue;
BWAutoColor = Violet;
BWAutoColorSmooth = VioletSmooth;
BatteryValueColor = Turquoise;
BatteryValueColorSmooth = CyanDarkSmooth;
break;
}
}
void BuildAFScreen() {
if (!afscreen && RDSstatus) {
tft.drawRoundRect(20, 30, 274, 170, 5, ActiveColor);
tft.fillRoundRect(22, 32, 270, 166, 5, BackgroundColor);
tftPrint(0, myLanguage[language][34], 155, 98, ActiveColor, ActiveColorSmooth, 28);
radio.TestAFEON();
}
afscreen = true;
advancedRDS = false;
tft.fillScreen(BackgroundColor);
tft.drawRect(0, 0, 320, 240, FrameColor);
tft.drawLine(0, 30, 320, 30, FrameColor);
tft.drawLine(0, 199, 320, 199, FrameColor);
tft.drawLine(0, 218, 320, 218, FrameColor);
tft.drawLine(53, 30, 53, 0, FrameColor);
tft.drawLine(89, 30, 89, 0, FrameColor);
tft.drawLine(120, 30, 120, 0, FrameColor);
tft.drawLine(158, 30, 158, 0, FrameColor);
tft.drawLine(248, 30, 248, 0, FrameColor);
tftPrint(-1, "kHz", 203, 4, ActiveColor, ActiveColorSmooth, 28);
tftPrint(0, myLanguage[language][93], 160, 222, ActiveColor, ActiveColorSmooth, 16);
if (afpagenr == 1) {
if (!radio.rds.hasAF) tftPrint(-1, myLanguage[language][87], 6, 48, PrimaryColor, PrimaryColorSmooth, 16);
} else if (afpagenr == 2) {
if (!radio.rds.hasEON) tftPrint(-1, myLanguage[language][88], 6, 48, PrimaryColor, PrimaryColorSmooth, 16);
}
RDSstatusold = false;
ShowFreq(0);
Stereostatusold = false;
haseonold = false;
hasafold = false;
BWreset = true;
SStatusold = 2000;
rssiold = 2000;
batteryold = 6;
batteryVold = 0;
vPerold = 0;
af_counterold = 254;
afmethodBold = false;
PIold = " ";
PSold = " ";
xPos = 0;
xPos2 = 0;
xPos3 = 0;
xPos4 = 0;
xPos5 = 0;
for (byte i = 0; i < 20; i++) {
mappedfreqold[i] = 0;
mappedfreqold2[i] = 0;
mappedfreqold3[i] = 0;
eonpicodeold[i][0] = '\0';
eonpsold[i] = "";
eonptyold[i] = 254;
}
for (byte i = 0; i < 20; i++) std::memset(eonpicodeold[i], '\0', sizeof(eonpicodeold[i]));
if (afpagenr == 1 && radio.rds.hasDABAF && radio.rds.dabaffreq != 0) tftPrint(1, "DAB: " + String(radio.rds.dabafchannel) + " (" + String(radio.rds.dabafeid) + ")", 166, 32, SecondaryColor, SecondaryColorSmooth, 16);
}
void ShowOneLine(byte position, byte item, bool selected) {
switch (CurrentTheme) {
case 7: FullLineSprite.pushImage (-8, -(position + 2), 320, 240, configurationbackground_wo); break;
default: FullLineSprite.pushImage (-8, -(position + 2), 320, 240, configurationbackground); break;
}
if (selected) {
switch (CurrentTheme) {
case 7: FullLineSprite.pushImage(0, 0, 304, 19, selector_wo); break;
default: FullLineSprite.pushImage(0, 0, 304, 19, selector); break;
}
}
switch (item) {
case 0:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][177]), 152, 2);
break;
case MAINSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][108]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (hardwaremodel) {
case BASE_ILI9341: FullLineSprite.drawString(myLanguage[language][109], 298, 2); break;
case PORTABLE_ILI9341: FullLineSprite.drawString(myLanguage[language][110], 298, 2); break;
case PORTABLE_TOUCH_ILI9341: FullLineSprite.drawString(myLanguage[language][111], 298, 2); break;
}
break;
case AUDIOSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][20]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("dB", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((VolSet > 0 ? "+" : "") + String(VolSet, DEC), 258, 2);
break;
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][39]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(myLanguage[language][0], 298, 2);
break;
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][38]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (showrdserrors) {
case 0: FullLineSprite.drawString(myLanguage[language][30], 298, 2); break;
case 1: FullLineSprite.drawString(myLanguage[language][200], 298, 2); break;
case 2: FullLineSprite.drawString(myLanguage[language][201], 298, 2); break;
case 3: FullLineSprite.drawString(myLanguage[language][202], 298, 2); break;
}
break;
case FMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][21]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("MHz", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(ConverterSet, DEC), 258, 2);
break;
case AMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][44]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((softmuteam ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case CONNECTIVITY:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][50]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((USBmode ? "RDS Spy" : "XDRGTK"), 298, 2);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][212]), 6, 2);
break;
case AUTOMEM:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][269]), 6, 2);
break;
}
break;
case 1:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][178]), 152, 2);
break;
case MAINSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][107]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((touchrotating ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case AUDIOSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][45]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((edgebeep ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][29]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(ContrastSet, DEC), 258, 2);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("%", 298, 2);
break;
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][46]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (region == REGION_EU) FullLineSprite.drawString(myLanguage[language][47], 298, 2);
if (region == REGION_US) FullLineSprite.drawString(myLanguage[language][48], 298, 2);
break;
case FMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][22]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("MHz", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 258, 2);
break;
case AMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][64]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (amnb != 0) FullLineSprite.drawString(String(amnb, DEC), 258, 2);
if (amnb != 0) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString((amnb != 0 ? "%" : myLanguage[language][30]), 298, 2);
break;
case CONNECTIVITY:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][51] + (wifi ? " IP: " + String(WiFi.localIP().toString()) : "")), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((wifi ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][209]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(scanstart + 1, DEC), 298, 2);
break;
case AUTOMEM:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][264]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("MHz", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(memstartfreq / 10 + ConverterSet, DEC) + "." + String(memstartfreq % 10 + ConverterSet, DEC), 258, 2);
break;
}
break;
case 2:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][179]), 152, 2);
break;
case MAINSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][75]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (tot != 0) FullLineSprite.drawString(String(tot), 258, 2);
if (tot != 0) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString((tot != 0 ? myLanguage[language][80] : myLanguage[language][30]), 298, 2);
break;
case AUDIOSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][67]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((audiomode ? "MPX" : "Stereo"), 298, 2);
break;
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][63]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((showmodulation ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][49]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((radio.underscore ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case FMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][23]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("MHz", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 258, 2);
break;
case AMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][97]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("dB", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((AMLevelOffset > 0 ? "+" : "") + String(AMLevelOffset, DEC), 258, 2);
break;
case CONNECTIVITY:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][52]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(">", 298, 2);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][210]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(scanstop + 1, DEC), 298, 2);
break;
case AUTOMEM:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][265]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("MHz", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(memstopfreq / 10 + ConverterSet, DEC) + "." + String(memstopfreq % 10 + ConverterSet, DEC), 258, 2);
break;
}
break;
case 3:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][180]), 152, 2);
break;
case MAINSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][62]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (autosquelch) FullLineSprite.drawString(myLanguage[language][86], 298, 2); else FullLineSprite.drawString((usesquelch ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case AUDIOSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][25]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (StereoLevel != 0) FullLineSprite.drawString(String(StereoLevel, DEC), 258, 2);
if (StereoLevel != 0) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString((StereoLevel != 0 ? "dBμV" : myLanguage[language][30]), 298, 2);
break;
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][91]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (screensaverset) FullLineSprite.drawString(String(screensaverOptions[screensaverset], DEC), 258, 2);
if (screensaverset) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString((screensaverset ? myLanguage[language][92] : myLanguage[language][30]), 298, 2);
break;
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][60]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((radio.rds.filter ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case FMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][24]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("dB", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((LevelOffset > 0 ? "+" : "") + String(LevelOffset, DEC), 258, 2);
break;
case AMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][59]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case CONNECTIVITY:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][58]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((wifi ? String(WiFi.localIP()[0]) + "." + String(WiFi.localIP()[1]) + "." + String(WiFi.localIP()[2]) + "." + String(subnetclient, DEC) : "-"), 298, 2);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][211]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][92]), 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((scanhold == 0 ? "0.5" : String(scanhold, DEC)), 258, 2);
break;
case AUTOMEM:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][266]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(memstartpos + 1, DEC), 298, 2);
break;
}
break;
case 4:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][181]), 152, 2);
break;
case MAINSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][37]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("dBµV", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(fmagc, DEC), 258, 2);
break;
case AUDIOSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][26]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(HighCutLevel * 100, DEC), 258, 2);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("Hz", 298, 2);
break;
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][74]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (poweroptions) {
case LCD_OFF: FullLineSprite.drawString(myLanguage[language][76], 298, 2); break;
case LCD_BRIGHTNESS_1_PERCENT: FullLineSprite.drawString(myLanguage[language][94], 298, 2); break;
case LCD_BRIGHTNESS_A_QUARTER: FullLineSprite.drawString(myLanguage[language][95], 298, 2); break;
case LCD_BRIGHTNESS_HALF: FullLineSprite.drawString(myLanguage[language][96], 298, 2); break;
}
break;
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][61]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((radio.rds.pierrors ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case FMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][28]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("dBμV", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(LowLevelSet, DEC), 258, 2);
break;
case AMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][185]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (amcodect != 0) FullLineSprite.drawString(String(amcodect, DEC), 258, 2);
if (amcodect != 0) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString((amcodect != 0 ? "%" : myLanguage[language][30]), 298, 2);
break;
case CONNECTIVITY:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][271]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(stationlistid, DEC), 298, 2);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][216]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((scanmem ? myLanguage[language][218] : myLanguage[language][217]), 298, 2);
break;
case AUTOMEM:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][267]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(memstoppos + 1, DEC), 298, 2);
break;
}
break;
case 5:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][182]), 152, 2);
break;
case MAINSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][198]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("dBµV", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(amagc, DEC), 258, 2);
break;
case AUDIOSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][27]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (HighCutOffset != 0) FullLineSprite.drawString(String(HighCutOffset, DEC), 258, 2);
if (HighCutOffset != 0) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString((HighCutOffset != 0 ? "dBμV" : myLanguage[language][30]), 298, 2);
break;
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][173]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (batteryoptions) {
case BATTERY_NONE: FullLineSprite.drawString(myLanguage[language][30], 298, 2); break;
case BATTERY_VALUE: FullLineSprite.drawString(myLanguage[language][174], 298, 2); break;
case BATTERY_PERCENT: FullLineSprite.drawString(myLanguage[language][175], 298, 2); break;
}
break;
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][99]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (af) {
case 0: FullLineSprite.drawString(myLanguage[language][30], 298, 2); break;
case 1: FullLineSprite.drawString(String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][42]), 298, 2); break;
case 2: FullLineSprite.drawString(String(myLanguage[language][42]) + " / REG " + String(myLanguage[language][30]), 298, 2); break;
}
break;
case FMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][43]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((softmutefm ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case AMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][187]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(amcodectcount, DEC), 298, 2);
break;
case CONNECTIVITY:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][205]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((XDRGTKMuteScreen ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][219]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (scancancel) {
case OFF: FullLineSprite.drawString(myLanguage[language][30], 298, 2); break;
case CORRECTPI: FullLineSprite.drawString(myLanguage[language][220], 298, 2); break;
case SIGNAL: FullLineSprite.drawString(myLanguage[language][221], 298, 2); break;
}
break;
case AUTOMEM:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][268]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((mempionly ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
}
break;
case 6:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][183]), 152, 2);
break;
case MAINSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][100]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (bandFM) {
case FM_BAND_ALL: FullLineSprite.drawString(myLanguage[language][105] + String(",") + myLanguage[language][106], 298, 2); break;
case FM_BAND_OIRT: FullLineSprite.drawString(myLanguage[language][106], 298, 2); break;
case FM_BAND_FM: FullLineSprite.drawString(myLanguage[language][105], 298, 2); break;
case FM_BAND_NONE: FullLineSprite.drawString(myLanguage[language][83], 298, 2); break;
}
break;
case AUDIOSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][199]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (fmdeemphasis != DEEMPHASIS_NONE) FullLineSprite.drawString(String((fmdeemphasis == DEEMPHASIS_50 ? FM_DEEMPHASIS_50 : FM_DEEMPHASIS_75), DEC), 258, 2);
if (fmdeemphasis != DEEMPHASIS_NONE) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(((fmdeemphasis != DEEMPHASIS_NONE) != 0 ? "μs" : myLanguage[language][30]), 298, 2);
break;
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][98]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(unitString[unit], 298, 2);
break;
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][176]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((radio.rds.rtbuffer ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case FMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][65]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (fmnb != 0) FullLineSprite.drawString(String(fmnb, DEC), 258, 2);
if (fmnb != 0) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString((fmnb != 0 ? "%" : myLanguage[language][30]), 298, 2);
break;
case AMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][36]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (amgain != 0) FullLineSprite.drawString(String(amgain, DEC), 258, 2);
if (amgain != 0) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString((amgain != 0 ? "dB" : myLanguage[language][30]), 298, 2);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][222]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case AUTOMEM:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][278]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (memdoublepi) {
case MEMPI_OFF: FullLineSprite.drawString(myLanguage[language][30], 298, 2); break;
case MEMPI_RANGE: FullLineSprite.drawString(myLanguage[language][279], 298, 2); break;
default: FullLineSprite.drawString(myLanguage[language][280], 298, 2); break;
}
break;
}
break;
case 7:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][213]), 152, 2);
break;
case MAINSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][101]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
#ifdef HAS_AIR_BAND
switch (bandAM) {
case AM_BAND_ALL: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 2); break;
case AM_BAND_LW_MW_SW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 298, 2); break;
case AM_BAND_LW_MW_AIR: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 298, 2); break;
case AM_BAND_LW_SW_AIR: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 2); break;
case AM_BAND_MW_SW_AIR: FullLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 2); break;
case AM_BAND_LW_MW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 298, 2); break;
case AM_BAND_LW_SW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 298, 2); break;
case AM_BAND_LW_AIR: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 298, 2); break;
case AM_BAND_MW_SW: FullLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 298, 2); break;
case AM_BAND_MW_AIR: FullLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 298, 2); break;
case AM_BAND_SW_AIR: FullLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 2); break;
case AM_BAND_LW: FullLineSprite.drawString(myLanguage[language][102], 298, 2); break;
case AM_BAND_MW: FullLineSprite.drawString(myLanguage[language][103], 298, 2); break;
case AM_BAND_SW: FullLineSprite.drawString(myLanguage[language][104], 298, 2); break;
case AM_BAND_AIR: FullLineSprite.drawString(myLanguage[language][223], 298, 2); break;
case AM_BAND_NONE: FullLineSprite.drawString(myLanguage[language][83], 298, 2); break;
}
break;
#else
switch (bandAM) {
case AM_BAND_ALL: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 298, 2); break;
case AM_BAND_LW_MW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 298, 2); break;
case AM_BAND_LW_SW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 298, 2); break;
case AM_BAND_MW_SW: FullLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 298, 2); break;
case AM_BAND_LW: FullLineSprite.drawString(myLanguage[language][102], 298, 2); break;
case AM_BAND_MW: FullLineSprite.drawString(myLanguage[language][103], 298, 2); break;
case AM_BAND_SW: FullLineSprite.drawString(myLanguage[language][104], 298, 2); break;
case AM_BAND_NONE: FullLineSprite.drawString(myLanguage[language][83], 298, 2); break;
}
break;
#endif
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][262]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][215]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((radio.rds.sortaf ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case FMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][90]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("kHz", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (fmdefaultstepsize) {
case 0: FullLineSprite.drawString(String(FREQ_FM_STEP_50K * 10, DEC), 258, 2); break;
case 1: FullLineSprite.drawString(String(FREQ_FM_STEP_100K * 10, DEC), 258, 2); break;
case 2: FullLineSprite.drawString(String(FREQ_FM_STEP_200K * 10, DEC), 258, 2); break;
}
break;
case AMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][169]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((mwstepsize ? "10" : "9"), 258, 2);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("kHz", 298, 2);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][82]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(fmscansens), 298, 2);
break;
case AUTOMEM:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][82]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(fmscansens), 298, 2);
break;
}
break;
case 8:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][270]), 152, 2);
break;
case MAINSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][224]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (longbandpress) {
case STANDBY: FullLineSprite.drawString(myLanguage[language][225], 298, 2); break;
case SCREENOFF: FullLineSprite.drawString(myLanguage[language][226], 298, 2); break;
default: FullLineSprite.drawString(myLanguage[language][227], 298, 2); break;
}
break;
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][77]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(Theme[CurrentTheme], 298, 2);
break;
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][203]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (radio.rds.fastps) {
case 0: FullLineSprite.drawString(myLanguage[language][30], 298, 2); break;
case 1: FullLineSprite.drawString(myLanguage[language][260], 298, 2); break;
case 2: FullLineSprite.drawString(myLanguage[language][261], 298, 2); break;
}
break;
case FMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][206]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((fmsi ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case AMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][82]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(amscansens), 298, 2);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][281]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((scanholdonsignal ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case AUTOMEM:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][276]), 6, 2);
break;
}
break;
case 9:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][70]), 152, 2);
break;
case MAINSETTINGS:
if (dynamicspi) {
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][81]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
if (spispeed == 7) {
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(myLanguage[language][86], 298, 2);
} else {
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("MHz", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 258, 2);
}
}
break;
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][85]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(FreqFont[freqfont], 298, 2);
break;
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][263]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((showlongps ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break;
case FMSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][82]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(fmscansens), 298, 2);
break;
}
break;
}
FullLineSprite.pushSprite(8, 2 + position);
}
void BuildMenu() {
advancedRDS = false;
switch (CurrentTheme) {
case 7: tft.pushImage (0, 0, 320, 240, configurationbackground_wo); break;
default: tft.pushImage (0, 0, 320, 240, configurationbackground); break;
}
if (!submenu) {
tftPrint(0, myLanguage[language][41], 160, 6, PrimaryColor, PrimaryColorSmooth, 16);
} else {
tftPrint(-1, myLanguage[language][184], 8, 6, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, myLanguage[language][189 + menupage - 1], 312, 6, ActiveColor, ActiveColorSmooth, 16);
}
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));
analogWrite(SMETERPIN, 0);
}
void BuildAdvancedRDS() {
afscreen = false;
afpage = false;
afpagenr = 1;
advancedRDS = true;
tft.fillScreen(BackgroundColor);
tft.drawRect(0, 0, 320, 240, FrameColor);
tft.drawLine(0, 30, 320, 30, FrameColor);
tft.drawLine(0, 68, 320, 68, FrameColor);
tft.drawLine(0, 104, 320, 104, FrameColor);
tft.drawLine(0, 126, 320, 126, FrameColor);
tft.drawLine(120, 30, 120, 0, FrameColor);
tft.drawLine(210, 30, 210, 240, FrameColor);
tft.drawLine(53, 30, 53, 0, FrameColor);
tft.drawLine(89, 30, 89, 0, FrameColor);
tft.drawLine(120, 30, 120, 0, FrameColor);
tft.drawLine(158, 30, 158, 0, FrameColor);
tft.drawLine(248, 30, 248, 0, FrameColor);
tft.drawLine(0, 140, 210, 140, FrameColor);
tft.drawLine(0, 166, 210, 166, FrameColor);
tft.drawLine(0, 193, 210, 193, FrameColor);
tft.drawLine(210, 191, 320, 191, FrameColor);
tft.drawLine(0, 217, 210, 217, FrameColor);
tft.drawRect(0, 0, 320, 240, FrameColor);
tftPrint(-1, "ERRORS", 3, 34, ActiveColor, ActiveColorSmooth, 16);
tftPrint(1, "MHz", 310, 35, ActiveColor, ActiveColorSmooth, 16);
tftPrint(1, unitString[unit], 310, 51, ActiveColor, ActiveColorSmooth, 16);
if (region == REGION_EU) tftPrint(-1, "PI", 216, 81, ActiveColor, ActiveColorSmooth, 16);
if (region == REGION_US) {
tftPrint(-1, "PI:", 216, 72, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "ID:", 216, 89, ActiveColor, ActiveColorSmooth, 16);
}
tftPrint(-1, "PS", 3, 81, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "PTY", 3, 109, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "RT+", 3, 147, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "AF", 3, 199, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "EON", 3, 174, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "RT", 3, 222, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "A:", 66, 34, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "B:", 104, 34, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "C:", 142, 34, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "D:", 180, 34, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "ECC", 214, 193, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "LIC", 214, 208, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "PIN", 214, 223, ActiveColor, ActiveColorSmooth, 16);
tftPrint(1, "Dynamic PTY", 300, 130, ActiveColor, ActiveColorSmooth, 16);
tftPrint(1, "Artif. head", 300, 145, ActiveColor, ActiveColorSmooth, 16);
tftPrint(1, "Compressed", 300, 160, ActiveColor, ActiveColorSmooth, 16);
tftPrint(1, "Has stereo", 300, 175, ActiveColor, ActiveColorSmooth, 16);
tft.fillCircle(86, 41, 5, SignificantColor);
tft.fillCircle(124, 41, 5, SignificantColor);
tft.fillCircle(162, 41, 5, SignificantColor);
tft.fillCircle(200, 41, 5, SignificantColor);
tft.fillCircle(310, 137, 5, SignificantColor);
tft.fillCircle(310, 153, 5, SignificantColor);
tft.fillCircle(310, 168, 5, SignificantColor);
tft.fillCircle(310, 183, 5, SignificantColor);
for (int i = 0; i < 33; i++) tft.fillCircle((6 * i) + 10, 133, 2, GreyoutColor);
tftPrint(-1, "kHz", 203, 4, ActiveColor, ActiveColorSmooth, 28);
tft.drawBitmap(122, 5, RDSLogo, 35, 22, GreyoutColor);
tft.drawBitmap(92, 4, Speaker, 26, 22, GreyoutColor);
if (!StereoToggle) {
tft.drawCircle(71, 15, 10, SecondaryColor);
tft.drawCircle(71, 15, 9, SecondaryColor);
} else {
tft.drawCircle(66, 15, 10, GreyoutColor);
tft.drawCircle(66, 15, 9, GreyoutColor);
tft.drawCircle(76, 15, 10, GreyoutColor);
tft.drawCircle(76, 15, 9, GreyoutColor);
}
tftPrint(-1, "TP", 2, 51, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "TA", 24, 51, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "AF", 50, 51, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "-B", 68, 51, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "TMC", 88, 51, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "RT+", 123, 51, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "EON", 153, 51, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "S", 185, 51, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "M", 196, 51, GreyoutColor, BackgroundColor, 16);
RDSstatusold = false;
ShowFreq(0);
Stereostatusold = false;
SStatusold = 2000;
SStatus = 100;
rssiold = 2000;
rdsblockold = 33;
batteryold = 6;
batteryVold = 0;
vPerold = 0;
ECCold = 253;
strcpy(programTypePrevious, "");
ptynold = " ";
PIold = " ";
PSold = " ";
stationIDold = " ";
stationStateold = " ";
MSold = 0;
licold = 254;
af_counterold = 254;
TAold = false;
TPold = false;
hastmcold = false;
dynamicPTYold = false;
artheadold = false;
compressedold = false;
rdsstereoold = false;
hasafold = false;
haseonold = false;
BWreset = true;
pinstringold = "";
hasrtplusold = false;
afmethodBold = false;
rds_clockold = "";
dropout = false;
rdsreset = true;
ShowMemoryPos();
xPos = 0;
xPos2 = 0;
xPos3 = 0;
xPos4 = 0;
xPos5 = 0;
}
void BuildDisplay() {
afscreen = false;
advancedRDS = false;
tft.fillScreen(BackgroundColor);
tft.drawRect(0, 0, 320, 240, FrameColor);
tft.drawLine(0, 30, 320, 30, FrameColor);
tft.drawLine(0, 100, 320, 100, FrameColor);
tft.drawLine(120, 30, 120, 0, FrameColor);
tft.drawLine(210, 100, 210, 217, FrameColor);
tft.drawLine(248, 30, 248, 0, FrameColor);
tft.drawLine(0, 160, 210, 160, FrameColor);
tft.drawLine(0, 180, 320, 180, FrameColor);
tft.drawLine(0, 217, 320, 217, FrameColor);
tft.drawLine(53, 30, 53, 0, FrameColor);
tft.drawLine(89, 30, 89, 0, FrameColor);
tft.drawLine(158, 30, 158, 0, FrameColor);
tft.drawLine(20, 114, 204, 114, Darkgrey);
if (!showmodulation) tft.drawLine(20, 143, 204, 143, GreyoutColor); else tft.drawLine(20, 143, 204, 143, Darkgrey);
for (byte segments = 0; segments < 94; segments++) {
if (segments > 54) {
if (((segments - 53) % 10) == 0) {
tft.fillRect(16 + (2 * segments), 112, 2, 2, BarSignificantColor);
if (!showmodulation) tft.fillRect(16 + (2 * segments), 141, 2, 2, GreyoutColor); else tft.fillRect(16 + (2 * segments), 141, 2, 2, BarSignificantColor);
}
} else {
if (((segments + 1) % 6) == 0) {
tft.fillRect(16 + (2 * segments), 112, 2, 2, BarInsignificantColor);
if (!showmodulation) tft.fillRect(16 + (2 * segments), 141, 2, 2, GreyoutColor); else tft.fillRect(16 + (2 * segments), 141, 2, 2, BarInsignificantColor);
}
}
}
if (usesquelch || autosquelch) tftPrint(-1, "SQ:", 212, 145, ActiveColor, ActiveColorSmooth, 16);
tftPrint(1, "C/N", 270, 163, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "dB", 300, 163, ActiveColor, ActiveColorSmooth, 16);
tftPrint(0, "S", 7, 101, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "1", 24, 115, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "3", 48, 115, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "5", 72, 115, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "7", 96, 115, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "9", 120, 115, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "+10", 134, 115, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "+30", 174, 115, ActiveColor, ActiveColorSmooth, 16);
if (!showmodulation) {
tftPrint(0, "M", 7, 128, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "10", 27, 144, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "30", 57, 144, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "50", 87, 144, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "70", 117, 144, GreyoutColor, BackgroundColor, 16);
tftPrint(-1, "100", 164, 144, GreyoutColor, BackgroundColor, 16);
} else {
tftPrint(0, "M", 7, 128, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "10", 27, 144, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "30", 57, 144, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "50", 87, 144, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, "70", 117, 144, ActiveColor, BackgroundColor, 16);
tftPrint(-1, "100", 164, 144, ActiveColor, ActiveColorSmooth, 16);
}
tftPrint(-1, "kHz", 203, 4, ActiveColor, ActiveColorSmooth, 28);
tftPrint(-1, unitString[unit], 282, 145, ActiveColor, ActiveColorSmooth, 16);
tft.drawBitmap(122, 5, RDSLogo, 35, 22, GreyoutColor);
tft.drawBitmap(92, 4, Speaker, 26, 22, GreyoutColor);
if (!StereoToggle) {
tft.drawCircle(71, 15, 10, SecondaryColor);
tft.drawCircle(71, 15, 9, SecondaryColor);
} else {
tft.drawCircle(66, 15, 10, GreyoutColor);
tft.drawCircle(66, 15, 9, GreyoutColor);
tft.drawCircle(76, 15, 10, GreyoutColor);
tft.drawCircle(76, 15, 9, GreyoutColor);
}
if (autosquelch) showAutoSquelch(1);
RDSstatusold = false;
Stereostatusold = false;
LowLevelInit = true;
updateBW();
ShowMemoryPos();
updateiMS();
updateEQ();
Squelchold = -2;
SStatusold = 2000;
SStatus = 100;
rssiold = 2000;
CNold = 254;
af_counterold = 254;
batteryold = 6;
batteryVold = 0;
vPerold = 0;
hasrtplusold = false;
TAold = false;
TPold = false;
haseonold = false;
MSold = 0;
rds_clockold = "";
strcpy(programTypePrevious, "");
PIold = " ";
PSold = " ";
stationIDold = " ";
stationStateold = " ";
BWreset = true;
dropout = false;
xPos = 0;
xPos2 = 0;
xPos3 = 0;
xPos4 = 0;
xPos5 = 0;
}
void MenuUp() {
if (!menuopen) {
ShowOneLine(menuoption, menuitem, false);
if (hardwaremodel == BASE_ILI9341) {
menuoption += ITEM_GAP;
menuitem++;
if (menuitem > items[menupage] - 1) {
menuitem = 0;
menuoption = ITEM1;
}
} else {
menuoption -= ITEM_GAP;
menuitem--;
if (menuitem > 10) {
menuoption = ITEM10;
menuitem = 9;
while (menuitem > items[menupage] - 1) {
menuoption -= ITEM_GAP;
menuitem --;
}
}
}
ShowOneLine(menuoption, menuitem, true);
} else {
switch (CurrentTheme) {
case 7: OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground_wo); break;
default: 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:
hardwaremodel++;
if (hardwaremodel > RADIO_HARDWARE_CNT - 1) hardwaremodel = 0;
switch (hardwaremodel) {
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;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM2:
if (touchrotating) touchrotating = 0; else touchrotating = 1;
OneBigLineSprite.drawString((touchrotating ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
switch (tot) {
case 0: tot = 15; break;
case 15: tot = 30; break;
case 30: tot = 60; break;
case 60: tot = 90; break;
default: tot = 0; break;
}
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 (autosquelch && !usesquelch) {
usesquelch = true;
autosquelch = false;
} else if (usesquelch && !autosquelch) {
usesquelch = false;
autosquelch = false;
} else {
usesquelch = false;
autosquelch = true;
}
if (autosquelch) OneBigLineSprite.drawString(myLanguage[language][86], 135, 0); else OneBigLineSprite.drawString((usesquelch ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
fmagc++;
if (fmagc > 92) fmagc = 84;
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:
amagc++;
if (amagc > 102) amagc = 94;
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:
bandFM++;
if (bandFM > FM_BAND_CNT - 1) bandFM = FM_BAND_ALL;
switch (bandFM) {
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 ITEM8:
bandAM++;
if (bandAM > AM_BAND_CNT - 1) bandAM = AM_BAND_ALL;
#ifdef HAS_AIR_BAND
switch (bandAM) {
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_MW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 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_LW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 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_AIR: OneBigLineSprite.drawString(myLanguage[language][223], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
}
#else
switch (bandAM) {
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;
}
#endif
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
longbandpress++;
if (longbandpress > 2) longbandpress = 0;
switch (longbandpress) {
case STANDBY: OneBigLineSprite.drawString(myLanguage[language][225], 135, 0); break;
case SCREENOFF: OneBigLineSprite.drawString(myLanguage[language][226], 135, 0); break;
default: OneBigLineSprite.drawString(myLanguage[language][227], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM10:
spispeed++;
if (spispeed > SPI_SPEED_COUNT - 1) spispeed = 0;
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
if (spispeed != 7) {
OneBigLineSprite.drawString("MHz", 175, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
} else {
OneBigLineSprite.setTextDatum(TC_DATUM);
}
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (spispeed == 7) {
OneBigLineSprite.drawString(myLanguage[language][86], 135, 0);
} else {
OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 160, 0);
}
OneBigLineSprite.pushSprite(24, 118);
if (spispeed == SPI_SPEED_DEFAULT) {
tft.setSPISpeed(SPI_FREQUENCY / 1000000);
} else if (spispeed == 7) {
setAutoSpeedSPI();
} else {
tft.setSPISpeed(spispeed * 10);
}
break;
}
break;
case AUDIOSETTINGS:
switch (menuoption) {
case ITEM1:
VolSet++;
if (VolSet > 10) VolSet = 10;
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:
edgebeep = !edgebeep;
OneBigLineSprite.drawString((edgebeep ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
audiomode = !audiomode;
OneBigLineSprite.drawString((audiomode ? "MPX" : "Stereo"), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
radio.setAudio(audiomode);
break;
case ITEM4:
StereoLevel ++;
if (StereoLevel > 60 || StereoLevel <= 30) {
if (StereoLevel == 1) StereoLevel = 30; else StereoLevel = 0;
}
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;
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:
HighCutOffset ++;
if (HighCutOffset > 60 || HighCutOffset <= 20) {
if (HighCutOffset == 1) HighCutOffset = 20; else HighCutOffset = 0;
}
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:
fmdeemphasis++;
if (fmdeemphasis > DEEMPHASIS_COUNT - 1) fmdeemphasis = DEEMPHASIS_NONE;
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;
}
break;
case DISPLAYSETTINGS:
switch (menuoption) {
case ITEM1:
language ++;
if (language == (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = 0;
UpdateFonts(0);
OneBigLineSprite.drawString(myLanguage[language][0], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM2:
ContrastSet ++;
if (ContrastSet > 100) ContrastSet = 1;
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, map(ContrastSet, 0, 100, 15, 255));
break;
case ITEM3:
showmodulation = !showmodulation;
OneBigLineSprite.drawString((showmodulation ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
screensaverset ++;
if (screensaverset > sizeof(screensaverOptions) / sizeof(screensaverOptions[0]) - 1) screensaverset = 0;
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:
poweroptions++;
if (poweroptions > RADIO_POWER_MODE_CNT - 1) poweroptions = 0;
switch (poweroptions) {
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;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
batteryoptions++;
if (batteryoptions > RADIO_BATTERY_CNT - 1) batteryoptions = 0;
switch (batteryoptions) {
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;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
unit ++;
if (unit > sizeof(unitString) / sizeof(unitString[0]) - 1) unit = 0;
OneBigLineSprite.drawString(unitString[unit], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
showclock = !showclock;
OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
CurrentTheme ++;
if (CurrentTheme > sizeof(Theme) / sizeof(Theme[0]) - 1) CurrentTheme = 0;
doTheme();
OneBigLineSprite.fillSprite(BackgroundColor);
tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor);
tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor);
Infoboxprint(myLanguage[language][77]);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString(Theme[CurrentTheme], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM10:
freqfont ++;
if (freqfont > sizeof(FreqFont) / sizeof(FreqFont[0]) - 1) freqfont = 0;
OneBigLineSprite.drawString(FreqFont[freqfont], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case RDSSETTINGS:
switch (menuoption) {
case ITEM1:
showrdserrors++;
if (showrdserrors > 3) showrdserrors = 0;
switch (showrdserrors) {
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) region = REGION_US; else region = REGION_EU;
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:
radio.underscore = !radio.underscore;
OneBigLineSprite.drawString((radio.underscore ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
radio.rds.filter = !radio.rds.filter;
OneBigLineSprite.drawString((radio.rds.filter ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
radio.rds.pierrors = !radio.rds.pierrors;
OneBigLineSprite.drawString((radio.rds.pierrors ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
af++;
if (af > 2) af = 0;
switch (af) {
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:
radio.rds.rtbuffer = !radio.rds.rtbuffer;
OneBigLineSprite.drawString((radio.rds.rtbuffer ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
radio.rds.sortaf = !radio.rds.sortaf;
OneBigLineSprite.drawString((radio.rds.sortaf ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
radio.rds.fastps++;
if (radio.rds.fastps > 2) radio.rds.fastps = 0;
switch (radio.rds.fastps) {
case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case 1: OneBigLineSprite.drawString(myLanguage[language][260], 135, 0); break;
case 2: OneBigLineSprite.drawString(myLanguage[language][261], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM10:
showlongps = !showlongps;
OneBigLineSprite.drawString((showlongps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case FMSETTINGS:
switch (menuoption) {
case ITEM1:
ConverterSet++;
if (ConverterSet > 2400 || ConverterSet <= 200) {
if (ConverterSet == 1) ConverterSet = 200; else ConverterSet = 0;
}
if (ConverterSet >= 200) {
Wire.beginTransmission(0x12);
Wire.write(ConverterSet >> 8);
Wire.write(ConverterSet & (0xFF));
Wire.endTransmission();
}
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:
LowEdgeSet ++;
if (LowEdgeSet > 1070) (TEF == 205 ? LowEdgeSet = 640 : LowEdgeSet = 650);
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:
HighEdgeSet ++;
if (HighEdgeSet > 1080) HighEdgeSet = 660;
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:
LevelOffset++;
if (LevelOffset > 15) LevelOffset = -25;
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((LevelOffset > 0 ? "+" : "") + String(LevelOffset, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
radio.setOffset(LevelOffset);
change = true;
break;
case ITEM5:
LowLevelSet++;
if (LowLevelSet > 30) LowLevelSet = -15;
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:
softmutefm = !softmutefm;
OneBigLineSprite.drawString((softmutefm ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
radio.setSoftmuteFM(softmutefm);
break;
case ITEM7:
fmnb ++;
if (fmnb > 150 || fmnb <= 50) {
if (fmnb == 1) fmnb = 50; else fmnb = 0;
}
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:
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: 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:
if (fullsearchrds) {
fmsi = !fmsi;
OneBigLineSprite.drawString((fmsi ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
if (fmsi) radio.setFMSI(2); else radio.setFMSI(1);
}
break;
case ITEM10:
fmscansens++;
if (fmscansens > 30) fmscansens = 1;
OneBigLineSprite.drawString(String(fmscansens), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case AMSETTINGS:
switch (menuoption) {
case ITEM1:
softmuteam = !softmuteam;
OneBigLineSprite.drawString((softmuteam ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
radio.setSoftmuteAM(softmuteam);
break;
case ITEM2:
amnb ++;
if (amnb > 150 || amnb <= 50) {
if (amnb == 1) amnb = 50; else amnb = 0;
}
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:
AMLevelOffset++;
if (AMLevelOffset > 15) AMLevelOffset = -50;
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:
showSWMIBand = !showSWMIBand;
OneBigLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
amcodect++;
if (amcodect > 150 || amcodect <= 50) {
if (amcodect == 1) amcodect = 50; else amcodect = 0;
}
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 ITEM6:
amcodectcount++;
if (amcodectcount > 15) amcodectcount = 1;
OneBigLineSprite.drawString(String(amcodectcount, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
if (band > BAND_GAP) radio.setAMCoChannel(amcodect, amcodectcount);
break;
case ITEM7:
amgain += 6;
if (amgain > 36) amgain = 0;
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;
case ITEM8:
mwstepsize = !mwstepsize;
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
OneBigLineSprite.drawString("kHz", 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((mwstepsize ? "10" : "9"), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
amscansens++;
if (amscansens > 30) amscansens = 1;
OneBigLineSprite.drawString(String(amscansens, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case CONNECTIVITY:
switch (menuoption) {
case ITEM1:
USBmode = !USBmode;
OneBigLineSprite.drawString((USBmode ? "RDS Spy" : "XDRGTK"), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM2:
wifi = !wifi;
OneBigLineSprite.drawString((wifi ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
subnetclient ++;
if (subnetclient > 254) subnetclient = 1;
OneBigLineSprite.drawString(String(WiFi.localIP()[0]) + "." + String(WiFi.localIP()[1]) + "." + String(WiFi.localIP()[2]) + "." + String(subnetclient, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
stationlistid ++;
if (stationlistid > 10) stationlistid = 1;
OneBigLineSprite.drawString(String(stationlistid, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
XDRGTKMuteScreen = !XDRGTKMuteScreen;
OneBigLineSprite.drawString((XDRGTKMuteScreen ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case DXMODE:
switch (menuoption) {
case ITEM2:
scanstart++;
if (scanstart >= scanstop) scanstart = 0;
OneBigLineSprite.drawString(String(scanstart + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
scanstop++;
if (scanstop > EE_PRESETS_CNT - 1) scanstop = scanstart + 1;
OneBigLineSprite.drawString(String(scanstop + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
scanhold++;
if (scanhold > 30) scanhold = 0;
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
OneBigLineSprite.drawString(myLanguage[language][92], 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((scanhold == 0 ? "0.5" : String(scanhold, DEC)), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
scanmem = !scanmem;
OneBigLineSprite.drawString((scanmem ? myLanguage[language][218] : myLanguage[language][217]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
scancancel++;
if (scancancel > 2) scancancel = 0;
switch (scancancel) {
case OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case CORRECTPI: OneBigLineSprite.drawString(myLanguage[language][220], 135, 0); break;
case SIGNAL: OneBigLineSprite.drawString(myLanguage[language][221], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
scanmute = !scanmute;
OneBigLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
fmscansens++;
if (fmscansens > 30) fmscansens = 1;
OneBigLineSprite.drawString(String(fmscansens), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
scanholdonsignal = !scanholdonsignal;
OneBigLineSprite.drawString((scanholdonsignal ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case AUTOMEM:
switch (menuoption) {
case ITEM2:
memstartfreq ++;
if (memstartfreq > 1070) (TEF == 205 ? memstartfreq = 640 : memstartfreq = 650);
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(memstartfreq / 10 + ConverterSet, DEC) + "." + String(memstartfreq % 10 + ConverterSet, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
memstopfreq ++;
if (memstopfreq > 1080) memstopfreq = 660;
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(memstopfreq / 10 + ConverterSet, DEC) + "." + String(memstopfreq % 10 + ConverterSet, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
memstartpos++;
if (memstartpos >= memstoppos) memstartpos = 0;
OneBigLineSprite.drawString(String(memstartpos + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
memstoppos++;
if (memstoppos > EE_PRESETS_CNT - 1) memstoppos = memstartpos + 1;
OneBigLineSprite.drawString(String(memstoppos + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
mempionly = !mempionly;
OneBigLineSprite.drawString((mempionly ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
memdoublepi++;
if (memdoublepi > 2) memdoublepi = 0;
switch (memdoublepi) {
case MEMPI_OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case MEMPI_RANGE: OneBigLineSprite.drawString(myLanguage[language][279], 135, 0); break;
default: OneBigLineSprite.drawString(myLanguage[language][280], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
fmscansens++;
if (fmscansens > 30) fmscansens = 1;
OneBigLineSprite.drawString(String(fmscansens), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
}
}
}
void MenuDown() {
if (!menuopen) {
ShowOneLine(menuoption, menuitem, false);
if (hardwaremodel == BASE_ILI9341) {
menuoption -= ITEM_GAP;
menuitem--;
if (menuitem > 10) {
menuoption = ITEM10;
menuitem = 9;
while (menuitem > items[menupage] - 1) {
menuoption -= ITEM_GAP;
menuitem --;
}
}
} else {
menuoption += ITEM_GAP;
menuitem++;
if (menuitem > items[menupage] - 1) {
menuitem = 0;
menuoption = ITEM1;
}
}
ShowOneLine(menuoption, menuitem, true);
} else {
switch (CurrentTheme) {
case 7: OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground_wo); break;
default: 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:
hardwaremodel--;
if (hardwaremodel > RADIO_HARDWARE_CNT - 1) hardwaremodel = RADIO_HARDWARE_CNT - 1;
switch (hardwaremodel) {
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;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM2:
touchrotating = !touchrotating;
OneBigLineSprite.drawString((touchrotating ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
switch (tot) {
case 15: tot = 0; break;
case 30: tot = 15; break;
case 60: tot = 30; break;
case 90: tot = 60; break;
default: tot = 90; break;
}
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 (autosquelch && !usesquelch) {
usesquelch = true;
autosquelch = false;
} else if (usesquelch && !autosquelch) {
usesquelch = false;
autosquelch = false;
} else {
usesquelch = false;
autosquelch = true;
}
if (autosquelch) OneBigLineSprite.drawString(myLanguage[language][86], 135, 0); else OneBigLineSprite.drawString((usesquelch ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
fmagc--;
if (fmagc < 84) fmagc = 92;
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:
amagc--;
if (amagc < 94) amagc = 102;
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:
bandFM--;
if (bandFM > FM_BAND_CNT) bandFM = FM_BAND_NONE;
switch (bandFM) {
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 ITEM8:
bandAM--;
if (bandAM > AM_BAND_CNT) bandAM = AM_BAND_NONE;
#ifdef HAS_AIR_BAND
switch (bandAM) {
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_MW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 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_LW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 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_AIR: OneBigLineSprite.drawString(myLanguage[language][223], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
}
#else
switch (bandAM) {
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;
}
#endif
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
longbandpress--;
if (longbandpress > 2) longbandpress = 2;
switch (longbandpress) {
case STANDBY: OneBigLineSprite.drawString(myLanguage[language][225], 135, 0); break;
case SCREENOFF: OneBigLineSprite.drawString(myLanguage[language][226], 135, 0); break;
default: OneBigLineSprite.drawString(myLanguage[language][227], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM10:
spispeed--;
if (spispeed > SPI_SPEED_COUNT - 1) spispeed = SPI_SPEED_COUNT - 1;
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
if (spispeed != 7) {
OneBigLineSprite.drawString("MHz", 175, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
} else {
OneBigLineSprite.setTextDatum(TC_DATUM);
}
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (spispeed == 7) {
OneBigLineSprite.drawString(myLanguage[language][86], 135, 0);
} else {
OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 160, 0);
}
OneBigLineSprite.pushSprite(24, 118);
if (spispeed == SPI_SPEED_DEFAULT) {
tft.setSPISpeed(SPI_FREQUENCY / 1000000);
} else if (spispeed == 7) {
setAutoSpeedSPI();
} else {
tft.setSPISpeed(spispeed * 10);
}
break;
}
break;
case AUDIOSETTINGS:
switch (menuoption) {
case ITEM1:
VolSet--;
if (VolSet < -10) VolSet = -10;
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:
edgebeep = !edgebeep;
OneBigLineSprite.drawString((edgebeep ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
audiomode = !audiomode;
OneBigLineSprite.drawString((audiomode ? "MPX" : "Stereo"), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
radio.setAudio(audiomode);
break;
case ITEM4:
StereoLevel --;
if (StereoLevel < 30 || StereoLevel > 60) {
if (StereoLevel > 60) StereoLevel = 60; else StereoLevel = 0;
}
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:
HighCutLevel --;
if (HighCutLevel < 15 || HighCutLevel > 70) HighCutLevel = 70;
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:
HighCutOffset --;
if (HighCutOffset < 20 || HighCutOffset > 60) {
if (HighCutOffset > 60) HighCutOffset = 60; else HighCutOffset = 0;
}
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:
fmdeemphasis--;
if (fmdeemphasis > DEEMPHASIS_COUNT - 1) fmdeemphasis = DEEMPHASIS_COUNT - 1;
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;
}
break;
case DISPLAYSETTINGS:
switch (menuoption) {
case ITEM1:
language --;
if (language > (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = (sizeof (myLanguage) / sizeof (myLanguage[0])) - 1;
UpdateFonts(0);
OneBigLineSprite.drawString(myLanguage[language][0], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM2:
ContrastSet --;
if (ContrastSet < 1) ContrastSet = 100;
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, map(ContrastSet, 0, 100, 15, 255));
break;
case ITEM3:
showmodulation = !showmodulation;
OneBigLineSprite.drawString((showmodulation ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
screensaverset --;
if (screensaverset > sizeof(screensaverOptions) / sizeof(screensaverOptions[0]) - 1) screensaverset = sizeof(screensaverOptions) / sizeof(screensaverOptions[0]) - 1;
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:
poweroptions--;
if (poweroptions > RADIO_POWER_MODE_CNT - 1) poweroptions = RADIO_POWER_MODE_CNT - 1;
switch (poweroptions) {
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;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
batteryoptions--;
if (batteryoptions > RADIO_BATTERY_CNT - 1) batteryoptions = RADIO_BATTERY_CNT - 1;
switch (batteryoptions) {
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;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
unit --;
if (unit > sizeof(unitString) / sizeof(unitString[0]) - 1) unit = sizeof(unitString) / sizeof(unitString[0]) - 1;
OneBigLineSprite.drawString(unitString[unit], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
showclock = !showclock;
OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 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();
OneBigLineSprite.fillSprite(BackgroundColor);
tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor);
tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor);
Infoboxprint(myLanguage[language][77]);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString(Theme[CurrentTheme], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM10:
freqfont --;
if (freqfont > sizeof(FreqFont) / sizeof(FreqFont[0]) - 1) freqfont = sizeof(FreqFont) / sizeof(FreqFont[0]) - 1;
OneBigLineSprite.drawString(FreqFont[freqfont], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case RDSSETTINGS:
switch (menuoption) {
case ITEM1:
showrdserrors--;
if (showrdserrors > 3) showrdserrors = 3;
switch (showrdserrors) {
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) region = REGION_US; else region = REGION_EU;
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:
radio.underscore = !radio.underscore;
OneBigLineSprite.drawString((radio.underscore ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
radio.rds.filter = !radio.rds.filter;
OneBigLineSprite.drawString((radio.rds.filter ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
radio.rds.pierrors = !radio.rds.pierrors;
OneBigLineSprite.drawString((radio.rds.pierrors ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
af--;
if (af > 2) af = 2;
switch (af) {
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:
radio.rds.rtbuffer = !radio.rds.rtbuffer;
OneBigLineSprite.drawString((radio.rds.rtbuffer ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
radio.rds.sortaf = !radio.rds.sortaf;
OneBigLineSprite.drawString((radio.rds.sortaf ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
radio.rds.fastps--;
if (radio.rds.fastps > 2) radio.rds.fastps = 2;
switch (radio.rds.fastps) {
case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case 1: OneBigLineSprite.drawString(myLanguage[language][260], 135, 0); break;
case 2: OneBigLineSprite.drawString(myLanguage[language][261], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM10:
showlongps = !showlongps;
OneBigLineSprite.drawString((showlongps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case FMSETTINGS:
switch (menuoption) {
case ITEM1:
ConverterSet--;
if (ConverterSet < 200 || ConverterSet > 2400) {
if (ConverterSet > 2400) ConverterSet = 2400; else ConverterSet = 0;
}
if (ConverterSet >= 200) {
Wire.beginTransmission(0x12);
Wire.write(ConverterSet >> 8);
Wire.write(ConverterSet & (0xFF));
Wire.endTransmission();
}
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:
LowEdgeSet -= 10;
if ((TEF == 205 ? LowEdgeSet < 640 : LowEdgeSet < 650)) LowEdgeSet = 1079;
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:
HighEdgeSet -= 10;
if (HighEdgeSet < 660) HighEdgeSet = 1080;
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:
LevelOffset--;
if (LevelOffset < -25) LevelOffset = 15;
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((LevelOffset > 0 ? "+" : "") + String(LevelOffset, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
radio.setOffset(LevelOffset);
change = true;
break;
case ITEM5:
LowLevelSet--;
if (LowLevelSet < -15) LowLevelSet = 30;
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:
softmutefm = !softmutefm;
OneBigLineSprite.drawString((softmutefm ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
radio.setSoftmuteFM(softmutefm);
break;
case ITEM7:
fmnb --;
if (fmnb > 150 || fmnb <= 50) {
if (fmnb > 150) fmnb = 150; else fmnb = 0;
}
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:
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: 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:
if (fullsearchrds) {
fmsi = !fmsi;
OneBigLineSprite.drawString((fmsi ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
if (fmsi) radio.setFMSI(2); else radio.setFMSI(1);
}
break;
case ITEM10:
fmscansens--;
if (fmscansens == 0) fmscansens = 30;
OneBigLineSprite.drawString(String(fmscansens), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case AMSETTINGS:
switch (menuoption) {
case ITEM1:
softmuteam = !softmuteam;
OneBigLineSprite.drawString((softmuteam ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
radio.setSoftmuteAM(softmuteam);
break;
case ITEM2:
amnb --;
if (amnb > 150 || amnb <= 50) {
if (amnb > 150) amnb = 150; else amnb = 0;
}
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:
AMLevelOffset--;
if (AMLevelOffset < -50) AMLevelOffset = 15;
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:
showSWMIBand = !showSWMIBand;
OneBigLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
amcodect--;
if (amcodect < 50 || amcodect > 150) {
if (amcodect > 150) amcodect = 150; else amcodect = 0;
}
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 ITEM6:
amcodectcount--;
if (amcodectcount < 1) amcodectcount = 15;
OneBigLineSprite.drawString(String(amcodectcount, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
if (band > BAND_GAP) radio.setAMCoChannel(amcodect, amcodectcount);
break;
case ITEM7:
amgain -= 6;
if (amgain > 36) amgain = 36;
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;
case ITEM8:
mwstepsize = !mwstepsize;
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
OneBigLineSprite.drawString("kHz", 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((mwstepsize ? "10" : "9"), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
amscansens--;
if (amscansens == 0) amscansens = 30;
OneBigLineSprite.drawString(String(amscansens, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case CONNECTIVITY:
switch (menuoption) {
case ITEM1:
USBmode = !USBmode;
OneBigLineSprite.drawString((USBmode ? "RDS Spy" : "XDRGTK"), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM2:
wifi = !wifi;
OneBigLineSprite.drawString((wifi ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
subnetclient --;
if (subnetclient < 1) subnetclient = 254;
OneBigLineSprite.drawString(String(WiFi.localIP()[0]) + "." + String(WiFi.localIP()[1]) + "." + String(WiFi.localIP()[2]) + "." + String(subnetclient, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
stationlistid --;
if (stationlistid == 0) stationlistid = 10;
OneBigLineSprite.drawString(String(stationlistid, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
XDRGTKMuteScreen = !XDRGTKMuteScreen;
OneBigLineSprite.drawString((XDRGTKMuteScreen ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case DXMODE:
switch (menuoption) {
case ITEM2:
scanstart--;
if (scanstart >= scanstop) scanstart = scanstop - 1;
OneBigLineSprite.drawString(String(scanstart + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
scanstop--;
if (scanstop <= scanstart) scanstop = EE_PRESETS_CNT - 1;
OneBigLineSprite.drawString(String(scanstop + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
scanhold--;
if (scanhold > 30) scanhold = 30;
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
OneBigLineSprite.drawString(myLanguage[language][92], 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((scanhold == 0 ? "0.5" : String(scanhold, DEC)), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
scanmem = !scanmem;
OneBigLineSprite.drawString((scanmem ? myLanguage[language][218] : myLanguage[language][217]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
scancancel--;
if (scancancel > 2) scancancel = 2;
switch (scancancel) {
case OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case CORRECTPI: OneBigLineSprite.drawString(myLanguage[language][220], 135, 0); break;
case SIGNAL: OneBigLineSprite.drawString(myLanguage[language][221], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
scanmute = !scanmute;
OneBigLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
fmscansens--;
if (fmscansens == 0) fmscansens = 30;
OneBigLineSprite.drawString(String(fmscansens), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
scanholdonsignal = !scanholdonsignal;
OneBigLineSprite.drawString((scanholdonsignal ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case AUTOMEM:
switch (menuoption) {
case ITEM2:
memstartfreq -= 10;
if ((TEF == 205 ? memstartfreq < 640 : memstartfreq < 650)) memstartfreq = 1079;
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(memstartfreq / 10 + ConverterSet, DEC) + "." + String(memstartfreq % 10 + ConverterSet, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
memstopfreq -= 10;
if (memstopfreq < 660) memstopfreq = 1080;
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(memstopfreq / 10 + ConverterSet, DEC) + "." + String(memstopfreq % 10 + ConverterSet, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
memstartpos--;
if (memstartpos >= memstoppos) memstartpos = scanstop - 1;
OneBigLineSprite.drawString(String(memstartpos + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
memstoppos--;
if (memstoppos <= memstartpos) memstoppos = EE_PRESETS_CNT - 1;
OneBigLineSprite.drawString(String(memstoppos + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
mempionly = !mempionly;
OneBigLineSprite.drawString((mempionly ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
memdoublepi--;
if (memdoublepi > 2) memdoublepi = 2;
switch (memdoublepi) {
case MEMPI_OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case MEMPI_RANGE: OneBigLineSprite.drawString(myLanguage[language][279], 135, 0); break;
default: OneBigLineSprite.drawString(myLanguage[language][280], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
fmscansens--;
if (fmscansens == 0) fmscansens = 30;
OneBigLineSprite.drawString(String(fmscansens), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
}
}
}
void DoMenu() {
if (!menuopen) {
if (menupage != INDEX) {
menuopen = true;
switch (CurrentTheme) {
case 7: tft.pushImage (13, 30, 292, 170, popupbackground_wo); break;
default: tft.pushImage (13, 30, 292, 170, popupbackground); break;
}
}
switch (CurrentTheme) {
case 7: OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground_wo); break;
default: OneBigLineSprite.pushImage(-11, -88, 292, 170, popupbackground); break;
}
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.setTextDatum(TC_DATUM);
switch (menupage) {
case INDEX:
switch (menuoption) {
case ITEM1:
menupage = MAINSETTINGS;
menuoption = ITEM1;
menuitem = 0;
submenu = true;
BuildMenu();
break;
case ITEM2:
menupage = AUDIOSETTINGS;
menuoption = ITEM1;
menuitem = 0;
submenu = true;
BuildMenu();
break;
case ITEM3:
menupage = DISPLAYSETTINGS;
menuoption = ITEM1;
menuitem = 0;
submenu = true;
BuildMenu();
break;
case ITEM4:
menupage = RDSSETTINGS;
menuoption = ITEM1;
menuitem = 0;
submenu = true;
BuildMenu();
break;
case ITEM5:
menupage = FMSETTINGS;
menuoption = ITEM1;
menuitem = 0;
submenu = true;
BuildMenu();
break;
case ITEM6:
menupage = AMSETTINGS;
menuoption = ITEM1;
menuitem = 0;
submenu = true;
BuildMenu();
break;
case ITEM7:
menupage = CONNECTIVITY;
menuoption = ITEM1;
menuitem = 0;
submenu = true;
BuildMenu();
break;
case ITEM8:
menupage = DXMODE;
menuoption = ITEM1;
menuitem = 0;
submenu = true;
BuildMenu();
break;
case ITEM9:
menupage = AUTOMEM;
menuoption = ITEM1;
menuitem = 0;
submenu = true;
BuildMenu();
break;
case ITEM10:
menuopen = true;
tft.drawRoundRect(10, 6, 300, 230, 5, ActiveColor);
tft.fillRoundRect(12, 8, 296, 226, 5, BackgroundColor);
tftPrint(0, myLanguage[language][71], 155, 13, ActiveColor, ActiveColorSmooth, 28);
tftPrint(0, myLanguage[language][72], 155, 55, ActiveColor, ActiveColorSmooth, 28);
tftPrint(0, "PE5PVB", 155, 38, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, "ohmytime", 145, 80, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, "HyperDX", 145, 95, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(-1, "MCelliotG", 155, 80, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(-1, "andimik", 155, 95, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, "DXHR05", 145, 110, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, "NoobishSVK", 145, 125, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(-1, "yo2ldk", 155, 110, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(-1, "Justin_Peng(Portable)", 155, 125, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, "Overland DX", 145, 140, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(-1, "elektronik232", 155, 140, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, "KOTYA8", 145, 155, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(-1, "mrwish7", 155, 155, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, "lxsxl", 145, 170, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(-1, "leryfm", 155, 170, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, "marsel90-1", 145, 185, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(-1, "lawendel", 155, 185, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, "KB8U", 145, 200, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(0, "github.com/PE5PVB/TEF6686_ESP32", 155, 215, ActiveColor, ActiveColorSmooth, 16);
break;
}
break;
case MAINSETTINGS:
switch (menuoption) {
case ITEM1:
Infoboxprint(myLanguage[language][108]);
switch (hardwaremodel) {
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;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM2:
Infoboxprint(myLanguage[language][68]);
OneBigLineSprite.drawString((touchrotating ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
Infoboxprint(myLanguage[language][75]);
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 (autosquelch) OneBigLineSprite.drawString(myLanguage[language][86], 135, 0); else OneBigLineSprite.drawString((usesquelch ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
Infoboxprint(myLanguage[language][37]);
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]);
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][100]);
switch (bandFM) {
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 ITEM8:
Infoboxprint(myLanguage[language][101]);
#ifdef HAS_AIR_BAND
switch (bandAM) {
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_MW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 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_LW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 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_AIR: OneBigLineSprite.drawString(myLanguage[language][223], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
}
#else
switch (bandAM) {
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;
}
#endif
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
Infoboxprint(myLanguage[language][224]);
switch (longbandpress) {
case STANDBY: OneBigLineSprite.drawString(myLanguage[language][225], 135, 0); break;
case SCREENOFF: OneBigLineSprite.drawString(myLanguage[language][226], 135, 0); break;
default: OneBigLineSprite.drawString(myLanguage[language][227], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM10:
Infoboxprint(myLanguage[language][81]);
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
if (spispeed != 7) {
OneBigLineSprite.drawString("MHz", 175, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
} else {
OneBigLineSprite.setTextDatum(TC_DATUM);
}
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (spispeed == 7) {
OneBigLineSprite.drawString(myLanguage[language][86], 135, 0);
} else {
OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 160, 0);
}
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case AUDIOSETTINGS:
switch (menuoption) {
case ITEM1:
Infoboxprint(myLanguage[language][10]);
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]);
OneBigLineSprite.drawString((edgebeep ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
Infoboxprint(myLanguage[language][67]);
OneBigLineSprite.drawString((audiomode ? "MPX" : "Stereo"), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
Infoboxprint(myLanguage[language][15]);
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]);
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]);
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]);
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;
case DISPLAYSETTINGS:
switch (menuoption) {
case ITEM1:
Infoboxprint(myLanguage[language][40]);
OneBigLineSprite.drawString(myLanguage[language][0], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM2:
Infoboxprint(myLanguage[language][19]);
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]);
OneBigLineSprite.drawString((showmodulation ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
Infoboxprint(myLanguage[language][91]);
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: 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;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
Infoboxprint(myLanguage[language][173]);
switch (batteryoptions) {
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;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
Infoboxprint(myLanguage[language][98]);
OneBigLineSprite.drawString(unitString[unit], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
Infoboxprint(myLanguage[language][262]);
OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
Infoboxprint(myLanguage[language][77]);
OneBigLineSprite.drawString(Theme[CurrentTheme], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM10:
Infoboxprint(myLanguage[language][85]);
OneBigLineSprite.drawString(FreqFont[freqfont], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case RDSSETTINGS:
switch (menuoption) {
case ITEM1:
Infoboxprint(myLanguage[language][38]);
switch (showrdserrors) {
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) 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]);
OneBigLineSprite.drawString((radio.underscore ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
Infoboxprint(myLanguage[language][60]);
OneBigLineSprite.drawString((radio.rds.filter ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
Infoboxprint(myLanguage[language][61]);
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: 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]);
OneBigLineSprite.drawString((radio.rds.rtbuffer ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
Infoboxprint(myLanguage[language][215]);
OneBigLineSprite.drawString((radio.rds.sortaf ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
Infoboxprint(myLanguage[language][203]);
switch (radio.rds.fastps) {
case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case 1: OneBigLineSprite.drawString(myLanguage[language][260], 135, 0); break;
case 2: OneBigLineSprite.drawString(myLanguage[language][261], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM10:
Infoboxprint(myLanguage[language][263]);
OneBigLineSprite.drawString((showlongps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case FMSETTINGS:
switch (menuoption) {
case ITEM1:
Infoboxprint(myLanguage[language][11]);
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]);
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]);
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:
Infoboxprint(myLanguage[language][14]);
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((LevelOffset > 0 ? "+" : "") + String(LevelOffset, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
tftPrint(-1, "dBμV", 190, 165, ActiveColor, ActiveColorSmooth, 28);
SStatusold = 2000;
change = true;
break;
case ITEM5:
Infoboxprint(myLanguage[language][18]);
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]);
OneBigLineSprite.drawString((softmutefm ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
Infoboxprint(myLanguage[language][65]);
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:
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: 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:
if (fullsearchrds) {
Infoboxprint(myLanguage[language][206]);
OneBigLineSprite.drawString((fmsi ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
} else {
Infoboxprint(myLanguage[language][207]);
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM10:
Infoboxprint(myLanguage[language][82]);
OneBigLineSprite.drawString(String(fmscansens), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case AMSETTINGS:
switch (menuoption) {
case ITEM1:
Infoboxprint(myLanguage[language][44]);
OneBigLineSprite.drawString((softmuteam ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM2:
Infoboxprint(myLanguage[language][64]);
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]);
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][59]);
OneBigLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
Infoboxprint(myLanguage[language][186]);
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 ITEM6:
Infoboxprint(myLanguage[language][188]);
OneBigLineSprite.drawString(String(amcodectcount, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
Infoboxprint(myLanguage[language][36]);
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 ITEM8:
Infoboxprint(myLanguage[language][169]);
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
OneBigLineSprite.drawString("kHz", 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((mwstepsize ? "10" : "9"), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
Infoboxprint(myLanguage[language][82]);
OneBigLineSprite.drawString(String(amscansens, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case CONNECTIVITY:
switch (menuoption) {
case ITEM1:
Infoboxprint(myLanguage[language][50]);
OneBigLineSprite.drawString((USBmode ? "RDS Spy" : "XDRGTK"), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM2:
Infoboxprint(myLanguage[language][51]);
OneBigLineSprite.drawString((wifi ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3: {
tftPrint(0, myLanguage[language][53], 155, 58, ActiveColor, ActiveColorSmooth, 28);
tftPrint(0, "ESP_" + String(ESP_getChipId()), 155, 98, PrimaryColor, PrimaryColorSmooth, 28);
tftPrint(0, myLanguage[language][54], 155, 138, ActiveColor, ActiveColorSmooth, 28);
tftPrint(0, "http://192.168.4.1", 155, 174, PrimaryColor, PrimaryColorSmooth, 16);
char key [9];
XDRGTK_key.toCharArray(key, 9);
char rabbitearsuser [9];
RabbitearsUser.toCharArray(rabbitearsuser, 9);
char rabbitearspw [9];
RabbitearsPassword.toCharArray(rabbitearspw, 9);
UpdateFonts(1);
WiFiConnectParam XDRGTK_key_text("Set XDRGTK Password: (max 8 characters)");
WiFiConnectParam XDRGTK_key_input("XDRGTK_key", "Password", key, 9);
WiFiConnectParam RabbitearsUser_text("Set rabbitears.info live bandscan user ID");
WiFiConnectParam RabbitearsUser_input("RabbitearsUser", "ID", rabbitearsuser, 9);
WiFiConnectParam RabbitearsPassword_text("Set rabbitears.info password");
WiFiConnectParam RabbitearsPassword_input("RabbitearsPassword", "Password", rabbitearspw, 9);
if (!setWiFiConnectParam) {
wc.addParameter(&XDRGTK_key_text);
wc.addParameter(&XDRGTK_key_input);
wc.addParameter(&RabbitearsUser_text);
wc.addParameter(&RabbitearsUser_input);
wc.addParameter(&RabbitearsPassword_text);
wc.addParameter(&RabbitearsPassword_input);
setWiFiConnectParam = true;
}
wc.startConfigurationPortal(AP_WAIT);
XDRGTK_key = XDRGTK_key_input.getValue();
RabbitearsUser = RabbitearsUser_input.getValue();
RabbitearsPassword = RabbitearsPassword_input.getValue();
EEPROM.writeString(EE_STRING_XDRGTK_KEY, XDRGTK_key);
EEPROM.writeString(EE_STRING_RABBITEARSUSER, RabbitearsUser);
EEPROM.writeString(EE_STRING_RABBITEARSPASSWORD, RabbitearsPassword);
EEPROM.commit();
UpdateFonts(0);
wifi = true;
tryWiFi();
delay(2000);
menuopen = false;
BuildMenu();
} break;
case ITEM4:
if (wifi) {
Infoboxprint(myLanguage[language][58]);
OneBigLineSprite.drawString(String(WiFi.localIP()[0]) + "." + String(WiFi.localIP()[1]) + "." + String(WiFi.localIP()[2]) + "." + String(subnetclient, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
} else {
menuopen = false;
BuildMenu();
}
break;
case ITEM5:
Infoboxprint(myLanguage[language][271]);
OneBigLineSprite.drawString(String(stationlistid, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
Infoboxprint(myLanguage[language][205]);
OneBigLineSprite.drawString((XDRGTKMuteScreen ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case DXMODE:
switch (menuoption) {
case ITEM1:
if (presets[scanstart].band == BAND_FM && presets[scanstart].frequency == EE_PRESETS_FREQUENCY) {
Infoboxprint(myLanguage[language][214]);
OneBigLineSprite.pushSprite(24, 118);
} else {
startFMDXScan();
}
break;
case ITEM2:
Infoboxprint(myLanguage[language][209]);
OneBigLineSprite.drawString(String(scanstart + 1), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
Infoboxprint(myLanguage[language][210]);
OneBigLineSprite.drawString(String(scanstop + 1), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
Infoboxprint(myLanguage[language][211]);
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
OneBigLineSprite.drawString(myLanguage[language][92], 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((scanhold == 0 ? "0.5" : String(scanhold, DEC)), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
Infoboxprint(myLanguage[language][216]);
OneBigLineSprite.drawString((scanmem ? myLanguage[language][218] : myLanguage[language][217]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
Infoboxprint(myLanguage[language][219]);
switch (scancancel) {
case OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case CORRECTPI: OneBigLineSprite.drawString(myLanguage[language][220], 135, 0); break;
case SIGNAL: OneBigLineSprite.drawString(myLanguage[language][221], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
Infoboxprint(myLanguage[language][222]);
OneBigLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
Infoboxprint(myLanguage[language][82]);
OneBigLineSprite.drawString(String(fmscansens), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
Infoboxprint(myLanguage[language][281]);
OneBigLineSprite.drawString((scanholdonsignal ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
case AUTOMEM:
switch (menuoption) {
case ITEM1:
Infoboxprint(myLanguage[language][270]);
switch (doAutoMemory(memstartfreq, memstopfreq, memstartpos, memstoppos, mempionly, memdoublepi)) {
case 0:
tftPrint(0, myLanguage[language][275], 160, 175, ActiveColor, ActiveColorSmooth, 16);
break;
case 1:
tftPrint(0, myLanguage[language][273], 160, 175, ActiveColor, ActiveColorSmooth, 16);
break;
case 2:
tftPrint(0, myLanguage[language][274], 160, 175, ActiveColor, ActiveColorSmooth, 16);
break;
}
break;
case ITEM2:
Infoboxprint(myLanguage[language][264]);
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(memstartfreq / 10 + ConverterSet, DEC) + "." + String(memstartfreq % 10 + ConverterSet, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
Infoboxprint(myLanguage[language][265]);
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(memstopfreq / 10 + ConverterSet, DEC) + "." + String(memstopfreq % 10 + ConverterSet, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
Infoboxprint(myLanguage[language][266]);
OneBigLineSprite.drawString(String(memstartpos + 1), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
Infoboxprint(myLanguage[language][267]);
OneBigLineSprite.drawString(String(memstoppos + 1), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
Infoboxprint(myLanguage[language][268]);
OneBigLineSprite.drawString((mempionly ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
Infoboxprint(myLanguage[language][278]);
switch (memdoublepi) {
case MEMPI_OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case MEMPI_RANGE: OneBigLineSprite.drawString(myLanguage[language][279], 135, 0); break;
default: OneBigLineSprite.drawString(myLanguage[language][280], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM8:
Infoboxprint(myLanguage[language][82]);
OneBigLineSprite.drawString(String(fmscansens), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM9:
Infoboxprint(myLanguage[language][276]);
ClearMemoryRange(memstartpos, memstoppos);
OneBigLineSprite.drawString(myLanguage[language][216], 135, 0);
OneBigLineSprite.pushSprite(24, 118);
switch (CurrentTheme) {
case 7: OneBigLineSprite.pushImage(-11, -118, 292, 170, popupbackground_wo); break;
default: OneBigLineSprite.pushImage(-11, -118, 292, 170, popupbackground); break;
}
OneBigLineSprite.drawString(String(memstartpos + 1) + " - " + String(memstoppos + 1) + " " + String(myLanguage[language][277]), 135, 0);
OneBigLineSprite.pushSprite(24, 148);
break;
}
break;
}
} else {
if (menupage == CONNECTIVITY && menuoption == ITEM2) {
tryWiFi();
delay(2000);
}
if (menupage == DISPLAYSETTINGS && menuoption == ITEM5) {
doTheme();
}
menuopen = false;
if (scanstart >= scanstop) scanstart = scanstop - 1;
if (scanstop <= scanstart) scanstop = scanstart + 1;
BuildMenu();
}
}
void Infoboxprint(const char* input) {
int length = strlen(input);
int newlineIndex = -1;
for (int i = 0; i < length; i++) {
if (input[i] == '\n') {
newlineIndex = i;
break;
}
}
if (newlineIndex != -1) {
char* line1 = (char*)malloc((newlineIndex + 1) * sizeof(char));
strncpy(line1, input, newlineIndex);
line1[newlineIndex] = '\0';
char* line2 = (char*)malloc((length - newlineIndex) * sizeof(char));
strcpy(line2, input + newlineIndex + 1);
tftPrint(0, line1, 155, 48, ActiveColor, ActiveColorSmooth, 28);
tftPrint(0, line2, 155, 78, ActiveColor, ActiveColorSmooth, 28);
free(line1);
free(line2);
} 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;
}