diff options
| author | JF <jf@codingfield.com> | 2021-05-21 09:38:38 (GMT) |
|---|---|---|
| committer | Gitea <gitea@fake.local> | 2021-05-21 09:38:38 (GMT) |
| commit | de69905c0647997091d9e385538c96de30be93e6 (patch) | |
| tree | 4775001d808da520c93a7552da1bea80e7714a30 /src/displayapp/screens/Screen.h | |
| parent | a80e782f267cd2424d22da23d809c0c6a8ff8761 (diff) | |
| parent | 7c9513be8a3bf36fda5706cb0fb1bd6232d42ffd (diff) | |
Merge branch 'develop' of JF/PineTime into master
Diffstat (limited to 'src/displayapp/screens/Screen.h')
| -rw-r--r-- | src/displayapp/screens/Screen.h | 98 |
1 files changed, 55 insertions, 43 deletions
diff --git a/src/displayapp/screens/Screen.h b/src/displayapp/screens/Screen.h index cf4f699..8e49c9d 100644 --- a/src/displayapp/screens/Screen.h +++ b/src/displayapp/screens/Screen.h @@ -8,56 +8,68 @@ namespace Pinetime { class DisplayApp; namespace Screens { - template <class T> - class DirtyValue { - public: - DirtyValue() = default; // Use NSDMI - explicit DirtyValue(T const& v):value{v}{} // Use MIL and const-lvalue-ref - bool IsUpdated() const { return isUpdated; } - T const& Get() { this->isUpdated = false; return value; } // never expose a non-const lvalue-ref - DirtyValue& operator=(const T& other) { - if (this->value != other) { - this->value = other; - this->isUpdated = true; - } - return *this; + template <class T> class DirtyValue { + public: + DirtyValue() = default; // Use NSDMI + explicit DirtyValue(T const& v) : value {v} { + } // Use MIL and const-lvalue-ref + bool IsUpdated() const { + return isUpdated; + } + T const& Get() { + this->isUpdated = false; + return value; + } // never expose a non-const lvalue-ref + DirtyValue& operator=(const T& other) { + if (this->value != other) { + this->value = other; + this->isUpdated = true; } - private: - T value{}; // NSDMI - default initialise type - bool isUpdated{true}; // NSDMI - use brace initilisation + return *this; + } + + private: + T value {}; // NSDMI - default initialise type + bool isUpdated {true}; // NSDMI - use brace initilisation }; - - class Screen { - public: - explicit Screen(DisplayApp* app) : app{app} {} - virtual ~Screen() = default; - /** - * Most of the time, apps only react to events (touch events, for example). - * In this case you don't need to do anything in this method. - * - * For example, InfiniPaint does nothing in Refresh(). - * But, if you want to update your display periodically, draw an animation... - * you cannot do it in a touch event handler because these handlers are not - * called if the user does not touch the screen. - * - * That's why Refresh() is there: update the display periodically. - * - * @return false if the app can be closed, true if it must continue to run - **/ - virtual bool Refresh() = 0; + class Screen { + public: + explicit Screen(DisplayApp* app) : app {app} { + } + virtual ~Screen() = default; - /** @return false if the button hasn't been handled by the app, true if it has been handled */ - virtual bool OnButtonPushed() { return false; } + /** + * Most of the time, apps only react to events (touch events, for example). + * In this case you don't need to do anything in this method. + * + * For example, InfiniPaint does nothing in Refresh(). + * But, if you want to update your display periodically, draw an animation... + * you cannot do it in a touch event handler because these handlers are not + * called if the user does not touch the screen. + * + * That's why Refresh() is there: update the display periodically. + * + * @return false if the app can be closed, true if it must continue to run + **/ + virtual bool Refresh() = 0; - /** @return false if the event hasn't been handled by the app, true if it has been handled */ - virtual bool OnTouchEvent(TouchEvents event) { return false; } - virtual bool OnTouchEvent(uint16_t x, uint16_t y) { return false; } + /** @return false if the button hasn't been handled by the app, true if it has been handled */ + virtual bool OnButtonPushed() { + return false; + } - protected: - DisplayApp* app; - bool running = true; + /** @return false if the event hasn't been handled by the app, true if it has been handled */ + virtual bool OnTouchEvent(TouchEvents event) { + return false; + } + virtual bool OnTouchEvent(uint16_t x, uint16_t y) { + return false; + } + protected: + DisplayApp* app; + bool running = true; }; } } |
