From d4b7f55e5c15cd74a727a66d7329c3273cf4f498 Mon Sep 17 00:00:00 2001 From: philmoz Date: Wed, 31 May 2023 13:39:33 +1000 Subject: [PATCH] fix(colorlcd): Show/hide 'Delete All' button on the telemetry page based on sensor count change (#3631) --- radio/src/gui/colorlcd/model_telemetry.cpp | 22 +++++++++++++--------- radio/src/gui/colorlcd/model_telemetry.h | 1 + 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/radio/src/gui/colorlcd/model_telemetry.cpp b/radio/src/gui/colorlcd/model_telemetry.cpp index 6652760c4..d364b781e 100644 --- a/radio/src/gui/colorlcd/model_telemetry.cpp +++ b/radio/src/gui/colorlcd/model_telemetry.cpp @@ -827,6 +827,13 @@ void ModelTelemetryPage::buildSensorList(int8_t focusSensorIndex) else lv_group_focus_obj(discover->getLvObj()); } + + uint8_t sensorsCount = getTelemetrySensorsCount(); + if (sensorsCount > 0) { + lv_obj_clear_flag(deleteAll->getLvObj(), LV_OBJ_FLAG_HIDDEN); + } else { + lv_obj_add_flag(deleteAll->getLvObj(), LV_OBJ_FLAG_HIDDEN); + } } void ModelTelemetryPage::build(FormWindow * window) @@ -873,13 +880,11 @@ void ModelTelemetryPage::build(FormWindow * window) }); lv_obj_set_grid_cell(b->getLvObj(), LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 0, 1); - uint8_t sensorsCount = getTelemetrySensorsCount(); - if (sensorsCount > 0) { #if TWOCOLBUTTONS - line = window->newLine(&grid4); + line = window->newLine(&grid4); #endif - // Delete all sensors button - b = new TextButton(line, rect_t{}, STR_DELETE_ALL_SENSORS, + // Delete all sensors button + deleteAll = new TextButton(line, rect_t{}, STR_DELETE_ALL_SENSORS, [=]() -> uint8_t { new ConfirmDialog(window, STR_DELETE_ALL_SENSORS, STR_CONFIRMDELETE, [=]() { for (int i = 0; i < MAX_TELEMETRY_SENSORS; i++) { @@ -889,12 +894,11 @@ void ModelTelemetryPage::build(FormWindow * window) return 0; }); #if TWOCOLBUTTONS - b->setWidth((LCD_W - 16) / 2); - lv_obj_set_grid_cell(b->getLvObj(), LV_GRID_ALIGN_CENTER, 0, 2, LV_GRID_ALIGN_CENTER, 0, 1); + deleteAll->setWidth((LCD_W - 16) / 2); + lv_obj_set_grid_cell(deleteAll->getLvObj(), LV_GRID_ALIGN_CENTER, 0, 2, LV_GRID_ALIGN_CENTER, 0, 1); #else - lv_obj_set_grid_cell(b->getLvObj(), LV_GRID_ALIGN_STRETCH, 2, 1, LV_GRID_ALIGN_CENTER, 0, 1); + lv_obj_set_grid_cell(deleteAll->getLvObj(), LV_GRID_ALIGN_STRETCH, 2, 1, LV_GRID_ALIGN_CENTER, 0, 1); #endif - } FlexGridLayout grid(col_dsc, row_dsc, 2); diff --git a/radio/src/gui/colorlcd/model_telemetry.h b/radio/src/gui/colorlcd/model_telemetry.h index 379aa2aef..89d97f2c0 100644 --- a/radio/src/gui/colorlcd/model_telemetry.h +++ b/radio/src/gui/colorlcd/model_telemetry.h @@ -37,6 +37,7 @@ class ModelTelemetryPage: public PageTab { FormWindow* window = nullptr; FormWindow* sensorWindow = nullptr; TextButton* discover = nullptr; + TextButton* deleteAll = nullptr; void editSensor(FormWindow * window, uint8_t index); void rebuild(FormWindow * window, int8_t focusSensorIndex=-1);