diff options
| author | Bryton Hall <email@bryton.io> | 2021-06-12 13:06:58 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-12 13:06:58 (GMT) |
| commit | c575754b4283ab1e8a2b1320a97992db6712ac58 (patch) | |
| tree | fd298a1c44bf26f622847c5b3fea29883ed66486 /src/displayapp/screens/Metronome.h | |
| parent | 58a8507b3d4ffc5fdf563efae4ba11f8b3592fdc (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.h | 34 |
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; + }; +} |
