From 1fcaca840b4b5af3eb495229fe79d6d9edd20525 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Fri, 5 Oct 2018 14:43:29 +0200 Subject: [PATCH] Migrate to the new onFocusEvent APIs Signed-off-by: Gergely Nagy --- README.md | 4 ---- src/Kaleidoscope/TypingBreaks.cpp | 24 +++++++++++++++++++----- src/Kaleidoscope/TypingBreaks.h | 9 +-------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 741879c4..8d535616 100644 --- a/README.md +++ b/README.md @@ -84,10 +84,6 @@ properties. All times are in seconds. ## Focus commands -The plugin provides a single `Focus` hook, `FOCUS_HOOK_TYPINGBREAKS`, which in -turn make a few commands available. All of these return the respective setting's -value when called without arguments, or set them if called with some. - ### `typingbreaks.idleTimeLimit [limit]` > Get or set the `.settings.idle_time_limit` property. diff --git a/src/Kaleidoscope/TypingBreaks.cpp b/src/Kaleidoscope/TypingBreaks.cpp index 01bb6566..ab0e83ab 100644 --- a/src/Kaleidoscope/TypingBreaks.cpp +++ b/src/Kaleidoscope/TypingBreaks.cpp @@ -17,7 +17,7 @@ #include #include -#include +#include namespace kaleidoscope { @@ -123,7 +123,14 @@ void TypingBreaks::enableEEPROM(void) { EEPROM.get(settings_base_, settings); } -bool TypingBreaks::focusHook(const char *command) { +#define FOCUS_HOOK_TYPINGBREAKS FOCUS_HOOK(TypingBreaks.focusHook, \ + "typingbreaks.idleTimeLimit\n" \ + "typingbreaks.lockTimeOut\n" \ + "typingbreaks.lockLength\n" \ + "typingbreaks.leftMaxKeys\n" \ + "typingbreaks.rightMaxKeys") + +EventHandlerResult TypingBreaks::onFocusEvent(const char *command) { enum { IDLE_TIME_LIMIT, LOCK_TIMEOUT, @@ -132,8 +139,15 @@ bool TypingBreaks::focusHook(const char *command) { RIGHT_MAX, } subCommand; + if (::Focus.handleHelp(command, PSTR("typingbreaks.idleTimeLimit\n" + "typingbreaks.lockTimeOut\n" + "typingbreaks.lockLength\n" + "typingbreaks.leftMaxKeys\n" + "typingbreaks.rightMaxKeys"))) + return EventHandlerResult::OK; + if (strncmp_P(command, PSTR("typingbreaks."), 13) != 0) - return false; + return EventHandlerResult::OK; if (strcmp_P(command + 13, PSTR("idleTimeLimit")) == 0) subCommand = IDLE_TIME_LIMIT; else if (strcmp_P(command + 13, PSTR("lockTimeOut")) == 0) @@ -145,7 +159,7 @@ bool TypingBreaks::focusHook(const char *command) { else if (strcmp_P(command + 13, PSTR("rightMaxKeys")) == 0) subCommand = RIGHT_MAX; else - return false; + return EventHandlerResult::OK; switch (subCommand) { case IDLE_TIME_LIMIT: @@ -186,7 +200,7 @@ bool TypingBreaks::focusHook(const char *command) { } EEPROM.put(settings_base_, settings); - return true; + return EventHandlerResult::EVENT_CONSUMED; } } diff --git a/src/Kaleidoscope/TypingBreaks.h b/src/Kaleidoscope/TypingBreaks.h index ae901d18..bfc39a98 100644 --- a/src/Kaleidoscope/TypingBreaks.h +++ b/src/Kaleidoscope/TypingBreaks.h @@ -26,7 +26,6 @@ class TypingBreaks : public kaleidoscope::Plugin { TypingBreaks(void) {} static void enableEEPROM(void); - static bool focusHook(const char *command); typedef struct settings_t { uint16_t idle_time_limit; @@ -39,6 +38,7 @@ class TypingBreaks : public kaleidoscope::Plugin { static settings_t settings; EventHandlerResult onKeyswitchEvent(Key &mapped_key, byte row, byte col, uint8_t key_state); + EventHandlerResult onFocusEvent(const char *command); private: static uint32_t session_start_time_; @@ -55,10 +55,3 @@ class TypingBreaks : public kaleidoscope::Plugin { extern kaleidoscope::TypingBreaks TypingBreaks; void TypingBreak(bool is_locked); - -#define FOCUS_HOOK_TYPINGBREAKS FOCUS_HOOK(TypingBreaks.focusHook, \ - "typingbreaks.idleTimeLimit\n" \ - "typingbreaks.lockTimeOut\n" \ - "typingbreaks.lockLength\n" \ - "typingbreaks.leftMaxKeys\n" \ - "typingbreaks.rightMaxKeys")