From 90efee069bb58ca29d18bbcd3d121602c8dcb357 Mon Sep 17 00:00:00 2001 From: Ximi1970 Date: Wed, 6 Dec 2023 16:26:39 +0100 Subject: [PATCH] Add win shortcut base --- app/SysTray-X/SysTray-X-app/SysTray-X-app.pro | 6 +- .../SysTray-X-app/nativeeventfilter-win.cpp | 58 ++++++++++++++ .../SysTray-X-app/nativeeventfilter-win.h | 80 +++++++++++++++++++ 3 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 app/SysTray-X/SysTray-X-app/nativeeventfilter-win.cpp create mode 100644 app/SysTray-X/SysTray-X-app/nativeeventfilter-win.h diff --git a/app/SysTray-X/SysTray-X-app/SysTray-X-app.pro b/app/SysTray-X/SysTray-X-app/SysTray-X-app.pro index c2011c8..f817be5 100644 --- a/app/SysTray-X/SysTray-X-app/SysTray-X-app.pro +++ b/app/SysTray-X/SysTray-X-app/SysTray-X-app.pro @@ -147,7 +147,6 @@ win32: { SOURCES += \ main.cpp \ - nativeeventfilter-x11.cpp \ nativeeventfilterbase.cpp \ shortcut.cpp \ systrayxlink.cpp \ @@ -159,6 +158,7 @@ SOURCES += \ windowctrl.cpp unix: { SOURCES += \ + nativeeventfilter-x11.cpp \ windowctrl-unix.cpp contains(DEFINES,KDE_INTEGRATION) { SOURCES += \ @@ -167,12 +167,12 @@ SOURCES += \ } win32: { SOURCES += \ + nativeeventfilter-win.cpp \ windowctrl-win.cpp } HEADERS += \ debug.h \ - nativeeventfilter-x11.h \ nativeeventfilterbase.h \ shortcut.h \ systrayxlink.h \ @@ -184,6 +184,7 @@ HEADERS += \ windowctrl.h unix: { HEADERS += \ + nativeeventfilter-x11.h \ windowctrl-unix.h contains(DEFINES,KDE_INTEGRATION) { @@ -193,6 +194,7 @@ HEADERS += \ } win32: { HEADERS += \ + nativeeventfilter-win.h \ windowctrl-win.h } diff --git a/app/SysTray-X/SysTray-X-app/nativeeventfilter-win.cpp b/app/SysTray-X/SysTray-X-app/nativeeventfilter-win.cpp new file mode 100644 index 0000000..d1cc593 --- /dev/null +++ b/app/SysTray-X/SysTray-X-app/nativeeventfilter-win.cpp @@ -0,0 +1,58 @@ +#include "nativeeventfilter-win.h" + + +/* + * System includes + */ + +/* + * Qt includes + */ +#include + + +/* + * Catch the key press + */ +bool NativeEventFilterWin::nativeEventFilter( const QByteArray& eventType, void* message, long* result ) +{ + Q_UNUSED( eventType ) + Q_UNUSED( message ) + Q_UNUSED( result ) + + return false; +} + + +/* + * Connect the shortcut key + */ +bool NativeEventFilterWin::connectShortcut( QKeySequence key_seq ) +{ + Qt::Key key_code = Qt::Key( key_seq[ 0 ] & static_cast< int >( ~Qt::KeyboardModifierMask ) ); + Qt::KeyboardModifiers key_modifiers = Qt::KeyboardModifiers( key_seq[ 0 ] & static_cast( Qt::KeyboardModifierMask ) ); + + return connectShortcut( key_code, key_modifiers ); +} + + +/* + * Connect the shortcut key + */ +bool NativeEventFilterWin::connectShortcut( Qt::Key key_code, Qt::KeyboardModifiers key_modifiers ) +{ + // Set windows callback + + return true; +} + + +/* + * Disconnect the shortcut key + */ +bool NativeEventFilterWin::disconnectShortcut() +{ + // Remove windows callback + + return true; +} diff --git a/app/SysTray-X/SysTray-X-app/nativeeventfilter-win.h b/app/SysTray-X/SysTray-X-app/nativeeventfilter-win.h new file mode 100644 index 0000000..b9f369f --- /dev/null +++ b/app/SysTray-X/SysTray-X-app/nativeeventfilter-win.h @@ -0,0 +1,80 @@ +#ifndef NATIVEEVENTFILTERWIN_H +#define NATIVEEVENTFILTERWIN_H + +/* + * Local includes + */ +#include "nativeeventfilterbase.h" + +/* + * System includes + */ + +/* + * Qt includes + */ + + +/** + * @brief The NativeEventFilterWin class + */ +class NativeEventFilterWin : public NativeEventFilterBase +{ + public: + + /** + * @brief nativeEventFilter. Set the native event filter to catch the key press. + * + * @param eventType Event type to handle. + * @param message Message to handle. + * @param result Result to handle. + * + * @return Result + */ + bool nativeEventFilter( const QByteArray& eventType, void* message, long* result ) override; + + protected: + + /** + * @brief connectShortcut. Connect the shortcut to the system. + * + * @param key_seq Key sequence to connect. + * + * @return Succeeded? + */ + bool connectShortcut( QKeySequence key_seq ); + + /** + * @brief connectShortcut. Connect the shortcut to the system. + * + * @param key_code Qt key code to connect. + * @param key_modifiers Qt key modifiers to connect. + * + * @return Succeeded? + */ + bool connectShortcut( Qt::Key key_code, Qt::KeyboardModifiers key_modifiers ); + + /** + * @brief disconnectShortcut. Disconnect the shortcut. + * + * @return Succeeded? + */ + bool disconnectShortcut(); + + private: + + /** + * @brief m_key_modifiers_win. Storage for the X11 key modifiers. + */ + int m_key_modifiers_win; + + /** + * @brief m_key_code_win. Storage for the X11 key code. + */ + int m_key_code_win; + +}; + +SINGLETON( NativeEventFilterWin ) + +#endif // NATIVEEVENTFILTERWIN_H