Improved UI and fixed a bug
This commit is contained in:
parent
c870f8ed30
commit
06b022fc4d
2 changed files with 31 additions and 10 deletions
|
@ -29,6 +29,7 @@ namespace Pinetime {
|
||||||
WeatherService::WeatherService(System::SystemTask& system, DateTime& dateTimeController)
|
WeatherService::WeatherService(System::SystemTask& system, DateTime& dateTimeController)
|
||||||
: system(system), dateTimeController(dateTimeController) {
|
: system(system), dateTimeController(dateTimeController) {
|
||||||
nullHeader = &nullTimelineheader;
|
nullHeader = &nullTimelineheader;
|
||||||
|
nullTimelineheader->timestamp = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WeatherService::Init() {
|
void WeatherService::Init() {
|
||||||
|
@ -211,7 +212,7 @@ namespace Pinetime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<std::unique_ptr<WeatherData::Clouds>&>(this->nullHeader);
|
return reinterpret_cast<std::unique_ptr<WeatherData::Clouds>&>(*this->nullHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<WeatherData::Obscuration>& WeatherService::GetCurrentObscuration() {
|
std::unique_ptr<WeatherData::Obscuration>& WeatherService::GetCurrentObscuration() {
|
||||||
|
@ -222,7 +223,7 @@ namespace Pinetime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<std::unique_ptr<WeatherData::Obscuration>&>(this->nullHeader);
|
return reinterpret_cast<std::unique_ptr<WeatherData::Obscuration>&>(*this->nullHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<WeatherData::Precipitation>& WeatherService::GetCurrentPrecipitation() {
|
std::unique_ptr<WeatherData::Precipitation>& WeatherService::GetCurrentPrecipitation() {
|
||||||
|
@ -233,7 +234,7 @@ namespace Pinetime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<std::unique_ptr<WeatherData::Precipitation>&>(this->nullHeader);
|
return reinterpret_cast<std::unique_ptr<WeatherData::Precipitation>&>(*this->nullHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<WeatherData::Wind>& WeatherService::GetCurrentWind() {
|
std::unique_ptr<WeatherData::Wind>& WeatherService::GetCurrentWind() {
|
||||||
|
@ -244,7 +245,7 @@ namespace Pinetime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<std::unique_ptr<WeatherData::Wind>&>(this->nullHeader);
|
return reinterpret_cast<std::unique_ptr<WeatherData::Wind>&>(*this->nullHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<WeatherData::Temperature>& WeatherService::GetCurrentTemperature() {
|
std::unique_ptr<WeatherData::Temperature>& WeatherService::GetCurrentTemperature() {
|
||||||
|
@ -255,7 +256,7 @@ namespace Pinetime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<std::unique_ptr<WeatherData::Temperature>&>(this->nullHeader);
|
return reinterpret_cast<std::unique_ptr<WeatherData::Temperature>&>(*this->nullHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<WeatherData::Humidity>& WeatherService::GetCurrentHumidity() {
|
std::unique_ptr<WeatherData::Humidity>& WeatherService::GetCurrentHumidity() {
|
||||||
|
@ -266,7 +267,7 @@ namespace Pinetime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<std::unique_ptr<WeatherData::Humidity>&>(this->nullHeader);
|
return reinterpret_cast<std::unique_ptr<WeatherData::Humidity>&>(*this->nullHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<WeatherData::Pressure>& WeatherService::GetCurrentPressure() {
|
std::unique_ptr<WeatherData::Pressure>& WeatherService::GetCurrentPressure() {
|
||||||
|
@ -277,7 +278,7 @@ namespace Pinetime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<std::unique_ptr<WeatherData::Pressure>&>(this->nullHeader);
|
return reinterpret_cast<std::unique_ptr<WeatherData::Pressure>&>(*this->nullHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<WeatherData::Location>& WeatherService::GetCurrentLocation() {
|
std::unique_ptr<WeatherData::Location>& WeatherService::GetCurrentLocation() {
|
||||||
|
@ -288,7 +289,7 @@ namespace Pinetime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<std::unique_ptr<WeatherData::Location>&>(this->nullHeader);
|
return reinterpret_cast<std::unique_ptr<WeatherData::Location>&>(*this->nullHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<WeatherData::AirQuality>& WeatherService::GetCurrentQuality() {
|
std::unique_ptr<WeatherData::AirQuality>& WeatherService::GetCurrentQuality() {
|
||||||
|
@ -299,7 +300,7 @@ namespace Pinetime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<std::unique_ptr<WeatherData::AirQuality>&>(this->nullHeader);
|
return reinterpret_cast<std::unique_ptr<WeatherData::AirQuality>&>(*this->nullHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t WeatherService::GetTimelineLength() const {
|
size_t WeatherService::GetTimelineLength() const {
|
||||||
|
@ -330,7 +331,7 @@ namespace Pinetime {
|
||||||
timeline.erase(std::remove_if(std::begin(timeline),
|
timeline.erase(std::remove_if(std::begin(timeline),
|
||||||
std::end(timeline),
|
std::end(timeline),
|
||||||
[&](std::unique_ptr<WeatherData::TimelineHeader> const& header) {
|
[&](std::unique_ptr<WeatherData::TimelineHeader> const& header) {
|
||||||
return isEventStillValid(header, timeCurrent);
|
return !isEventStillValid(header, timeCurrent);
|
||||||
}),
|
}),
|
||||||
std::end(timeline));
|
std::end(timeline));
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,16 @@ std::unique_ptr<Screen> Weather::CreateScreenTemperature() {
|
||||||
std::unique_ptr<Controllers::WeatherData::Temperature>& current = weatherService.GetCurrentTemperature();
|
std::unique_ptr<Controllers::WeatherData::Temperature>& current = weatherService.GetCurrentTemperature();
|
||||||
if (current->timestamp == 0) {
|
if (current->timestamp == 0) {
|
||||||
// Do not use the data, it's invalid
|
// Do not use the data, it's invalid
|
||||||
|
lv_label_set_text_fmt(label,
|
||||||
|
"#FFFF00 Temperature#\n\n"
|
||||||
|
"#444444 %d#\n\n"
|
||||||
|
"#444444 %d#\n\n"
|
||||||
|
"%d\n"
|
||||||
|
"%d\n",
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
} else {
|
} else {
|
||||||
lv_label_set_text_fmt(label,
|
lv_label_set_text_fmt(label,
|
||||||
"#FFFF00 Temperature#\n\n"
|
"#FFFF00 Temperature#\n\n"
|
||||||
|
@ -97,6 +107,16 @@ std::unique_ptr<Screen> Weather::CreateScreenAir() {
|
||||||
std::unique_ptr<Controllers::WeatherData::AirQuality>& current = weatherService.GetCurrentQuality();
|
std::unique_ptr<Controllers::WeatherData::AirQuality>& current = weatherService.GetCurrentQuality();
|
||||||
if (current->timestamp == 0) {
|
if (current->timestamp == 0) {
|
||||||
// Do not use the data, it's invalid
|
// Do not use the data, it's invalid
|
||||||
|
lv_label_set_text_fmt(label,
|
||||||
|
"#FFFF00 Air quality#\n\n"
|
||||||
|
"#444444 %s#\n"
|
||||||
|
"#444444 %d#\n\n"
|
||||||
|
"%d\n"
|
||||||
|
"%d\n",
|
||||||
|
"",
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
} else {
|
} else {
|
||||||
lv_label_set_text_fmt(label,
|
lv_label_set_text_fmt(label,
|
||||||
"#FFFF00 Air quality#\n\n"
|
"#FFFF00 Air quality#\n\n"
|
||||||
|
|
Loading…
Reference in a new issue