From bece340186245ac02d2600f80087597d06fb3fd5 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Tue, 11 Oct 2022 02:29:43 +0200 Subject: [PATCH] feat: FullscreenDialog also support long pressed ENTER (#2506) Resolves #2500 --- radio/src/gui/colorlcd/fullscreen_dialog.cpp | 12 ++++++++++++ radio/src/gui/colorlcd/fullscreen_dialog.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/radio/src/gui/colorlcd/fullscreen_dialog.cpp b/radio/src/gui/colorlcd/fullscreen_dialog.cpp index 1001bd1d2..98b31e907 100644 --- a/radio/src/gui/colorlcd/fullscreen_dialog.cpp +++ b/radio/src/gui/colorlcd/fullscreen_dialog.cpp @@ -51,6 +51,7 @@ FullScreenDialog::FullScreenDialog( // #endif bringToTop(); + lv_obj_add_event_cb(lvobj, FullScreenDialog::long_pressed, LV_EVENT_LONG_PRESSED, nullptr); } void FullScreenDialog::paint(BitmapBuffer * dc) @@ -110,6 +111,17 @@ void FullScreenDialog::paint(BitmapBuffer * dc) } } +void FullScreenDialog::long_pressed(lv_event_t* e) +{ + auto obj = lv_event_get_target(e); + auto fs = (FullScreenDialog*)lv_obj_get_user_data(obj); + + if (fs) { + fs->onClicked(); + lv_indev_wait_release(lv_indev_get_act()); + } +} + void FullScreenDialog::onClicked() { if (confirmHandler) confirmHandler(); diff --git a/radio/src/gui/colorlcd/fullscreen_dialog.h b/radio/src/gui/colorlcd/fullscreen_dialog.h index 0b0acf55d..c992e55ba 100644 --- a/radio/src/gui/colorlcd/fullscreen_dialog.h +++ b/radio/src/gui/colorlcd/fullscreen_dialog.h @@ -77,6 +77,8 @@ class FullScreenDialog : public Window bool running = false; std::function closeCondition; std::function confirmHandler; + + static void long_pressed(lv_event_t* e); }; #endif // _FULLSCREEN_DIALOG_H_