Skip to content

Commit 94f4125

Browse files
authored
PineTimeStyle weather display (#1459)
Weather display for PineTimeStyle Documentation : https://wiki.pine64.org/wiki/PineTimeStyle and https://wiki.pine64.org/wiki/Infinitime-Weather
1 parent 394f58f commit 94f4125

10 files changed

Lines changed: 178 additions & 39 deletions

File tree

src/components/settings/Settings.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ namespace Pinetime {
3939
Pink
4040
};
4141
enum class PTSGaugeStyle : uint8_t { Full, Half, Numeric };
42+
enum class PTSWeather : uint8_t { On, Off };
4243

4344
struct PineTimeStyle {
4445
Colors ColorTime = Colors::Teal;
4546
Colors ColorBar = Colors::Teal;
4647
Colors ColorBG = Colors::Black;
4748
PTSGaugeStyle gaugeStyle = PTSGaugeStyle::Full;
49+
PTSWeather weatherEnable = PTSWeather::Off;
4850
};
4951

5052
struct WatchFaceInfineat {
@@ -146,6 +148,16 @@ namespace Pinetime {
146148
return settings.PTS.gaugeStyle;
147149
};
148150

151+
void SetPTSWeather(PTSWeather weatherEnable) {
152+
if (weatherEnable != settings.PTS.weatherEnable)
153+
settingsChanged = true;
154+
settings.PTS.weatherEnable = weatherEnable;
155+
};
156+
157+
PTSWeather GetPTSWeather() const {
158+
return settings.PTS.weatherEnable;
159+
};
160+
149161
void SetAppMenu(uint8_t menu) {
150162
appMenu = menu;
151163
};
@@ -267,7 +279,7 @@ namespace Pinetime {
267279
private:
268280
Pinetime::Controllers::FS& fs;
269281

270-
static constexpr uint32_t settingsVersion = 0x0004;
282+
static constexpr uint32_t settingsVersion = 0x0005;
271283

272284
struct SettingsData {
273285
uint32_t version = settingsVersion;

src/displayapp/DisplayApp.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include "displayapp/screens/Steps.h"
3030
#include "displayapp/screens/PassKey.h"
3131
#include "displayapp/screens/Error.h"
32+
#include "displayapp/screens/Weather.h"
3233

3334
#include "drivers/Cst816s.h"
3435
#include "drivers/St7789.h"
@@ -417,6 +418,7 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio
417418
settingsController,
418419
heartRateController,
419420
motionController,
421+
systemTask->nimble().weather(),
420422
filesystem);
421423
break;
422424

@@ -538,6 +540,11 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio
538540
case Apps::Metronome:
539541
currentScreen = std::make_unique<Screens::Metronome>(motorController, *systemTask);
540542
break;
543+
/* Weather debug app
544+
case Apps::Weather:
545+
currentScreen = std::make_unique<Screens::Weather>(this, systemTask->nimble().weather());
546+
break;
547+
*/
541548
case Apps::Steps:
542549
currentScreen = std::make_unique<Screens::Steps>(motionController, settingsController);
543550
break;

src/displayapp/fonts/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
set(FONTS jetbrains_mono_42 jetbrains_mono_76 jetbrains_mono_bold_20
22
jetbrains_mono_extrabold_compressed lv_font_navi_80 lv_font_sys_48
3-
open_sans_light)
3+
open_sans_light fontawesome_weathericons)
44
find_program(LV_FONT_CONV "lv_font_conv" NO_CACHE REQUIRED
55
HINTS "${CMAKE_SOURCE_DIR}/node_modules/.bin")
66
message(STATUS "Using ${LV_FONT_CONV} to generate font files")

src/displayapp/fonts/fonts.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"sources": [
44
{
55
"file": "JetBrainsMono-Bold.ttf",
6-
"range": "0x20-0x7e, 0x410-0x44f"
6+
"range": "0x20-0x7e, 0x410-0x44f, 0xB0"
77
},
88
{
99
"file": "FontAwesome5-Solid+Brands+Regular.woff",
@@ -74,5 +74,15 @@
7474
"bpp": 2,
7575
"size": 80,
7676
"compress": true
77+
},
78+
"fontawesome_weathericons": {
79+
"sources": [
80+
{
81+
"file": "FontAwesome5-Solid+Brands+Regular.woff",
82+
"range": "0xf185, 0xf6c4, 0xf743, 0xf740, 0xf75f, 0xf0c2, 0xf05e"
83+
}
84+
],
85+
"bpp": 1,
86+
"size": 25
7787
}
7888
}

src/displayapp/screens/Clock.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ Clock::Clock(Controllers::DateTime& dateTimeController,
2424
Controllers::Settings& settingsController,
2525
Controllers::HeartRateController& heartRateController,
2626
Controllers::MotionController& motionController,
27+
Controllers::WeatherService& weatherService,
2728
Controllers::FS& filesystem)
2829
: dateTimeController {dateTimeController},
2930
batteryController {batteryController},
@@ -32,6 +33,7 @@ Clock::Clock(Controllers::DateTime& dateTimeController,
3233
settingsController {settingsController},
3334
heartRateController {heartRateController},
3435
motionController {motionController},
36+
weatherService {weatherService},
3537
filesystem {filesystem},
3638
screen {[this, &settingsController]() {
3739
switch (settingsController.GetWatchFace()) {
@@ -95,7 +97,8 @@ std::unique_ptr<Screen> Clock::WatchFacePineTimeStyleScreen() {
9597
bleController,
9698
notificationManager,
9799
settingsController,
98-
motionController);
100+
motionController,
101+
weatherService);
99102
}
100103

101104
std::unique_ptr<Screen> Clock::WatchFaceTerminalScreen() {

src/displayapp/screens/Clock.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <components/heartrate/HeartRateController.h>
88
#include "displayapp/screens/Screen.h"
99
#include "components/datetime/DateTimeController.h"
10+
#include "components/ble/weather/WeatherService.h"
1011

1112
namespace Pinetime {
1213
namespace Controllers {
@@ -28,6 +29,7 @@ namespace Pinetime {
2829
Controllers::Settings& settingsController,
2930
Controllers::HeartRateController& heartRateController,
3031
Controllers::MotionController& motionController,
32+
Controllers::WeatherService& weatherService,
3133
Controllers::FS& filesystem);
3234
~Clock() override;
3335

@@ -42,6 +44,7 @@ namespace Pinetime {
4244
Controllers::Settings& settingsController;
4345
Controllers::HeartRateController& heartRateController;
4446
Controllers::MotionController& motionController;
47+
Controllers::WeatherService& weatherService;
4548
Controllers::FS& filesystem;
4649

4750
std::unique_ptr<Screen> screen;

src/displayapp/screens/Symbols.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ namespace Pinetime {
3838
static constexpr const char* home = "\xEF\x80\x95";
3939
static constexpr const char* sleep = "\xEE\xBD\x84";
4040

41+
// fontawesome_weathericons.c
42+
// static constexpr const char* sun = "\xEF\x86\x85";
43+
static constexpr const char* cloudSun = "\xEF\x9B\x84";
44+
static constexpr const char* cloudSunRain = "\xEF\x9D\x83";
45+
static constexpr const char* cloudShowersHeavy = "\xEF\x9D\x80";
46+
static constexpr const char* smog = "\xEF\x9D\x9F";
47+
static constexpr const char* cloud = "\xEF\x83\x82";
48+
static constexpr const char* ban = "\xEF\x81\x9E";
49+
4150
// lv_font_sys_48.c
4251
static constexpr const char* settings = "\xEE\xA2\xB8";
4352

0 commit comments

Comments
 (0)