Update BW selector. Need to finish AM
This commit is contained in:
+53
-31
@@ -154,6 +154,7 @@ byte battery;
|
||||
byte batteryold;
|
||||
byte batteryoptions;
|
||||
byte BWset;
|
||||
byte BWsettemp;
|
||||
byte BWsetAM;
|
||||
byte BWsetFM;
|
||||
byte BWsetRecall;
|
||||
@@ -2429,6 +2430,10 @@ void BWButtonPress() {
|
||||
while (digitalRead(BWBUTTON) == LOW && counter - counterold <= 1000) counter = millis();
|
||||
|
||||
if (counter - counterold < 1000) {
|
||||
BuildBWSelector();
|
||||
freq_in = 0;
|
||||
BWtune = true;
|
||||
} else {
|
||||
if (band == BAND_FM || band == BAND_OIRT) {
|
||||
doStereoToggle();
|
||||
} else {
|
||||
@@ -2436,14 +2441,11 @@ void BWButtonPress() {
|
||||
freq_in = 0;
|
||||
BWtune = true;
|
||||
}
|
||||
} else {
|
||||
BuildBWSelector();
|
||||
freq_in = 0;
|
||||
BWtune = true;
|
||||
}
|
||||
delay(100);
|
||||
}
|
||||
}
|
||||
while (digitalRead(BWBUTTON) == LOW) delay(50);
|
||||
delay(100);
|
||||
}
|
||||
|
||||
void doStereoToggle() {
|
||||
@@ -2732,9 +2734,30 @@ void ButtonPress() {
|
||||
} else {
|
||||
if (menu) DoMenu();
|
||||
if (BWtune) {
|
||||
BuildDisplay();
|
||||
freq_in = 0;
|
||||
SelectBand();
|
||||
if (BWsettemp == 18 || BWsettemp == 19) {
|
||||
if (BWsettemp == 18) iMSset = !iMSset;
|
||||
if (BWsettemp == 19) EQset = !EQset;
|
||||
if (!iMSset && !EQset) iMSEQ = 0;
|
||||
if (iMSset && EQset) iMSEQ = 2;
|
||||
if (!iMSset && EQset) iMSEQ = 3;
|
||||
if (iMSset && !EQset) iMSEQ = 4;
|
||||
EEPROM.writeByte(EE_BYTE_IMSSET, iMSset);
|
||||
EEPROM.writeByte(EE_BYTE_EQSET, EQset);
|
||||
EEPROM.commit();
|
||||
updateiMS();
|
||||
updateEQ();
|
||||
if (XDRGTKUSB || XDRGTKTCP) DataPrint("G" + String(!EQset) + String(!iMSset) + "\n");
|
||||
showBWSelector();
|
||||
drawButton(BWButtonLabelsFM[BWsettemp - 1], BWsettemp - 1, (BWset == BWsettemp || (BWsettemp == 17 && BWset == 0) || (BWsettemp == 18 && !iMSset) || (BWsettemp == 19 && !EQset) ? true : false), true);
|
||||
} else if (BWsettemp == 20) {
|
||||
BuildDisplay();
|
||||
freq_in = 0;
|
||||
SelectBand();
|
||||
} else {
|
||||
doBW();
|
||||
showBWSelector();
|
||||
drawButton(BWButtonLabelsFM[BWsettemp - 1], BWsettemp - 1, (BWset == BWsettemp || (BWsettemp == 17 && BWset == 0) || (BWsettemp == 18 && !iMSset) || (BWsettemp == 19 && !EQset) ? true : false), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3620,13 +3643,13 @@ void updateBW() {//todo air
|
||||
void updateiMS() {
|
||||
if (band < BAND_GAP) {
|
||||
if (iMSset == 0) {
|
||||
if (!screenmute && !advancedRDS && !afscreen) {
|
||||
if (!screenmute && !advancedRDS && !afscreen && !BWtune) {
|
||||
tft.fillRoundRect(249, 57, 30, 18, 2, SecondaryColor);
|
||||
tftPrint(0, "iMS", 265, 59, BackgroundColor, SecondaryColor, 16);
|
||||
}
|
||||
radio.setiMS(1);
|
||||
} else {
|
||||
if (!screenmute && !advancedRDS && !afscreen) {
|
||||
if (!screenmute && !advancedRDS && !afscreen && !BWtune) {
|
||||
tft.fillRoundRect(249, 57, 30, 18, 2, GreyoutColor);
|
||||
tftPrint(0, "iMS", 265, 59, BackgroundColor, GreyoutColor, 16);
|
||||
}
|
||||
@@ -3638,13 +3661,13 @@ void updateiMS() {
|
||||
void updateEQ() {
|
||||
if (band < BAND_GAP) {
|
||||
if (EQset == 0) {
|
||||
if (!screenmute && !advancedRDS && !afscreen) {
|
||||
if (!screenmute && !advancedRDS && !afscreen && !BWtune) {
|
||||
tft.fillRoundRect(287, 57, 30, 18, 2, SecondaryColor);
|
||||
tftPrint(0, "EQ", 301, 59, BackgroundColor, SecondaryColor, 16);
|
||||
}
|
||||
radio.setEQ(1);
|
||||
} else {
|
||||
if (!screenmute && !advancedRDS && !afscreen) {
|
||||
if (!screenmute && !advancedRDS && !afscreen && !BWtune) {
|
||||
tft.fillRoundRect(287, 57, 30, 18, 2, GreyoutColor);
|
||||
tftPrint(0, "EQ", 301, 59, BackgroundColor, GreyoutColor, 16);
|
||||
}
|
||||
@@ -3700,6 +3723,8 @@ void updateSWMIBand() {
|
||||
}
|
||||
|
||||
void doBW() {
|
||||
if (BWtune) BWset = BWsettemp;
|
||||
|
||||
if (band < BAND_GAP) {
|
||||
if (BWset > 16) BWset = 0;
|
||||
|
||||
@@ -3765,34 +3790,31 @@ void doBW() {
|
||||
void doBWtuneDown() {
|
||||
rotary = 0;
|
||||
if (band < BAND_GAP) {
|
||||
if (BWset == 0) drawButton(BWButtonLabelsFM[16], 16, false); else drawButton(BWButtonLabelsFM[BWset - 1], BWset - 1, false);
|
||||
BWset--;
|
||||
if (BWset > 16) BWset = 16;
|
||||
if (BWset == 0) drawButton(BWButtonLabelsFM[16], 16, true); else drawButton(BWButtonLabelsFM[BWset - 1], BWset - 1, true);
|
||||
drawButton(BWButtonLabelsFM[BWsettemp - 1], BWsettemp - 1, (BWset == BWsettemp || (BWsettemp == 17 && BWset == 0) || (BWsettemp == 18 && !iMSset) || (BWsettemp == 19 && !EQset) ? true : false), false);
|
||||
BWsettemp--;
|
||||
if (BWsettemp > 20) BWsettemp = 20;
|
||||
drawButton(BWButtonLabelsFM[BWsettemp - 1], BWsettemp - 1, (BWset == BWsettemp || (BWsettemp == 17 && BWset == 0) || (BWsettemp == 18 && !iMSset) || (BWsettemp == 19 && !EQset) ? true : false), true);
|
||||
} else {
|
||||
drawButton(BWButtonLabelsAM[BWset - 1], BWset - 1, false);
|
||||
BWset--;
|
||||
if (BWset == 0) BWset = 4;
|
||||
drawButton(BWButtonLabelsAM[BWset - 1], BWset - 1, true);
|
||||
drawButton(BWButtonLabelsAM[BWsettemp - 1], BWsettemp - 1, (BWset == BWsettemp ? true : false), false);
|
||||
BWsettemp--;
|
||||
if (BWsettemp == 0) BWsettemp = 4;
|
||||
drawButton(BWButtonLabelsAM[BWsettemp - 1], BWsettemp - 1, (BWset == BWsettemp ? true : false), true);
|
||||
}
|
||||
|
||||
doBW();
|
||||
}
|
||||
|
||||
void doBWtuneUp() {
|
||||
rotary = 0;
|
||||
if (band < BAND_GAP) {
|
||||
if (BWset == 0) drawButton(BWButtonLabelsFM[16], 16, false); else drawButton(BWButtonLabelsFM[BWset - 1], BWset - 1, false);
|
||||
BWset++;
|
||||
if (BWset > 16) BWset = 0;
|
||||
if (BWset == 0) drawButton(BWButtonLabelsFM[16], 16, true); else drawButton(BWButtonLabelsFM[BWset - 1], BWset - 1, true);
|
||||
drawButton(BWButtonLabelsFM[BWsettemp - 1], BWsettemp - 1, (BWset == BWsettemp || (BWsettemp == 17 && BWset == 0) || (BWsettemp == 18 && !iMSset) || (BWsettemp == 19 && !EQset) ? true : false), false);
|
||||
BWsettemp++;
|
||||
if (BWsettemp > 20) BWsettemp = 0;
|
||||
drawButton(BWButtonLabelsFM[BWsettemp - 1], BWsettemp - 1, (BWset == BWsettemp || (BWsettemp == 17 && BWset == 0) || (BWsettemp == 18 && !iMSset) || (BWsettemp == 19 && !EQset) ? true : false), true);
|
||||
} else {
|
||||
drawButton(BWButtonLabelsAM[BWset - 1], BWset - 1, false);
|
||||
BWset++;
|
||||
if (BWset > 4) BWset = 1;
|
||||
drawButton(BWButtonLabelsAM[BWset - 1], BWset - 1, true);
|
||||
drawButton(BWButtonLabelsAM[BWsettemp - 1], BWsettemp - 1, (BWset == BWsettemp ? true : false), false);
|
||||
BWsettemp++;
|
||||
if (BWsettemp > 4) BWsettemp = 1;
|
||||
drawButton(BWButtonLabelsAM[BWsettemp - 1], BWsettemp - 1, (BWset == BWsettemp ? true : false), true);
|
||||
}
|
||||
doBW();
|
||||
}
|
||||
|
||||
void doTuneMode() {
|
||||
|
||||
+1
-1
@@ -355,7 +355,7 @@ 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* 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", "iMS", "EQ", "OK"};
|
||||
static const char* BWButtonLabelsAM[] = {"3 kHz", "4 kHz", "6 kHz", "8 kHz"};
|
||||
|
||||
// Memory channel database
|
||||
|
||||
+29
-11
@@ -2616,23 +2616,26 @@ void ShowOneButton(byte position, byte item, bool selected) {
|
||||
}
|
||||
|
||||
void BuildBWSelector() {
|
||||
BWsettemp = BWset;
|
||||
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);
|
||||
showBWSelector();
|
||||
}
|
||||
|
||||
void showBWSelector() {
|
||||
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));
|
||||
if (hardwaremodel == PORTABLE_TOUCH_ILI9341) drawButton("OK", 19, false);
|
||||
for (int x = 0; x < 17; x++) drawButton(BWButtonLabelsFM[x], x, (BWset == x + 1 || (BWset == 0 && x == 16) ? true : false), false);
|
||||
drawButton(BWButtonLabelsFM[17], 17, (!iMSset ? true : false), false);
|
||||
drawButton(BWButtonLabelsFM[18], 18, (!EQset ? true : false), false);
|
||||
drawButton(BWButtonLabelsFM[19], 19, false, false);
|
||||
} else {
|
||||
for (int x = 0; x < 4; x++) {
|
||||
drawButton(BWButtonLabelsAM[x], x, (BWset == x + 1 ? true : false));
|
||||
drawButton(BWButtonLabelsAM[x], x, (BWset == x + 1 ? true : false), false);
|
||||
}
|
||||
if (hardwaremodel == PORTABLE_TOUCH_ILI9341) drawButton("OK", 19, false);
|
||||
drawButton("OK", 19, false, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5952,7 +5955,7 @@ String removeNewline(String inputString) {
|
||||
return outputString;
|
||||
}
|
||||
|
||||
void drawButton(const char* text, byte button_number, bool active) {
|
||||
void drawButton(const char* text, byte button_number, bool active, bool selected) {
|
||||
const int buttonWidth = 70;
|
||||
const int buttonHeight = 30;
|
||||
const int cornerRadius = 6;
|
||||
@@ -5972,10 +5975,25 @@ void drawButton(const char* text, byte button_number, bool active) {
|
||||
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);
|
||||
// Draw the selection outline
|
||||
if (selected) {
|
||||
tft.drawRoundRect(x - 2, y - 2, buttonWidth + 4, buttonHeight + 4, cornerRadius + 2, ActiveColor);
|
||||
} else {
|
||||
tft.drawRoundRect(x - 2, y - 2, buttonWidth + 4, buttonHeight + 4, cornerRadius + 2, BackgroundColor);
|
||||
}
|
||||
|
||||
tftPrint(0, text, x + buttonWidth / 2, y + buttonHeight / 4, (active ? FrameColor : PrimaryColor), (active ? InsignificantColor : PrimaryColorSmooth), 16);
|
||||
// Draw the button fill
|
||||
tft.fillRoundRect(x, y, buttonWidth, buttonHeight, cornerRadius, FrameColor);
|
||||
|
||||
// Draw the small line at the bottom (narrower, centered, and 3px up)
|
||||
int lineHeight = 4; // Height of the bottom line
|
||||
int lineWidth = (buttonWidth / 2) - 6; // Half the button width, minus 6px
|
||||
int lineX = x + (buttonWidth - lineWidth) / 2; // Center the line horizontally
|
||||
int lineY = y + buttonHeight - lineHeight - 3; // Move the line 3px up
|
||||
if (button_number != 19) tft.fillRect(lineX, lineY, lineWidth, lineHeight, (active ? InsignificantColor : GreyoutColor));
|
||||
|
||||
// Draw the button text
|
||||
tftPrint(0, text, x + buttonWidth / 2, y + (buttonHeight / 4) - 2, PrimaryColor, PrimaryColorSmooth, 16);
|
||||
}
|
||||
|
||||
String shortLine(String text) {
|
||||
|
||||
@@ -69,6 +69,7 @@ extern byte bandforbidden;
|
||||
extern byte batteryold;
|
||||
extern byte batteryoptions;
|
||||
extern byte BWset;
|
||||
extern byte BWsettemp;
|
||||
extern byte ContrastSet;
|
||||
extern byte CurrentSkin;
|
||||
extern byte CurrentTheme;
|
||||
@@ -79,6 +80,8 @@ extern byte fmdefaultstepsize;
|
||||
extern byte fmnb;
|
||||
extern byte fmdeemphasis;
|
||||
extern byte freqfont;
|
||||
extern byte EQset;
|
||||
extern byte iMSset;
|
||||
extern byte amcodect;
|
||||
extern byte amcodectcount;
|
||||
extern byte amgain;
|
||||
@@ -215,10 +218,11 @@ void MenuDown();
|
||||
void DoMenu();
|
||||
void doTheme();
|
||||
void Infoboxprint(const char* input);
|
||||
void drawButton(const char* text, byte button_number, bool active);
|
||||
void drawButton(const char* text, byte button_number, bool active, bool selected);
|
||||
String removeNewline(String inputString);
|
||||
String shortLine(String text);
|
||||
void showMenuOpenTouchButtons();
|
||||
void showBWSelector();
|
||||
|
||||
extern void ShowFreq(int mode);
|
||||
extern void ShowBandSelectionFM(bool notglanceview, bool normaldisplay);
|
||||
|
||||
+19
-9
@@ -2,6 +2,7 @@
|
||||
#include "language.h"
|
||||
#include "constants.h"
|
||||
#include "config.h"
|
||||
#include <EEPROM.h>
|
||||
|
||||
void doTouchEvent(uint16_t x, uint16_t y) {
|
||||
if (seek) radio.setUnMute();
|
||||
@@ -132,23 +133,32 @@ void doTouchEvent(uint16_t x, uint16_t y) {
|
||||
|
||||
if (y > 195 && y < 225) {
|
||||
if (x > 7 && x < 77) BWtemp = 0;
|
||||
if (x > 87 && x < 157) iMSset = !iMSset;
|
||||
if (x > 167 && x < 237) EQset = !EQset;
|
||||
if (x > 87 && x < 237) {
|
||||
if (!iMSset && !EQset) iMSEQ = 0;
|
||||
if (iMSset && EQset) iMSEQ = 2;
|
||||
if (!iMSset && EQset) iMSEQ = 3;
|
||||
if (iMSset && !EQset) iMSEQ = 4;
|
||||
EEPROM.writeByte(EE_BYTE_IMSSET, iMSset);
|
||||
EEPROM.writeByte(EE_BYTE_EQSET, EQset);
|
||||
EEPROM.commit();
|
||||
updateiMS();
|
||||
updateEQ();
|
||||
if (XDRGTKUSB || XDRGTKTCP) DataPrint("G" + String(!EQset) + String(!iMSset) + "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (y > 195 && y < 225 && x > 247 && x < 317) {
|
||||
leave = true;
|
||||
if (BWtemp != 255) BWset = BWtemp;
|
||||
doBW();
|
||||
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);
|
||||
}
|
||||
if (BWtemp != 255) BWset = BWtemp;
|
||||
showBWSelector();
|
||||
doBW();
|
||||
}
|
||||
return;
|
||||
|
||||
+10
-1
@@ -16,8 +16,13 @@ extern bool menu;
|
||||
extern bool menuopen;
|
||||
extern bool scandxmode;
|
||||
extern bool seek;
|
||||
extern bool XDRGTKTCP;
|
||||
extern bool XDRGTKUSB;
|
||||
extern byte band;
|
||||
extern byte BWset;
|
||||
extern byte EQset;
|
||||
extern byte iMSEQ;
|
||||
extern byte iMSset;
|
||||
extern byte menuitem;
|
||||
extern byte items[10];
|
||||
extern byte menupage;
|
||||
@@ -35,11 +40,15 @@ extern void doTuneMode();
|
||||
extern void doStereoToggle();
|
||||
extern void cancelDXScan();
|
||||
extern void doBW();
|
||||
extern void drawButton(const char* text, byte button_number, bool active);
|
||||
extern void drawButton(const char* text, byte button_number, bool active, bool selected);
|
||||
extern void KeyDown();
|
||||
extern void KeyUp();
|
||||
extern void ButtonPress();
|
||||
extern void DoMenu();
|
||||
extern void ModeButtonPress();
|
||||
extern void toggleiMSEQ();
|
||||
extern void showBWSelector();
|
||||
extern void updateiMS();
|
||||
extern void updateEQ();
|
||||
extern void DataPrint(String string);
|
||||
#endif
|
||||
Reference in New Issue
Block a user