From 3023482d418259ae51294eb0081f9f3a6e6a7b17 Mon Sep 17 00:00:00 2001 From: JustScott Date: Sat, 4 Jan 2025 02:27:45 -0600 Subject: [PATCH] Move the TemperatureColor function to the Temperature class in SimpleWeatherService as the method `Color` for easier reusability. --- src/components/ble/SimpleWeatherService.h | 14 ++++++++++++++ src/displayapp/screens/Weather.cpp | 16 +--------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/components/ble/SimpleWeatherService.h b/src/components/ble/SimpleWeatherService.h index 0f8c181bd3..469b571aea 100644 --- a/src/components/ble/SimpleWeatherService.h +++ b/src/components/ble/SimpleWeatherService.h @@ -32,6 +32,8 @@ #undef min #include "components/datetime/DateTimeController.h" +#include +#include "displayapp/InfiniTimeTheme.h" int WeatherCallback(uint16_t connHandle, uint16_t attrHandle, struct ble_gatt_access_ctxt* ctxt, void* arg); @@ -82,6 +84,18 @@ namespace Pinetime { return (PreciseFahrenheit() + 50) / 100; } + [[nodiscard]] lv_color_t Color() const { + int16_t celsius = Celsius(); + if (celsius <= 0) { // freezing + return Colors::blue; + } else if (celsius <= 4) { // ice + return LV_COLOR_CYAN; + } else if (celsius >= 27) { // hot + return Colors::deepOrange; + } + return Colors::orange; // normal + } + bool operator==(const Temperature& other) const { return raw == other.raw; } diff --git a/src/displayapp/screens/Weather.cpp b/src/displayapp/screens/Weather.cpp index 25464c70cf..0e44df0349 100644 --- a/src/displayapp/screens/Weather.cpp +++ b/src/displayapp/screens/Weather.cpp @@ -12,17 +12,6 @@ using namespace Pinetime::Applications::Screens; namespace { - lv_color_t TemperatureColor(Pinetime::Controllers::SimpleWeatherService::Temperature temp) { - if (temp.Celsius() <= 0) { // freezing - return Colors::blue; - } else if (temp.Celsius() <= 4) { // ice - return LV_COLOR_CYAN; - } else if (temp.Celsius() >= 27) { // hot - return Colors::deepOrange; - } - return Colors::orange; // normal - } - uint8_t TemperatureStyle(Pinetime::Controllers::SimpleWeatherService::Temperature temp) { if (temp.Celsius() <= 0) { // freezing return LV_TABLE_PART_CELL3; @@ -128,10 +117,7 @@ void Weather::Refresh() { maxTemp = optCurrentWeather->maxTemperature.Fahrenheit(); tempUnit = 'F'; } - lv_obj_set_style_local_text_color(temperature, - LV_LABEL_PART_MAIN, - LV_STATE_DEFAULT, - TemperatureColor(optCurrentWeather->temperature)); + lv_obj_set_style_local_text_color(temperature, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, optCurrentWeather->temperature.Color()); lv_label_set_text(icon, Symbols::GetSymbol(optCurrentWeather->iconId)); lv_label_set_text(condition, Symbols::GetCondition(optCurrentWeather->iconId)); lv_label_set_text_fmt(temperature, "%d°%c", temp, tempUnit);