Фаза 1: мастер первого запуска — SettingsStore, GitManager (auto-init+коммиты), SyncManager (проверка соединений+ErrorCatalog), WelcomeWizard/ProviderSetupGuide; тесты smoke/git/vault (12/12)
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
#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();
|
||||
}
|
||||
Reference in New Issue
Block a user