97 lines
2.3 KiB
C++
97 lines
2.3 KiB
C++
|
|
#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();
|
||
|
|
}
|