summaryrefslogtreecommitdiff
path: root/qt/kzqproperty.cpp
diff options
context:
space:
mode:
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();
+}