Migration of QtMvvm from github
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.4 KiB

#include "qsettingsaccessor.h"
using namespace QtMvvm;
namespace QtMvvm {
class QSettingsAccessorPrivate
{
public:
QSettingsAccessorPrivate(QSettings *settings);
QSettings *settings;
};
}
QSettingsAccessor::QSettingsAccessor(QObject *parent) :
QSettingsAccessor{new QSettings{}, parent}
{
d->settings->setParent(this);
}
QSettingsAccessor::QSettingsAccessor(QSettings *settings, QObject *parent) :
ISettingsAccessor{parent},
d{new QSettingsAccessorPrivate{settings}}
{}
QSettingsAccessor::~QSettingsAccessor() = default;
bool QSettingsAccessor::contains(const QString &key) const
{
return d->settings->contains(key);
}
QVariant QSettingsAccessor::load(const QString &key, const QVariant &defaultValue) const
{
return d->settings->value(key, defaultValue);
}
void QSettingsAccessor::save(const QString &key, const QVariant &value)
{
d->settings->setValue(key, value);
emit entryChanged(key, value);
}
void QSettingsAccessor::remove(const QString &key)
{
7 years ago
d->settings->beginGroup(key);
auto allKeys = d->settings->allKeys();
d->settings->endGroup();
d->settings->remove(key);
7 years ago
for(const auto &subKey : allKeys)
emit entryRemoved(key + QLatin1Char('/') + subKey);
emit entryRemoved(key);
}
QSettings *QSettingsAccessor::settings() const
{
return d->settings;
}
void QSettingsAccessor::sync()
{
d->settings->sync();
}
QSettingsAccessorPrivate::QSettingsAccessorPrivate(QSettings *settings) :
settings{settings}
{}