diff --git a/src/WatchFace.cpp b/src/WatchFace.cpp index 6fd855f..e17494c 100644 --- a/src/WatchFace.cpp +++ b/src/WatchFace.cpp @@ -70,6 +70,30 @@ void WatchFace::HandleButtonPress(uint64_t buttonMask) } } + delay(10); + } + } else if (buttonMask & UP_BTN_MASK) { + m_watchFacePage = (m_watchFacePage + 1) % m_pages.size(); + ShowWatchFace(true); + + while (true) { + // Wait for button release + if (digitalRead(UP_BTN_PIN) == LOW){ + break; + } + + delay(10); + } + } else if (buttonMask & DOWN_BTN_MASK) { + m_watchFacePage = (m_watchFacePage + m_pages.size() - 1) % m_pages.size(); + ShowWatchFace(true); + + while (true) { + // Wait for button release + if (digitalRead(DOWN_BTN_PIN) == LOW){ + break; + } + delay(10); } } @@ -92,7 +116,7 @@ void WatchFace::DrawWatchFace(bool partialRefresh) return; } - m_pages[0]->DrawPage(partialRefresh); + m_pages[m_watchFacePage]->DrawPage(partialRefresh); } void WatchFace::SetupVolatileMenuStuff() diff --git a/src/WatchFace.h b/src/WatchFace.h index 96c331c..fe4cb53 100644 --- a/src/WatchFace.h +++ b/src/WatchFace.h @@ -3,6 +3,7 @@ #include "Watchy.h" #include "Menu.h" #include "WatchFacePages/Clock.h" +#include "WatchFacePages/Weather.h" #include class WatchFace : public Watchy @@ -20,7 +21,8 @@ private: RTC_DATA_ATTR static Menu m_menu; RTC_DATA_ATTR static uint8_t m_watchFacePage; std::vector> m_pages = { - std::make_shared(m_display, m_features) + std::make_shared(m_display, m_features), + std::make_shared(m_display, m_features) }; void SetupVolatileMenuStuff(); diff --git a/src/WatchFacePages/Weather.cpp b/src/WatchFacePages/Weather.cpp new file mode 100644 index 0000000..3053562 --- /dev/null +++ b/src/WatchFacePages/Weather.cpp @@ -0,0 +1,26 @@ +#include "Weather.h" +#include "../SevenSegment.h" +#include "../Icons.h" +#include +#include +#include + +WatchFacePages::Weather::Weather(WatchyDisplay & display, WatchFeatures::WatchFeatures & features) + : m_display(display), m_features(features) +{ +} + +void WatchFacePages::Weather::InitBoot() +{ +} + +void WatchFacePages::Weather::InitWake() +{ +} + +void WatchFacePages::Weather::DrawPage(bool partialRefresh) +{ + m_display.setFullWindow(); + m_display.fillScreen(GxEPD_WHITE); + m_display.display(partialRefresh); +} \ No newline at end of file diff --git a/src/WatchFacePages/Weather.h b/src/WatchFacePages/Weather.h new file mode 100644 index 0000000..630e0f9 --- /dev/null +++ b/src/WatchFacePages/Weather.h @@ -0,0 +1,26 @@ +#pragma once + +#pragma once + +#include "Page.h" +#include "../WatchyDisplay.h" +#include "../WatchFeatures/WatchFeatures.h" + +namespace WatchFacePages +{ + class Weather; +} + +class WatchFacePages::Weather : public WatchFacePages::Page +{ +public: + Weather(WatchyDisplay & display, WatchFeatures::WatchFeatures & features); + void InitBoot() override; + void InitWake() override; + void DrawPage(bool partialRefresh = false) override; + +private: + + WatchyDisplay & m_display; + WatchFeatures::WatchFeatures & m_features; +}; \ No newline at end of file