summaryrefslogtreecommitdiff
path: root/src/displayapp/screens/Metronome.h
diff options
context:
space:
mode:
authorBryton Hall <email@bryton.io>2021-06-12 13:06:58 (GMT)
committerGitHub <noreply@github.com>2021-06-12 13:06:58 (GMT)
commitc575754b4283ab1e8a2b1320a97992db6712ac58 (patch)
treefd298a1c44bf26f622847c5b3fea29883ed66486 /src/displayapp/screens/Metronome.h
parent58a8507b3d4ffc5fdf563efae4ba11f8b3592fdc (diff)
add basic metronome app (#409)
* add basic metronome app * add bpb, tap to bpm, update widgets * use event pressed for bpm tap * move case statement break to the right place * narrow bpm selection range, override touch events * fix arc knob style * re-enable sleeping in destructor
Diffstat (limited to 'src/displayapp/screens/Metronome.h')
-rw-r--r--src/displayapp/screens/Metronome.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/displayapp/screens/Metronome.h b/src/displayapp/screens/Metronome.h
new file mode 100644
index 0000000..3a1f108
--- /dev/null
+++ b/src/displayapp/screens/Metronome.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include "systemtask/SystemTask.h"
+#include "components/motor/MotorController.h"
+
+#include <array>
+
+namespace Pinetime::Applications::Screens {
+
+ class Metronome : public Screen {
+ public:
+ Metronome(DisplayApp* app, Controllers::MotorController& motorController, System::SystemTask& systemTask);
+ ~Metronome() override;
+ bool Refresh() override;
+ bool OnTouchEvent(TouchEvents event) override;
+ void OnEvent(lv_obj_t* obj, lv_event_t event);
+ enum class States { Running, Stopped };
+
+ private:
+ bool running;
+ States currentState;
+ TickType_t startTime;
+ TickType_t tappedTime = 0;
+ Controllers::MotorController& motorController;
+ System::SystemTask& systemTask;
+ uint16_t bpm = 120;
+ uint8_t bpb = 4;
+ uint8_t counter = 1;
+
+ lv_obj_t *bpmArc, *bpmTap, *bpmValue, *bpmLegend;
+ lv_obj_t *bpbDropdown, *bpbLegend;
+ lv_obj_t *playPause, *playPauseLabel;
+ };
+}