From c13cf6536e06717ed1ad142068c3e820f414f6e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9ry=20Mathieu=20=28Mathius=29?= Date: Mon, 19 Feb 2024 20:54:41 +0100 Subject: [PATCH] feat(qt): Add TreeView with keyEvent listener --- CMakeLists.txt | 2 ++ src/qtcomponents.cpp | 22 ++++++++++++++++++++++ src/qtcomponents.h | 29 +++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 src/qtcomponents.cpp create mode 100644 src/qtcomponents.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 27f787b5..74d731f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,6 +71,7 @@ set(SOURCES src/modelaccounttree.cpp src/modelnewemails.cpp src/morkparser.cpp + src/qtcomponents.cpp src/setting_newemail.cpp src/settings.cpp src/trayicon.cpp @@ -99,6 +100,7 @@ set(HEADERS src/modelaccounttree.h src/modelnewemails.h src/morkparser.h + src/qtcomponents.h src/setting_newemail.h src/settings.h src/trayicon.h diff --git a/src/qtcomponents.cpp b/src/qtcomponents.cpp new file mode 100644 index 00000000..841fe0fd --- /dev/null +++ b/src/qtcomponents.cpp @@ -0,0 +1,22 @@ +#include "qtcomponents.h" + +QTreeViewWithKeyEvents::QTreeViewWithKeyEvents( QWidget *parent ) + : QTreeView(parent) +{ + +} + +void QTreeViewWithKeyEvents::onKeyPressed( void * handle, TreeViewKeyPressedEvent callback) +{ + mHandle = handle; + mCallback = callback; +} + +void QTreeViewWithKeyEvents::keyPressEvent( QKeyEvent *event ) +{ + if (mCallback != NULL && mHandle != NULL) + { + mCallback(mHandle, event); + } + QTreeView::keyPressEvent(event); +} \ No newline at end of file diff --git a/src/qtcomponents.h b/src/qtcomponents.h new file mode 100644 index 00000000..054e7e87 --- /dev/null +++ b/src/qtcomponents.h @@ -0,0 +1,29 @@ +#ifndef QTCOMPONENTS_H +#define QTCOMPONENTS_H + +#include +#include + +typedef void ( * TreeViewKeyPressedEvent)(void * handle, QKeyEvent * event); + +/** + * A QTreeView that allow to define listener of keyEvent received + */ +class QTreeViewWithKeyEvents : public QTreeView { + Q_OBJECT + + public: + explicit QTreeViewWithKeyEvents(QWidget *parent = NULL); + + public slots: + void onKeyPressed(void * handleUsed, TreeViewKeyPressedEvent callback); + + protected: + void keyPressEvent(QKeyEvent * event) override; + + private: + TreeViewKeyPressedEvent mCallback; + void * mHandle; +}; + +#endif // QTCOMPONENTS_H \ No newline at end of file