78 lines
2.5 KiB
C++
78 lines
2.5 KiB
C++
#pragma once
|
|
#include <Figments.h>
|
|
|
|
class ConfigInputTask : public BufferedInputSource {
|
|
public:
|
|
ConfigInputTask() : BufferedInputSource("ConfigInput") {}
|
|
|
|
void handleEvent(const InputEvent& evt) override {
|
|
if (evt.intent == InputEvent::UserInput) {
|
|
Buttons::Chord chord = (Buttons::Chord) evt.asInt();
|
|
switch (chord) {
|
|
case Buttons::Circle:
|
|
m_currentIntent = nextIntent();
|
|
//Log.info("Next setting... (%d)", m_currentIntent);
|
|
break;
|
|
case Buttons::CircleTriangle:
|
|
//Log.info("Increment...");
|
|
increment();
|
|
break;
|
|
case Buttons::CircleCross:
|
|
//Log.info("Decrement...");
|
|
decrement();
|
|
break;
|
|
case Buttons::Triangle:
|
|
//Log.info("Save...");
|
|
setEvent(InputEvent::SaveConfigurationRequest);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private:
|
|
InputEvent::Intent m_currentIntent = InputEvent::SetDisplayLength;
|
|
|
|
void decrement() {
|
|
int current = 0;
|
|
switch (m_currentIntent) {
|
|
case InputEvent::SetDisplayLength:
|
|
current = Static<ConfigService>::instance()->coordMap()->pixelCount;
|
|
break;
|
|
case InputEvent::SetDisplayOffset:
|
|
current = Static<ConfigService>::instance()->coordMap()->startPixel;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
setEvent(InputEvent{m_currentIntent, current - 1});
|
|
}
|
|
|
|
void increment() {
|
|
int current = 0;
|
|
switch (m_currentIntent) {
|
|
case InputEvent::SetDisplayLength:
|
|
current = Static<ConfigService>::instance()->coordMap()->pixelCount;
|
|
break;
|
|
case InputEvent::SetDisplayOffset:
|
|
current = Static<ConfigService>::instance()->coordMap()->startPixel;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
setEvent(InputEvent{m_currentIntent, current + 1});
|
|
}
|
|
|
|
InputEvent::Intent nextIntent() {
|
|
switch (m_currentIntent) {
|
|
case InputEvent::SetDisplayLength:
|
|
return InputEvent::SetDisplayOffset;
|
|
case InputEvent::SetDisplayOffset:
|
|
return InputEvent::SetDisplayLength;
|
|
default:
|
|
return InputEvent::None;
|
|
}
|
|
}
|
|
};
|