diff options
Diffstat (limited to 'qt/kzqproperty.cpp')
-rw-r--r-- | qt/kzqproperty.cpp | 64 |
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(); +} |