summaryrefslogtreecommitdiff
path: root/qt/kzqproperty.cpp
diff options
context:
space:
mode:
authorFabien Proriol <fabien.proriol@kazoe.org>2025-05-22 17:10:35 +0200
committerFabien Proriol <fabien.proriol@kazoe.org>2025-05-26 10:48:46 +0200
commit2feba4447a482840e21fa2d3b33f1a5da12d09b7 (patch)
tree83a790b1ae5b5f32f5964350856a160dbed52e05 /qt/kzqproperty.cpp
parentc842548fef050ac5f8b56a5fcb4f579820247434 (diff)
qt: Add Qt Wrapper library and QML module
Diffstat (limited to 'qt/kzqproperty.cpp')
-rw-r--r--qt/kzqproperty.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/qt/kzqproperty.cpp b/qt/kzqproperty.cpp
new file mode 100644
index 0000000..4290e8c
--- /dev/null
+++ b/qt/kzqproperty.cpp
@@ -0,0 +1,64 @@
+#include "kzqproperty.h"
+#include "kzqsettings.h"
+
+namespace KaZoe {
+class KzQPropertyPrivate
+{
+ Q_DISABLE_COPY(KzQPropertyPrivate)
+ Q_DECLARE_PUBLIC(KaZoe::KzQProperty)
+
+ KaZoe::KzQProperty * const q_ptr;
+ QString m_key;
+ QVariant m_value;
+ KaZoe::KzQSettings m_settings;
+
+ KzQPropertyPrivate(KaZoe::KzQProperty* systemprop): q_ptr(systemprop){}
+};
+};
+
+KaZoe::KzQProperty::KzQProperty(QObject *parent)
+ : QObject{parent}
+ , d_ptr(new KaZoe::KzQPropertyPrivate(this))
+{
+ Q_D(KzQProperty);
+ QObject::connect(&d->m_settings, &KaZoe::KzQSettings::valueChanged, [this](QString id, QVariant value){
+ Q_D(KzQProperty);
+ if(id == d->m_key)
+ {
+ setValue(value);
+ }
+ });
+}
+
+KaZoe::KzQProperty::~KzQProperty() = default;
+
+QString KaZoe::KzQProperty::key() const
+{
+ Q_D(const KzQProperty);
+ return d->m_key;
+}
+
+void KaZoe::KzQProperty::setKey(const QString &newKey)
+{
+ Q_D(KzQProperty);
+ if (d->m_key == newKey)
+ return;
+ d->m_key = newKey;
+ setValue(d->m_settings.get(d->m_key));
+ emit keyChanged();
+}
+
+QVariant KaZoe::KzQProperty::value() const
+{
+ Q_D(const KzQProperty);
+ return d->m_value;
+}
+
+void KaZoe::KzQProperty::setValue(const QVariant &newValue)
+{
+ Q_D(KzQProperty);
+ if (d->m_value == newValue)
+ return;
+ d->m_value = newValue;
+ emit valueChanged();
+}