Files
Flora/src/core/SettingsStore.cpp
T

97 lines
2.3 KiB
C++
Raw Normal View History

#include "core/SettingsStore.h"
#include <QSettings>
namespace {
constexpr auto kGroupVaults = "vaults";
constexpr auto kKeyVaults = "vaults/vaultList";
constexpr auto kKeyCurrent = "vaults/current";
constexpr auto kKeyProviders = "sync/providers";
}
SettingsStore::SettingsStore(QObject *parent)
: QObject(parent)
{
QSettings s;
m_providers = s.value(kKeyProviders).toList();
}
QStringList SettingsStore::vaults() const
{
QSettings s;
return s.value(kKeyVaults).toStringList();
}
QString SettingsStore::currentVault() const
{
QSettings s;
return s.value(kKeyCurrent).toString();
}
void SettingsStore::setCurrentVault(const QString &path)
{
QSettings s;
s.setValue(kKeyCurrent, path);
emit currentVaultChanged();
}
QVariantList SettingsStore::providers() const
{
return m_providers;
}
void SettingsStore::addVault(const QString &path)
{
QStringList list = vaults();
if (!list.contains(path))
list.prepend(path);
QSettings s;
s.setValue(kKeyVaults, list);
s.setValue(kKeyCurrent, path);
emit vaultsChanged();
emit currentVaultChanged();
}
void SettingsStore::addProvider(const QString &provider, const QVariantMap &config)
{
QVariantList list = m_providers;
for (auto &item : list) {
auto m = item.toMap();
if (m.value("provider") == provider) {
m = config;
m["provider"] = provider;
item = m;
m_providers = list;
goto save;
}
}
{
auto m = config;
m["provider"] = provider;
list.append(m);
m_providers = list;
}
save:
QSettings s;
s.setValue(kKeyProviders, m_providers);
emit providersChanged();
}
bool SettingsStore::hasVault(const QString &path) const
{
return vaults().contains(path);
}
void SettingsStore::clearProvider(const QString &provider)
{
QVariantList list = m_providers;
list.erase(std::remove_if(list.begin(), list.end(),
[&provider](const QVariant &v) {
return v.toMap().value("provider") == provider;
}),
list.end());
m_providers = list;
QSettings s;
s.setValue(kKeyProviders, m_providers);
emit providersChanged();
}