summaryrefslogtreecommitdiff
path: root/src/DisplayApp/Screens
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2020-03-15 20:01:24 (GMT)
committerJF <jf@codingfield.com>2020-03-15 20:01:24 (GMT)
commit8ed6ffaaf8d0ad681c4f84b89e4a72792edb5a8f (patch)
tree594ce4ca20956b61bd796d8aabb64a1ae78c425e /src/DisplayApp/Screens
parent2c55ab20b4f52d21a04e1d0ee049f7c4ca0196de (diff)
Add the possibility to the screen to handle a touch gesture.
A default action is taken if the current screen doesn't handle it.
Diffstat (limited to 'src/DisplayApp/Screens')
-rw-r--r--src/DisplayApp/Screens/Brightness.cpp20
-rw-r--r--src/DisplayApp/Screens/Brightness.h2
-rw-r--r--src/DisplayApp/Screens/Screen.h4
3 files changed, 26 insertions, 0 deletions
diff --git a/src/DisplayApp/Screens/Brightness.cpp b/src/DisplayApp/Screens/Brightness.cpp
index a87a62a..9e3416c 100644
--- a/src/DisplayApp/Screens/Brightness.cpp
+++ b/src/DisplayApp/Screens/Brightness.cpp
@@ -70,3 +70,23 @@ uint8_t Brightness::LevelToInt(Pinetime::Controllers::BrightnessController::Leve
default : return 0;
}
}
+
+bool Brightness::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
+ switch(event) {
+ case TouchEvents::SwipeLeft:
+ brightness.Lower();
+ SetValue();
+ return true;
+ case TouchEvents::SwipeRight:
+ brightness.Higher();
+ SetValue();
+ return true;
+ default:
+ return false;
+ }
+}
+
+void Brightness::SetValue() {
+ lv_slider_set_value(slider, LevelToInt(brightness.Level()), LV_ANIM_OFF);
+ lv_label_set_text(slider_label, LevelToString(brightness.Level()));
+}
diff --git a/src/DisplayApp/Screens/Brightness.h b/src/DisplayApp/Screens/Brightness.h
index 31861f8..37cbcd7 100644
--- a/src/DisplayApp/Screens/Brightness.h
+++ b/src/DisplayApp/Screens/Brightness.h
@@ -13,6 +13,7 @@ namespace Pinetime {
~Brightness() override;
bool Refresh() override;
bool OnButtonPushed() override;
+ bool OnTouchEvent(TouchEvents event) override;
void OnValueChanged();
private:
@@ -25,6 +26,7 @@ namespace Pinetime {
const char* LevelToString(Controllers::BrightnessController::Levels level);
uint8_t LevelToInt(Controllers::BrightnessController::Levels level);
void SetValue(uint8_t value);
+ void SetValue();
};
}
}
diff --git a/src/DisplayApp/Screens/Screen.h b/src/DisplayApp/Screens/Screen.h
index 6cbd41a..d890231 100644
--- a/src/DisplayApp/Screens/Screen.h
+++ b/src/DisplayApp/Screens/Screen.h
@@ -1,4 +1,5 @@
#pragma once
+#include "../TouchEvents.h"
namespace Pinetime {
namespace Applications {
@@ -15,6 +16,9 @@ namespace Pinetime {
// Return false if the button hasn't been handled by the app, true if it has been handled
virtual bool OnButtonPushed() { return false; }
+ // 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; }
+
protected:
DisplayApp* app;
};