Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(bw): add collapsable sections to B&W radio setup tab. #5529

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 5 additions & 25 deletions radio/src/gui/128x64/model_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -238,41 +238,21 @@ PACK(struct ExpandState {
uint8_t functionSwitches:1;
});

struct ExpandState expandState;
static struct ExpandState expandState;

uint8_t PREFLIGHT_ROW(uint8_t value)
{
if (expandState.preflight)
return value;
return HIDDEN_ROW;
}
static uint8_t PREFLIGHT_ROW(uint8_t value) { return expandState.preflight ? value : HIDDEN_ROW; }

uint8_t THROTTLE_ROW(uint8_t value)
{
if (expandState.throttle)
return value;
return HIDDEN_ROW;
}
static uint8_t THROTTLE_ROW(uint8_t value) { return expandState.throttle ? value : HIDDEN_ROW; }

#if defined(FUNCTION_SWITCHES)
uint8_t FS_ROW(uint8_t value)
{
if (expandState.functionSwitches)
return value;
return HIDDEN_ROW;
}
static uint8_t FS_ROW(uint8_t value) { return expandState.functionSwitches ? value : HIDDEN_ROW; }

uint8_t G1_ROW(int8_t value) { return (firstSwitchInGroup(1) >= 0) ? value : HIDDEN_ROW; }
uint8_t G2_ROW(int8_t value) { return (firstSwitchInGroup(2) >= 0) ? value : HIDDEN_ROW; }
uint8_t G3_ROW(int8_t value) { return (firstSwitchInGroup(3) >= 0) ? value : HIDDEN_ROW; }
#endif

uint8_t VIEWOPT_ROW(uint8_t value)
{
if (expandState.viewOpt)
return value;
return HIDDEN_ROW;
}
static uint8_t VIEWOPT_ROW(uint8_t value) { return expandState.viewOpt ? value : HIDDEN_ROW; }

#define MODEL_SETUP_2ND_COLUMN (LCD_W-11*FW)
#define MODEL_SETUP_SET_FAILSAFE_OFS 7*FW-2
Expand Down
169 changes: 105 additions & 64 deletions radio/src/gui/128x64/radio_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ enum {
CASE_AUDIO(ITEM_RADIO_SETUP_SPEAKER_PITCH)
ITEM_RADIO_SETUP_WAV_VOLUME,
ITEM_RADIO_SETUP_BACKGROUND_VOLUME,
ITEM_RADIO_SETUP_START_SOUND,
CASE_VARIO(ITEM_RADIO_SETUP_VARIO_LABEL)
CASE_VARIO(ITEM_RADIO_SETUP_VARIO_VOLUME)
CASE_VARIO(ITEM_RADIO_SETUP_VARIO_PITCH)
Expand All @@ -90,7 +91,6 @@ enum {
CASE_CONTRAST(ITEM_RADIO_SETUP_CONTRAST)
CASE_BACKLIGHT(ITEM_RADIO_SETUP_FLASH_BEEP)
CASE_SPLASH_PARAM(ITEM_RADIO_SETUP_DISABLE_SPLASH)
ITEM_RADIO_SETUP_START_SOUND,
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_ON_SPEED)
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_OFF_SPEED)
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_AUTO_OFF)
Expand Down Expand Up @@ -127,6 +127,20 @@ enum {
ITEM_RADIO_SETUP_MAX
};

PACK(struct ExpandState {
uint8_t sound:1;
uint8_t alarms:1;
uint8_t viewOpt:1;
});

static struct ExpandState expandState;

static uint8_t SOUND_ROW(uint8_t value) { return expandState.sound ? value : HIDDEN_ROW; }

static uint8_t ALARMS_ROW(uint8_t value) { return expandState.alarms ? value : HIDDEN_ROW; }

static uint8_t VIEWOPT_ROW(uint8_t value) { return expandState.viewOpt ? value : HIDDEN_ROW; }

uint8_t viewOptCheckBox(coord_t y, const char* title, uint8_t value, uint8_t attr, event_t event, uint8_t modelOption)
{
if (modelOption != OVERRIDE_GLOBAL) {
Expand Down Expand Up @@ -163,65 +177,85 @@ void menuRadioSetup(event_t event)
uint8_t old_editMode = s_editMode;
#endif

MENU(STR_RADIO_SETUP, menuTabGeneral, MENU_RADIO_SETUP, HEADER_LINE+ITEM_RADIO_SETUP_MAX, {
HEADER_LINE_COLUMNS CASE_RTCLOCK(2) CASE_RTCLOCK(2) CASE_BATTGRAPH(1)
LABEL(SOUND), CASE_AUDIO(0)
CASE_BUZZER(0)
0, 0, 0, 0, 0, CASE_AUDIO(0)
MENU(STR_RADIO_SETUP, menuTabGeneral, MENU_RADIO_SETUP, ITEM_RADIO_SETUP_MAX, {
HEADER_LINE_COLUMNS
CASE_RTCLOCK(2) CASE_RTCLOCK(2) CASE_BATTGRAPH(1)
// Sound
0,
CASE_AUDIO(SOUND_ROW(0))
CASE_BUZZER(SOUND_ROW(0))
SOUND_ROW(0),
SOUND_ROW(0),
SOUND_ROW(0),
CASE_AUDIO(SOUND_ROW(0))
SOUND_ROW(0),
SOUND_ROW(0),
SOUND_ROW(0),
// Vario
CASE_VARIO(LABEL(VARIO))
CASE_VARIO(0)
CASE_VARIO(0)
CASE_VARIO(0)
CASE_VARIO(0)
CASE_HAPTIC(LABEL(HAPTIC))
CASE_HAPTIC(0)
CASE_HAPTIC(0)
CASE_HAPTIC(0)
CASE_VARIO(0)
CASE_VARIO(0)
CASE_VARIO(0)
CASE_VARIO(0)
// Haptic
CASE_HAPTIC(LABEL(VARIO))
CASE_HAPTIC(0)
CASE_HAPTIC(0)
CASE_HAPTIC(0)
// IMU
CASE_IMU(LABEL(IMU))
CASE_IMU(0)
CASE_IMU(0)
LABEL(ALARMS), 0,
0, 0, 0, 0, 0,/* ITEM_RADIO_SETUP_INACTIVITY_ALARM ITEM_RADIO_SETUP_MEMORY_WARNING ITEM_RADIO_SETUP_ALARM_WARNING ITEM_RADIO_SETUP_RSSI_POWEROFF_ALARM ITEM_RADIO_SETUP_TRAINER_POWEROFF_ALARM*/
CASE_IMU(0)
CASE_IMU(0)
// Alarms
0,
ALARMS_ROW(0),
ALARMS_ROW(0),
ALARMS_ROW(0),
ALARMS_ROW(0),
ALARMS_ROW(0),
ALARMS_ROW(0),
// Backlight
CASE_BACKLIGHT(LABEL(BACKLIGHT))
CASE_BACKLIGHT(0)
CASE_BACKLIGHT(0)
CASE_BACKLIGHT(0)
CASE_CONTRAST(0)
CASE_BACKLIGHT(0)
CASE_BACKLIGHT(0)
CASE_BACKLIGHT(0)
CASE_BACKLIGHT(0)
CASE_CONTRAST(0)
CASE_BACKLIGHT(0)
CASE_SPLASH_PARAM(0)
0,
CASE_PWR_BUTTON_PRESS(0)
CASE_PWR_BUTTON_PRESS(0)
CASE_PWR_BUTTON_PRESS(0)
CASE_HAPTIC(0) // power on/off haptic
CASE_PXX2(0) /* owner registration ID */

CASE_GPS(0)
CASE_GPS(0)
CASE_GPS(0)
CASE_GPS(0)
// GPS
CASE_GPS(LABEL(GPS))
CASE_GPS(0)
CASE_GPS(0)
CASE_GPS(0)
CASE_PXX1(0)
0, 0, 0, IF_FAI_CHOICE(0)
0, 0, 0,
IF_FAI_CHOICE(0)
0,
0, // USB mode
CASE_JACK_DETECT(0) // Jack mode
0, // Channel order
CASE_ROTARY_ENCODER(0)
CASE_TX_MODE(LABEL(TX_MODE))
CASE_TX_MODE(0)
LABEL(ViewOptions),
LABEL(RadioMenuTabs),
0,
0,
LABEL(ModelMenuTabs),
CASE_HELI(0)
CASE_FLIGHT_MODES(0)
0,
0,
0,
CASE_LUA_MODEL_SCRIPTS(0)
0,
1/*to force edit mode*/});
// View options
0,
VIEWOPT_ROW(LABEL(RadioMenuTabs)),
VIEWOPT_ROW(0),
VIEWOPT_ROW(0),
VIEWOPT_ROW(LABEL(ModelMenuTabs)),
CASE_HELI(VIEWOPT_ROW(0))
CASE_FLIGHT_MODES(VIEWOPT_ROW(0))
VIEWOPT_ROW(0),
VIEWOPT_ROW(0),
VIEWOPT_ROW(0),
CASE_LUA_MODEL_SCRIPTS(VIEWOPT_ROW(0))
VIEWOPT_ROW(0),
});

if (event == EVT_ENTRY) {
reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode;
Expand All @@ -235,8 +269,16 @@ void menuRadioSetup(event_t event)
for (uint8_t i=0; i<LCD_LINES-1; i++) {
coord_t y = MENU_HEADER_HEIGHT + 1 + i*FH;
uint8_t k = i + menuVerticalOffset;
uint8_t blink = ((s_editMode>0) ? BLINK|INVERS : INVERS);
uint8_t attr = (sub == k ? blink : 0);
for (int j=0; j<=k; j++) {
if (mstate_tab[j+HEADER_LINE] == HIDDEN_ROW) {
if (++k >= (int)DIM(mstate_tab)) {
return;
}
}
}

LcdFlags blink = ((s_editMode>0) ? BLINK|INVERS : INVERS);
LcdFlags attr = (sub == k ? blink : 0);

switch (k) {
#if defined(RTCLOCK)
Expand Down Expand Up @@ -315,7 +357,7 @@ void menuRadioSetup(event_t event)
#endif

case ITEM_RADIO_SETUP_SOUND_LABEL:
lcdDrawTextAlignedLeft(y, STR_SOUND_LABEL);
expandState.sound = expandableSection(y, STR_SOUND_LABEL, expandState.sound, attr, event);
break;

#if defined(AUDIO)
Expand Down Expand Up @@ -381,6 +423,10 @@ void menuRadioSetup(event_t event)
break;
#endif

case ITEM_RADIO_SETUP_START_SOUND:
g_eeGeneral.dontPlayHello = !editCheckBox(!g_eeGeneral.dontPlayHello, LCD_W-9, y, STR_PLAY_HELLO, attr, event, INDENT_WIDTH) ;
break;

#if defined(VARIO)
case ITEM_RADIO_SETUP_VARIO_LABEL:
lcdDrawTextAlignedLeft(y, STR_VARIO);
Expand Down Expand Up @@ -466,19 +512,8 @@ void menuRadioSetup(event_t event)
break;
#endif

#if !defined(OLED_SCREEN)
case ITEM_RADIO_SETUP_CONTRAST:
lcdDrawTextIndented(y, STR_CONTRAST);
lcdDrawNumber(LCD_W-2, y, g_eeGeneral.contrast, attr|RIGHT);
if (attr) {
CHECK_INCDEC_GENVAR(event, g_eeGeneral.contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX);
lcdSetContrast();
}
break;
#endif

case ITEM_RADIO_SETUP_ALARMS_LABEL:
lcdDrawTextAlignedLeft(y, STR_ALARMS_LABEL);
expandState.alarms = expandableSection(y, STR_ALARMS_LABEL, expandState.alarms, attr, event);
break;

case ITEM_RADIO_SETUP_BATTERY_WARNING:
Expand Down Expand Up @@ -565,6 +600,17 @@ void menuRadioSetup(event_t event)
break;
#endif

#if !defined(OLED_SCREEN)
case ITEM_RADIO_SETUP_CONTRAST:
lcdDrawTextIndented(y, STR_CONTRAST);
lcdDrawNumber(LCD_W-2, y, g_eeGeneral.contrast, attr|RIGHT);
if (attr) {
CHECK_INCDEC_GENVAR(event, g_eeGeneral.contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX);
lcdSetContrast();
}
break;
#endif

case ITEM_RADIO_SETUP_DISABLE_SPLASH:
{
lcdDrawTextAlignedLeft(y, STR_SPLASHSCREEN);
Expand All @@ -579,11 +625,6 @@ void menuRadioSetup(event_t event)
break;
}

case ITEM_RADIO_SETUP_START_SOUND:
lcdDrawTextAlignedLeft(y, STR_PLAY_HELLO);
g_eeGeneral.dontPlayHello = !editCheckBox(!g_eeGeneral.dontPlayHello, LCD_W-9, y, nullptr, attr, event ) ;
break;

#if defined(PWR_BUTTON_PRESS)
case ITEM_RADIO_SETUP_PWR_ON_SPEED:
g_eeGeneral.pwrOnSpeed = pwrDelayToYaml(editChoice(LCD_W-2, y, STR_PWR_ON_DELAY, STR_PWR_OFF_DELAYS, pwrDelayFromYaml(g_eeGeneral.pwrOnSpeed), 0, 4, attr|RIGHT, event));
Expand Down Expand Up @@ -772,7 +813,7 @@ void menuRadioSetup(event_t event)
#endif

case ITEM_VIEW_OPTIONS_LABEL:
lcdDrawTextAlignedLeft(y, STR_ENABLED_FEATURES);
expandState.viewOpt = expandableSection(y, STR_ENABLED_FEATURES, expandState.viewOpt, attr, event);
break;
case ITEM_VIEW_OPTIONS_RADIO_TAB:
lcdDrawText(INDENT_WIDTH-2, y, TR_RADIO_MENU_TABS);
Expand Down
23 changes: 4 additions & 19 deletions radio/src/gui/212x64/model_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,28 +205,13 @@ PACK(struct ExpandState {
uint8_t viewOpt:1;
});

struct ExpandState expandState;
static struct ExpandState expandState;

uint8_t PREFLIGHT_ROW(uint8_t value)
{
if (expandState.preflight)
return value;
return HIDDEN_ROW;
}
static uint8_t PREFLIGHT_ROW(uint8_t value) { return expandState.preflight ? value : HIDDEN_ROW; }

uint8_t THROTTLE_ROW(uint8_t value)
{
if (expandState.throttle)
return value;
return HIDDEN_ROW;
}
static uint8_t THROTTLE_ROW(uint8_t value) { return expandState.throttle ? value : HIDDEN_ROW; }

uint8_t VIEWOPT_ROW(uint8_t value)
{
if (expandState.viewOpt)
return value;
return HIDDEN_ROW;
}
static uint8_t VIEWOPT_ROW(uint8_t value) { return expandState.viewOpt ? value : HIDDEN_ROW; }

void copySelection(char * dst, const char * src, uint8_t size)
{
Expand Down
Loading