diff --git a/gulpfile.js b/gulpfile.js index 1d882a8..41ca123 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -200,6 +200,13 @@ gulp.task('display-fonts-big-font-dual', function() { 'big_panel_font_dual.c', '--symbols="0,1,2,3,4,5,6,7,8,9,-"'); }); +gulp.task('display-fonts-big-font-dual-4-digits', function() { + return font_create( + 8, 100, + './node_modules/@fontsource/montserrat/files/montserrat-all-400-normal.woff', + 'big_panel_font_dual_4_digits.c', '--symbols="0,1,2,3,4,5,6,7,8,9,-"'); +}); + gulp.task('display-fonts-temp-hum', function() { return font_create( 4, 72, @@ -240,7 +247,8 @@ gulp.task('display-fonts-14-all', function() { gulp.task( 'display-fonts', gulp.series( - 'display-fonts-big-font', 'display-fonts-big-font-dual', 'display-fonts-temp-hum', + 'display-fonts-big-font', 'display-fonts-big-font-dual', + 'display-fonts-big-font-dual-4-digits', 'display-fonts-temp-hum', 'display-fonts-40-regular-number', 'display-fonts-48-all', 'display-fonts-18-uints', 'display-fonts-14-all')); diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 6af9e77..836ff14 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -42,6 +42,7 @@ idf_component_register(SRCS "main.cpp" "homekit/homekit_integration.cpp" "generated/display/src/big_panel_font.c" "generated/display/src/big_panel_font_dual.c" + "generated/display/src/big_panel_font_dual_4_digits.c" "generated/display/src/temp_hum_font.c" "generated/display/src/regular_numbers_40_font.c" "generated/display/src/all_48_font.c" diff --git a/main/ui/ui_main_screen.cpp b/main/ui/ui_main_screen.cpp index 3702448..281e62f 100644 --- a/main/ui/ui_main_screen.cpp +++ b/main/ui/ui_main_screen.cpp @@ -66,6 +66,24 @@ void ui_main_screen::set_sensor_value(sensor_id_index index, float value) ESP_LOGI(UI_TAG, "Updating sensor %.*s to %g in main screen", get_sensor_name(index).size(), get_sensor_name(index).data(), value); set_value_in_panel(*pair, index, value); } + +#if defined CONFIG_SCD30_SENSOR_ENABLE || defined CONFIG_SCD4x_SENSOR_ENABLE + // if dual panel + if ((index == sensor_id_index::pm_2_5) || (index == sensor_id_index::CO2)) + { + if (pair.has_value() && pair->label) + { + // get number of digits + const auto label_text = lv_label_get_text(pair->label); + if (label_text) + { + const auto len = strlen(label_text); + const auto font = len <= 3 ? &big_panel_font_dual : &big_panel_font_dual_4_digits; + lv_obj_set_style_text_font(pair->label, font, LV_PART_MAIN | LV_STATE_DEFAULT); + } + } + } +#endif } void ui_main_screen::show_screen() @@ -243,4 +261,4 @@ void ui_main_screen::panel_temperature_callback_event(lv_event_t *e) sensor_id_index ui_main_screen::get_temperature_sensor_id_index() { return config_.is_use_fahrenheit() ? sensor_id_index::temperatureF : sensor_id_index::temperatureC; -} \ No newline at end of file +} diff --git a/main/ui/ui_screen.h b/main/ui/ui_screen.h index 0c9666a..68854c1 100644 --- a/main/ui/ui_screen.h +++ b/main/ui/ui_screen.h @@ -7,6 +7,7 @@ LV_FONT_DECLARE(big_panel_font); LV_FONT_DECLARE(big_panel_font_dual); +LV_FONT_DECLARE(big_panel_font_dual_4_digits); LV_FONT_DECLARE(temp_hum_font); LV_FONT_DECLARE(regular_numbers_40_font); LV_FONT_DECLARE(all_48_font); diff --git a/main/util/async_web_server/http_request.cpp b/main/util/async_web_server/http_request.cpp index 2fe185f..27f94de 100644 --- a/main/util/async_web_server/http_request.cpp +++ b/main/util/async_web_server/http_request.cpp @@ -108,7 +108,8 @@ esp_err_t http_request::read_body(const std::function