From bbb7f07feb67289abc3a32ff87c9252e9efeebda Mon Sep 17 00:00:00 2001 From: Emil Muratov Date: Tue, 23 Jan 2024 23:49:56 +0900 Subject: [PATCH] add timeout settings for button Long press time and Multi Click time could be adjusted --- data/js/ui_lamp.json.gz | Bin 2692 -> 2766 bytes resources/html/js/ui_lamp.json | 32 ++++++++++++++++++++++++++++---- src/bencoder.cpp | 5 ----- src/bencoder.hpp | 1 - src/char_const.h | 2 ++ src/devices.cpp | 8 ++++++-- src/interface.cpp | 2 +- src/lamp.cpp | 7 ++++++- 8 files changed, 43 insertions(+), 14 deletions(-) diff --git a/data/js/ui_lamp.json.gz b/data/js/ui_lamp.json.gz index 27c7637610ac9284d0c7a9bfdc6926c781599e6f..ad1126cde32fad87daa9571be1645b7687d4c28e 100644 GIT binary patch literal 2766 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 (static_cast(gpio), btn_cfg[T_logicL]); if (!button) return; button->setDebounce(debn); + button->timeouts.setLongPress(btn_cfg[T_lpresst]); + button->timeouts.setMultiClick(btn_cfg[T_mclickt]); } else { if ( gpio != button->getGPIO() ){ button->setGPIO(static_cast(gpio), btn_cfg[T_logicL]); - button->setDebounce(debn); } + button->setDebounce(debn); + button->timeouts.setLongPress(btn_cfg[T_lpresst]); + button->timeouts.setMultiClick(btn_cfg[T_mclickt]); + // button obj already exist, so no need to configure it further return; } @@ -149,7 +154,6 @@ void button_configure_gpio(JsonVariantConst btn_cfg){ ESPButton::set_event_loop_hndlr(evt::get_hndlr()); button->enable(); - Serial.print("Button enabled\n"); } void button_configure_events(JsonVariantConst btn_cfg){ diff --git a/src/interface.cpp b/src/interface.cpp index 64869586..6b0ced12 100644 --- a/src/interface.cpp +++ b/src/interface.cpp @@ -55,7 +55,7 @@ JeeUI2 lib used under MIT License Copyright (c) 2019 Marsel Akhkamov #include "evtloop.h" // версия ресурсов в стороннем джейсон файле -#define UIDATA_VERSION 4 +#define UIDATA_VERSION 5 // placeholder for effect list rebuilder task Task *delayedOptionTask = nullptr; diff --git a/src/lamp.cpp b/src/lamp.cpp index 7c118e80..b255dc98 100644 --- a/src/lamp.cpp +++ b/src/lamp.cpp @@ -195,7 +195,12 @@ void Lamp::power(bool flag) // флаг включения/выключения /* temporary disable void Lamp::playEffect(bool isPlayName, EFFSWITCH action){ - if(mp3!=nullptr && mp3->isOn() && effwrkr.getCurrent()>0 && (flags.playEffect || ((isLampOn() || millis()>5000) && flags.playMP3 && action!=EFFSWITCH::SW_NEXT_DEMO && action!=EFFSWITCH::SW_RND))){ + if( mp3!=nullptr && mp3->isOn() && + effwrkr.getCurrent()>0 && + (flags.playEffect || + ((isLampOn() || millis()>5000) && flags.playMP3 && action!=EFFSWITCH::SW_NEXT_DEMO && action!=EFFSWITCH::SW_RND) + ) + ){ LOG(printf_P, PSTR("playEffect soundfile:%s, effect:%d, delayed:%d\n"), effwrkr.getSoundfile().c_str(), effwrkr.getCurrent(), (flags.playName && !flags.playMP3)); if(!flags.playMP3 || (flags.playEffect && action!=EFFSWITCH::SW_NEXT_DEMO && action!=EFFSWITCH::SW_RND)) // для mp3-плеера есть отдельное управление mp3->playEffect(effwrkr.getCurrent(), effwrkr.getSoundfile(), (isPlayName && mp3!=nullptr && mp3->isOn() && !flags.playMP3)); // влияние на отложенное воспроизведение, но не для MP3-плеера