Added bandwidth selector
This commit is contained in:
@@ -343,6 +343,8 @@ static const char* const unitString[] = {"dBμV", "dBf", "dBm"};
|
||||
static const char* const FreqFont[] = {"Classic", "Roubenstil", "Motoya", "Aura2", "Comic", "Modern"};
|
||||
static const char* const Theme[] = {"Essence", "Cyan", "Crimson", "Monochrome", "Volcano", "Dendro", "Sakura", "Whiteout", "Tangerine", "Ocean", "Indigo", "Queer", "GoldBrite", "Bubblegum"};
|
||||
static const char* const Skin[] = {"Essential"};
|
||||
static const char* BWButtonLabelsFM[] = {"56 kHz", "64 kHz", "72 kHz", "84 kHz", "97 kHz", "114 kHz", "133 kHz", "151 kHz", "168 kHz", "184 kHz", "200 kHz", "217 kHz", "236 kHz", "254 kHz", "287 kHz", "311 kHz", "Auto"};
|
||||
static const char* BWButtonLabelsAM[] = {"3 kHz", "4 kHz", "6 kHz", "8 kHz"};
|
||||
|
||||
// Memory channel database
|
||||
typedef struct {
|
||||
|
||||
+49
@@ -1564,8 +1564,30 @@ void ShowOneLine(byte position, byte item, bool selected) {
|
||||
FullLineSprite.pushSprite(8, 2 + position);
|
||||
}
|
||||
|
||||
void BuildBWSelector() {
|
||||
switch (CurrentTheme) {
|
||||
case 7: tft.pushImage (0, 0, 320, 240, configurationbackground_wo); break;
|
||||
default: tft.pushImage (0, 0, 320, 240, configurationbackground); break;
|
||||
}
|
||||
tftPrint(0, myLanguage[language][285], 160, 6, PrimaryColor, PrimaryColorSmooth, 16);
|
||||
|
||||
if (band < BAND_GAP) {
|
||||
for (int x = 0; x < 16; x++) {
|
||||
drawButton(BWButtonLabelsFM[x], x, (BWset == x + 1 ? true : false));
|
||||
}
|
||||
drawButton(BWButtonLabelsFM[16], 16, (BWset == 0 ? true : false));
|
||||
drawButton("OK", 19, false);
|
||||
} else {
|
||||
for (int x = 0; x < 4; x++) {
|
||||
drawButton(BWButtonLabelsAM[x], x, (BWset == x + 1 ? true : false));
|
||||
}
|
||||
drawButton("OK", 19, false);
|
||||
}
|
||||
}
|
||||
|
||||
void BuildMenu() {
|
||||
advancedRDS = false;
|
||||
BWtune = false;
|
||||
|
||||
switch (CurrentTheme) {
|
||||
case 7: tft.pushImage (0, 0, 320, 240, configurationbackground_wo); break;
|
||||
@@ -1730,6 +1752,7 @@ void BuildAdvancedRDS() {
|
||||
void BuildDisplay() {
|
||||
afscreen = false;
|
||||
advancedRDS = false;
|
||||
BWtune = false;
|
||||
|
||||
tft.fillScreen(BackgroundColor);
|
||||
tft.drawRect(0, 0, 320, 240, FrameColor);
|
||||
@@ -4807,4 +4830,30 @@ String removeNewline(String inputString) {
|
||||
}
|
||||
}
|
||||
return outputString;
|
||||
}
|
||||
|
||||
void drawButton(const char* text, byte button_number, bool active) {
|
||||
const int buttonWidth = 70;
|
||||
const int buttonHeight = 30;
|
||||
const int cornerRadius = 6;
|
||||
const int spacingX = 10;
|
||||
const int spacingY = 10;
|
||||
const int numColumns = 4;
|
||||
const int numRows = 5;
|
||||
|
||||
const int startX = 6;
|
||||
const int startY = 35;
|
||||
|
||||
if (button_number >= numColumns * numRows) return;
|
||||
|
||||
int row = button_number / numColumns;
|
||||
int col = button_number % numColumns;
|
||||
|
||||
int x = startX + col * (buttonWidth + spacingX);
|
||||
int y = startY + row * (buttonHeight + spacingY);
|
||||
|
||||
tft.fillRoundRect(x, y, buttonWidth, buttonHeight, cornerRadius, (active ? InsignificantColor : FrameColor));
|
||||
tft.drawRoundRect(x, y, buttonWidth, buttonHeight, cornerRadius, ActiveColor);
|
||||
|
||||
tftPrint(0, text, x + buttonWidth / 2, y + buttonHeight / 4, (active ? FrameColor : PrimaryColor), (active ? InsignificantColor : PrimaryColorSmooth), 16);
|
||||
}
|
||||
@@ -35,6 +35,7 @@ extern bool afscreen;
|
||||
extern bool artheadold;
|
||||
extern bool autosquelch;
|
||||
extern bool BWreset;
|
||||
extern bool BWtune;
|
||||
extern bool change;
|
||||
extern bool compressedold;
|
||||
extern bool dropout;
|
||||
@@ -84,6 +85,7 @@ extern byte bandFM;
|
||||
extern byte bandforbidden;
|
||||
extern byte batteryold;
|
||||
extern byte batteryoptions;
|
||||
extern byte BWset;
|
||||
extern byte ContrastSet;
|
||||
extern byte CurrentSkin;
|
||||
extern byte CurrentTheme;
|
||||
@@ -220,11 +222,13 @@ void BuildAFScreen();
|
||||
void BuildMenu();
|
||||
void BuildAdvancedRDS();
|
||||
void BuildDisplay();
|
||||
void BuildBWSelector();
|
||||
void MenuUp();
|
||||
void MenuDown();
|
||||
void DoMenu();
|
||||
void doTheme();
|
||||
void Infoboxprint(const char* input);
|
||||
void drawButton(const char* text, byte button_number, bool active);
|
||||
String removeNewline(String inputString);
|
||||
|
||||
extern void ShowFreq(int mode);
|
||||
|
||||
+38
-22
@@ -5,7 +5,7 @@
|
||||
|
||||
// [number of languages][number of texts]
|
||||
|
||||
static const char* const myLanguage[18][285] PROGMEM = {
|
||||
static const char* const myLanguage[18][286] PROGMEM = {
|
||||
{ "English", // English
|
||||
"Rotary direction changed", // 1
|
||||
"Please release button", // 2
|
||||
@@ -290,7 +290,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wait time on\nsignal only", // 281
|
||||
"Press highlighted corner", // 282
|
||||
"To calibrate touchscreen", // 283
|
||||
"Screen inversion toggles" // 284
|
||||
"Screen inversion toggles", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Nederlands", // Dutch
|
||||
@@ -577,7 +578,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wachttijd alleen\nbij signaal", // 281
|
||||
"Druk op aangegeven hoeken", // 282
|
||||
"om scherm te calibreren", // 283
|
||||
"Scherm inversie gewijzigd" // 284
|
||||
"Scherm inversie gewijzigd", // 284
|
||||
"Selecteer bandbreedte" // 285
|
||||
},
|
||||
|
||||
{ "Polski", // Polish
|
||||
@@ -864,7 +866,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Czekaj tylko gdy\nwykryto stację", // 281
|
||||
"Naciśnij zaznaczony róg", // 282
|
||||
"Aby skalibrować ekran", // 283
|
||||
"Inwersja kolorów wyświetlacza" // 284
|
||||
"Inwersja kolorów wyświetlacza", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Hrvatski", // Croatian
|
||||
@@ -1151,7 +1154,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wait time on\nsignal only", // 281
|
||||
"Press highlighted corner", // 282
|
||||
"To calibrate touchscreen", // 283
|
||||
"Screen inversion toggles" // 284
|
||||
"Screen inversion toggles", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Ελληνικά", // Greek
|
||||
@@ -1438,7 +1442,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Αναμονή μόνο σε\nυπάρξη σήματος", // 281
|
||||
"Πιέστε την\nεπισημασμένη γωνία", // 282
|
||||
"Για βαθμονόμηση\nτης οθόνης αφής", // 283
|
||||
"Εναλλαγή αναστροφής οθόνης" // 284
|
||||
"Εναλλαγή αναστροφής οθόνης", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Română", // Romanian
|
||||
@@ -1725,7 +1730,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wait time on\nsignal only", // 281
|
||||
"Press highlighted corner", // 282
|
||||
"To calibrate touchscreen", // 283
|
||||
"Screen inversion toggles" // 284
|
||||
"Screen inversion toggles", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Deutsch", // German
|
||||
@@ -2012,7 +2018,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wartezeit nur wenn\nSignal vorhanden", // 281
|
||||
"Markierte Ecke drücken", // 282
|
||||
"zum Kalibrieren des Touchscrees", // 283
|
||||
"Bildschirmumkehrung umschalten" // 284
|
||||
"Bildschirmumkehrung umschalten", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Český", // Czech
|
||||
@@ -2299,7 +2306,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wait time on\nsignal only", // 281
|
||||
"Press highlighted corner", // 282
|
||||
"To calibrate touchscreen", // 283
|
||||
"Screen inversion toggles" // 284
|
||||
"Screen inversion toggles", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Magyar", // Hungarian
|
||||
@@ -2586,7 +2594,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wait time on\nsignal only", // 281
|
||||
"Press highlighted corner", // 282
|
||||
"To calibrate touchscreen", // 283
|
||||
"Screen inversion toggles" // 284
|
||||
"Screen inversion toggles", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Français", // French
|
||||
@@ -2873,8 +2882,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Attendre que lorsque\nle signal existe", // 281
|
||||
"Appuyez sur l'angle\nmis en évidence", // 282
|
||||
"Pour calibrer l'écran tactile", // 283
|
||||
"Inversion d'affichage bascules" // 284
|
||||
|
||||
"Inversion d'affichage bascules", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Български", // Bulgarian
|
||||
@@ -3161,7 +3170,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wait time on\nsignal only", // 281
|
||||
"Press highlighted corner", // 282
|
||||
"To calibrate touchscreen", // 283
|
||||
"Screen inversion toggles" // 284
|
||||
"Screen inversion toggles", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Русский", // Russian
|
||||
@@ -3448,7 +3458,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Время ожидания \nпри сигнале", // 281
|
||||
"Нажмите на подсвеченный угол", // 282
|
||||
"Калибровка тачскрина", // 283
|
||||
"Переключение инверсии экрана" // 284
|
||||
"Переключение инверсии экрана", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Українська", // Ukranian
|
||||
@@ -3735,7 +3746,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wait time on\nsignal only", // 281
|
||||
"Press highlighted corner", // 282
|
||||
"To calibrate touchscreen", // 283
|
||||
"Screen inversion toggles" // 284
|
||||
"Screen inversion toggles", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Italiano", // Italian
|
||||
@@ -4022,7 +4034,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Tempo di attesa\nsolo con segnale", // 281
|
||||
"Premi l'angolo evidenziato", // 282
|
||||
"Per calibrare lo schermo touch", // 283
|
||||
"Inversione colore schermo" // 284
|
||||
"Inversione colore schermo", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Simplified Chinese", // Simplified Chinese
|
||||
@@ -4309,7 +4322,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wait time on\nsignal only", // 281
|
||||
"Press highlighted corner", // 282
|
||||
"To calibrate touchscreen", // 283
|
||||
"Screen inversion toggles" // 284
|
||||
"Screen inversion toggles", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Norsk", // Norwegian
|
||||
@@ -4596,7 +4610,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Wait time on\nsignal only", // 281
|
||||
"Press highlighted corner", // 282
|
||||
"To calibrate touchscreen", // 283
|
||||
"Screen inversion toggles" // 284
|
||||
"Screen inversion toggles", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Español", // Spanish
|
||||
@@ -4883,8 +4898,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Tiempo de espera\ncuando la señal", // 281
|
||||
"Presione en el\nángulo resaltado", // 282
|
||||
"Para calibrar\nla pantalla táctil", // 283
|
||||
"Cambio de reverso\nde la pantalla" // 284
|
||||
|
||||
"Cambio de reverso\nde la pantalla", // 284
|
||||
"Select Bandwidth" // 285
|
||||
},
|
||||
|
||||
{ "Português", // Portuguese
|
||||
@@ -5171,7 +5186,8 @@ static const char* const myLanguage[18][285] PROGMEM = {
|
||||
"Espera tempo apenas\nquando sinal", // 281
|
||||
"Pressione o\ncanto inscrito", // 282
|
||||
"Para calibração\nda tela de toque", // 283
|
||||
"Alternar a inversão da tela" // 284
|
||||
"Alternar a inversão da tela", // 284
|
||||
"Select Bandwidth" // 285
|
||||
}
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
+61
-4
@@ -9,15 +9,72 @@ void doTouchEvent(uint16_t x, uint16_t y) {
|
||||
if (scandxmode) {
|
||||
cancelDXScan();
|
||||
} else {
|
||||
if (!menu) { // All pages except menu
|
||||
if (!menu && !BWtune) { // All pages except menu
|
||||
if (x > 50 && x < 90 && y > 0 && y < 30 && band < BAND_GAP) { // ---------------------
|
||||
doStereoToggle(); // Stereo toggle
|
||||
return;
|
||||
} else if (x > 155 && x < 250 && y > 0 && y < 30) {
|
||||
//
|
||||
BuildBWSelector(); // Set bandwidth
|
||||
BWtune = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!menu && !advancedRDS && !seek && !afscreen) { // Normal radio mode
|
||||
if (BWtune) { // BW menu
|
||||
byte BWtemp = 255;
|
||||
if (y > 35 && y < 65) {
|
||||
if (x > 7 && x < 77) BWtemp = 1;
|
||||
if (x > 87 && x < 157) BWtemp = 2;
|
||||
if (x > 167 && x < 237) BWtemp = 3;
|
||||
if (x > 247 && x < 317) BWtemp = 4;
|
||||
}
|
||||
if (band < BAND_GAP) {
|
||||
if (y > 75 && y < 105) {
|
||||
if (x > 7 && x < 77) BWtemp = 5;
|
||||
if (x > 87 && x < 157) BWtemp = 6;
|
||||
if (x > 167 && x < 237) BWtemp = 7;
|
||||
if (x > 247 && x < 317) BWtemp = 8;
|
||||
}
|
||||
|
||||
if (y > 115 && y < 145) {
|
||||
if (x > 7 && x < 77) BWtemp = 9;
|
||||
if (x > 87 && x < 157) BWtemp = 10;
|
||||
if (x > 167 && x < 237) BWtemp = 11;
|
||||
if (x > 247 && x < 317) BWtemp = 12;
|
||||
}
|
||||
|
||||
if (y > 155 && y < 185) {
|
||||
if (x > 7 && x < 77) BWtemp = 13;
|
||||
if (x > 87 && x < 157) BWtemp = 14;
|
||||
if (x > 167 && x < 237) BWtemp = 15;
|
||||
if (x > 247 && x < 317) BWtemp = 16;
|
||||
}
|
||||
|
||||
if (y > 195 && y < 225) {
|
||||
if (x > 7 && x < 77) BWtemp = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (y > 195 && y < 225 && x > 247 && x < 317) {
|
||||
leave = true;
|
||||
BuildDisplay();
|
||||
SelectBand();
|
||||
} else {
|
||||
if (band < BAND_GAP) {
|
||||
if (BWset == 0) drawButton(BWButtonLabelsFM[16], 16, false); else drawButton(BWButtonLabelsFM[BWset - 1], BWset - 1, false);
|
||||
BWset = BWtemp;
|
||||
if (BWset == 0) drawButton(BWButtonLabelsFM[16], 16, true); else drawButton(BWButtonLabelsFM[BWset - 1], BWset - 1, true);
|
||||
} else {
|
||||
drawButton(BWButtonLabelsAM[BWset - 1], BWset - 1, false);
|
||||
BWset = BWtemp;
|
||||
drawButton(BWButtonLabelsAM[BWset - 1], BWset - 1, true);
|
||||
}
|
||||
doBW();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!BWtune && !menu && !advancedRDS && !seek && !afscreen) { // Normal radio mode
|
||||
if (x > 0 && x < 320 && y > 180 && y < 240 && band < BAND_GAP) { // -----------------
|
||||
leave = true;
|
||||
BuildAdvancedRDS(); // Switch to Advanced RDS View
|
||||
@@ -31,7 +88,7 @@ void doTouchEvent(uint16_t x, uint16_t y) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!menu && advancedRDS && !seek && !afscreen) { // Advanced RDS mode
|
||||
if (!BWtune && !menu && advancedRDS && !seek && !afscreen) { // Advanced RDS mode
|
||||
if (x > 0 && x < 320 && y > 180 && y < 240) { // -----------------
|
||||
leave = true;
|
||||
BuildDisplay();
|
||||
|
||||
@@ -10,20 +10,25 @@ extern TEF6686 radio;
|
||||
|
||||
extern bool advancedRDS;
|
||||
extern bool afscreen;
|
||||
extern bool BWtune;
|
||||
extern bool leave;
|
||||
extern bool menu;
|
||||
extern bool scandxmode;
|
||||
extern bool seek;
|
||||
extern byte band;
|
||||
extern byte BWset;
|
||||
|
||||
void doTouchEvent(uint16_t x, uint16_t y);
|
||||
|
||||
extern void ScreensaverTimerReopen();
|
||||
extern void BuildDisplay();
|
||||
extern void BuildBWSelector();
|
||||
extern void SelectBand();
|
||||
extern void BuildAdvancedRDS();
|
||||
extern void doBandToggle();
|
||||
extern void doTuneMode();
|
||||
extern void doStereoToggle();
|
||||
extern void cancelDXScan();
|
||||
extern void doBW();
|
||||
extern void drawButton(const char* text, byte button_number, bool active);
|
||||
#endif
|
||||
Reference in New Issue
Block a user