diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-24 23:48:47 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-24 23:48:47 +1000 |
| commit | 57e3989185b8209a11d79bac477479019d515180 (patch) | |
| tree | 27e94dcaef9f41bb8f294eab1a91a27ce4da03d0 /plugin/src/Caelestia/Internal/hyprdevices.hpp | |
| parent | plugin: sub namespace modules (diff) | |
| download | caelestia-shell-57e3989185b8209a11d79bac477479019d515180.tar.gz caelestia-shell-57e3989185b8209a11d79bac477479019d515180.tar.bz2 caelestia-shell-57e3989185b8209a11d79bac477479019d515180.zip | |
plugin: add hypr extras (#690)
* move machine
* works
* prevent duplicate refreshes
* use instead of hyprctl proc
Diffstat (limited to 'plugin/src/Caelestia/Internal/hyprdevices.hpp')
| -rw-r--r-- | plugin/src/Caelestia/Internal/hyprdevices.hpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/plugin/src/Caelestia/Internal/hyprdevices.hpp b/plugin/src/Caelestia/Internal/hyprdevices.hpp new file mode 100644 index 0000000..ad762b9 --- /dev/null +++ b/plugin/src/Caelestia/Internal/hyprdevices.hpp @@ -0,0 +1,72 @@ +#pragma once + +#include <qjsonobject.h> +#include <qobject.h> +#include <qqmlintegration.h> + +namespace caelestia::internal::hypr { + +class HyprKeyboard : public QObject { + Q_OBJECT + QML_ELEMENT + QML_UNCREATABLE("HyprKeyboard instances can only be retrieved from a HyprDevices") + + Q_PROPERTY(QVariantHash lastIpcObject READ lastIpcObject NOTIFY lastIpcObjectChanged) + Q_PROPERTY(QString address READ address NOTIFY addressChanged) + Q_PROPERTY(QString name READ name NOTIFY nameChanged) + Q_PROPERTY(QString layout READ layout NOTIFY layoutChanged) + Q_PROPERTY(QString activeKeymap READ activeKeymap NOTIFY activeKeymapChanged) + Q_PROPERTY(bool capsLock READ capsLock NOTIFY capsLockChanged) + Q_PROPERTY(bool numLock READ numLock NOTIFY numLockChanged) + Q_PROPERTY(bool main READ main NOTIFY mainChanged) + +public: + explicit HyprKeyboard(QJsonObject ipcObject, QObject* parent = nullptr); + + [[nodiscard]] QVariantHash lastIpcObject() const; + [[nodiscard]] QString address() const; + [[nodiscard]] QString name() const; + [[nodiscard]] QString layout() const; + [[nodiscard]] QString activeKeymap() const; + [[nodiscard]] bool capsLock() const; + [[nodiscard]] bool numLock() const; + [[nodiscard]] bool main() const; + + bool updateLastIpcObject(const QJsonObject& object); + +signals: + void lastIpcObjectChanged(); + void addressChanged(); + void nameChanged(); + void layoutChanged(); + void activeKeymapChanged(); + void capsLockChanged(); + void numLockChanged(); + void mainChanged(); + +private: + QJsonObject m_lastIpcObject; +}; + +class HyprDevices : public QObject { + Q_OBJECT + QML_ELEMENT + QML_UNCREATABLE("HyprDevices instances can only be retrieved from a HyprExtras") + + Q_PROPERTY(QList<HyprKeyboard*> keyboards READ keyboards NOTIFY keyboardsChanged) + +public: + explicit HyprDevices(QObject* parent = nullptr); + + [[nodiscard]] QList<HyprKeyboard*> keyboards() const; + + bool updateLastIpcObject(const QJsonObject& object); + +signals: + void keyboardsChanged(); + +private: + QList<HyprKeyboard*> m_keyboards; +}; + +} // namespace caelestia::internal::hypr |