AwesomeStudioPedal
A programmable, multi-profile foot controller for DAWs, score readers, and studio automation
Loading...
Searching...
No Matches
action.h
Go to the documentation of this file.
1#pragma once
2#include <ArduinoJson.h>
3#include <cstdint>
4#include <memory>
5#include <string>
6
11class Action
12{
13public:
14 enum class Type : uint8_t
15 {
16 Unknown,
19 SendKey,
23 };
24
25 void setName(const std::string& n) { name = n; }
26 const std::string& getName() const { return name; }
27 bool hasName() const { return ! name.empty(); }
28
29 virtual Type getType() const { return Type::Unknown; }
30 virtual void execute() = 0;
31 virtual uint32_t getDelay() const { return 0; }
32 virtual bool isSendAction() const { return false; }
33
37 virtual bool isInProgress() const { return false; }
38
39 virtual void getJsonProperties(JsonObject& json) const { (void) json; }
40
41 virtual ~Action() = default;
42
43private:
44 std::string name;
45};
Base class for all pedal actions.
Definition action.h:12
void setName(const std::string &n)
Definition action.h:25
virtual void execute()=0
virtual Type getType() const
Definition action.h:29
virtual ~Action()=default
virtual uint32_t getDelay() const
Definition action.h:31
virtual void getJsonProperties(JsonObject &json) const
Definition action.h:39
bool hasName() const
Definition action.h:27
virtual bool isSendAction() const
Definition action.h:32
const std::string & getName() const
Definition action.h:26
virtual bool isInProgress() const
Returns true if the action is currently in progress (e.g.
Definition action.h:37