From cfdee7f0e602af2ba91e176c7c23aa202bddfdac Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Thu, 16 Sep 2021 09:03:17 +0200 Subject: [PATCH] [color] properly filter sources in drop-downs Resolves #731 --- radio/src/gui/colorlcd/model_inputs.cpp | 28 ++++++++++++++----------- radio/src/gui/colorlcd/sourcechoice.cpp | 2 ++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/radio/src/gui/colorlcd/model_inputs.cpp b/radio/src/gui/colorlcd/model_inputs.cpp index afa12776b..889755b0a 100644 --- a/radio/src/gui/colorlcd/model_inputs.cpp +++ b/radio/src/gui/colorlcd/model_inputs.cpp @@ -231,20 +231,24 @@ class InputEditWindow : public Page // Source new StaticText(window, grid.getLabelSlot(), STR_SOURCE, 0, COLOR_THEME_PRIMARY1); - new SourceChoice(window, grid.getFieldSlot(), INPUTSRC_FIRST, INPUTSRC_LAST, - GET_DEFAULT(line->srcRaw), - [=] (int32_t newValue) { - line->srcRaw = newValue; - if (line->srcRaw > MIXSRC_Ail && line->carryTrim == TRIM_ON) { - line->carryTrim = TRIM_OFF; - trimChoice->invalidate(); - } - SET_DIRTY(); - } - ); + Choice *src = new SourceChoice( + window, grid.getFieldSlot(), INPUTSRC_FIRST, INPUTSRC_LAST, + GET_DEFAULT(line->srcRaw), [=](int32_t newValue) { + line->srcRaw = newValue; + if (line->srcRaw > MIXSRC_Ail && line->carryTrim == TRIM_ON) { + line->carryTrim = TRIM_OFF; + trimChoice->invalidate(); + } + SET_DIRTY(); + }); + src->setAvailableHandler( + [](int v) { return isSourceAvailableInInputs(v); }); + /* TODO telemetry current value if (ed->srcRaw >= MIXSRC_FIRST_TELEM) { - drawSensorCustomValue(EXPO_ONE_2ND_COLUMN+75, y, (ed->srcRaw - MIXSRC_FIRST_TELEM)/3, convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale), LEFT|(menuHorizontalPosition==1?attr:0)); + drawSensorCustomValue(EXPO_ONE_2ND_COLUMN+75, y, (ed->srcRaw - + MIXSRC_FIRST_TELEM)/3, convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + + 1, ed->scale), LEFT|(menuHorizontalPosition==1?attr:0)); } */ grid.nextLine(); diff --git a/radio/src/gui/colorlcd/sourcechoice.cpp b/radio/src/gui/colorlcd/sourcechoice.cpp index 1ff49fc96..2a898af4f 100644 --- a/radio/src/gui/colorlcd/sourcechoice.cpp +++ b/radio/src/gui/colorlcd/sourcechoice.cpp @@ -97,6 +97,8 @@ SourceChoice::SourceChoice(FormGroup *parent, const rect_t &rect, int16_t vmin, return std::string(getSourceString(value)); }); + + setAvailableHandler([](int v){ return isSourceAvailable(v); }); } void SourceChoice::fillMenu(Menu *menu,