diff --git a/radio/src/gui/colorlcd/widgets/outputs.cpp b/radio/src/gui/colorlcd/widgets/outputs.cpp index 27a8ac497..bfdd0c777 100644 --- a/radio/src/gui/colorlcd/widgets/outputs.cpp +++ b/radio/src/gui/colorlcd/widgets/outputs.cpp @@ -45,7 +45,7 @@ class OutputsWidget: public Widget oneColumn(dc); } - uint8_t drawChannels(BitmapBuffer * dc, const uint16_t & x, const uint16_t & y, const uint16_t & w, const uint16_t & h, const uint8_t & firstChan, const bool & bg_shown, const uint16_t & bg_color) + uint8_t drawChannels(BitmapBuffer * dc, const uint16_t & x, const uint16_t & y, const uint16_t & w, const uint16_t & h, const uint8_t & firstChan, const bool & bg_shown, const uint16_t & bg_color, const uint16_t & txt_color, const uint16_t & bar_color) { const uint8_t numChan = h / ROW_HEIGHT; const uint8_t lastChan = firstChan + numChan; @@ -55,6 +55,9 @@ class OutputsWidget: public Widget const uint16_t barLft = x + RECT_BORDER; const uint16_t barMid = barLft + barW / 2; + LcdFlags barColor = COLOR2FLAGS(bar_color); + LcdFlags txtColor = COLOR2FLAGS(txt_color); + for (uint8_t curChan = firstChan; curChan < lastChan && curChan <= MAX_OUTPUT_CHANNELS; curChan++) { const int16_t chanVal = calcRESXto100(channelOutputs[curChan-1]); const uint16_t rowTop = y + (curChan - firstChan) * rowH; @@ -66,16 +69,16 @@ class OutputsWidget: public Widget dc->drawSolidFilledRect(barLft, barTop, barW , barH, CUSTOM_COLOR); } if (fillW) - dc->drawSolidFilledRect((chanVal > 0 ? barMid : barMid - fillW), barTop, fillW, barH, COLOR_THEME_SECONDARY1); + dc->drawSolidFilledRect((chanVal > 0 ? barMid : barMid - fillW), barTop, fillW, barH, barColor); lcd->drawSolidVerticalLine(barMid, barTop, barH, COLOR_THEME_SECONDARY1); dc->drawRect(x, rowTop, w, rowH + 1); - dc->drawNumber(x + barW - 10, barTop, chanVal, FONT(XS) | COLOR_THEME_SECONDARY1 | RIGHT, 0, nullptr, "%"); + dc->drawNumber(x + barW - 10, barTop, chanVal, FONT(XS) | txtColor | RIGHT, 0, nullptr, "%"); if (g_model.limitData[curChan - 1].name[0] != 0) { - dc->drawNumber(barLft + 1, barTop, curChan, FONT(XS) | COLOR_THEME_SECONDARY1 | LEFT | LEADING0, 2); - dc->drawSizedText(barLft + 23, barTop, g_model.limitData[curChan - 1].name, sizeof(g_model.limitData[curChan - 1].name), FONT(XS) | COLOR_THEME_SECONDARY1 | LEFT); + dc->drawNumber(barLft + 1, barTop, curChan, FONT(XS) | txtColor | LEFT | LEADING0, 2); + dc->drawSizedText(barLft + 23, barTop, g_model.limitData[curChan - 1].name, sizeof(g_model.limitData[curChan - 1].name), FONT(XS) | txtColor | LEFT); } else { - drawSource(dc, barLft + 1, barTop, MIXSRC_FIRST_CH+curChan-1, FONT(XS) | COLOR_THEME_SECONDARY1 | LEFT); + drawSource(dc, barLft + 1, barTop, MIXSRC_FIRST_CH+curChan-1, FONT(XS) | txtColor | LEFT); } } return lastChan - 1; @@ -86,11 +89,15 @@ class OutputsWidget: public Widget uint8_t endColumn = drawChannels(dc, 0, 0, (width() / 2) - 1, height(), persistentData->options[0].value.unsignedValue, persistentData->options[1].value.boolValue, - persistentData->options[2].value.unsignedValue); + persistentData->options[2].value.unsignedValue, + persistentData->options[3].value.unsignedValue, + persistentData->options[4].value.unsignedValue); drawChannels(dc, width() / 2, 0, (width() / 2) - 1, height(), endColumn + 1, persistentData->options[1].value.boolValue, - persistentData->options[2].value.unsignedValue); + persistentData->options[2].value.unsignedValue, + persistentData->options[3].value.unsignedValue, + persistentData->options[4].value.unsignedValue); } void oneColumn(BitmapBuffer * dc) @@ -98,7 +105,9 @@ class OutputsWidget: public Widget drawChannels(dc, 0, 0, width(), height(), persistentData->options[0].value.unsignedValue, persistentData->options[1].value.boolValue, - persistentData->options[2].value.unsignedValue); + persistentData->options[2].value.unsignedValue, + persistentData->options[3].value.unsignedValue, + persistentData->options[4].value.unsignedValue); } void checkEvents() override @@ -127,6 +136,8 @@ const ZoneOption OutputsWidget::options[] = { { STR_FIRST_CHANNEL, ZoneOption::Integer, OPTION_VALUE_UNSIGNED(1), OPTION_VALUE_UNSIGNED(1), OPTION_VALUE_UNSIGNED(32) }, { STR_FILL_BACKGROUND, ZoneOption::Bool, OPTION_VALUE_BOOL(false) }, { STR_BG_COLOR, ZoneOption::Color, OPTION_VALUE_UNSIGNED(LIGHTGREY) }, + { STR_TEXT_COLOR, ZoneOption::Color, OPTION_VALUE_UNSIGNED(COLOR_THEME_PRIMARY1>>16) }, + { STR_COLOR, ZoneOption::Color, OPTION_VALUE_UNSIGNED(COLOR_THEME_SECONDARY1>>16) }, { nullptr, ZoneOption::Bool } };