Фаза 1: мастер первого запуска — SettingsStore, GitManager (auto-init+коммиты), SyncManager (проверка соединений+ErrorCatalog), WelcomeWizard/ProviderSetupGuide; тесты smoke/git/vault (12/12)

This commit is contained in:
Flora (opencode)
2026-08-17 00:43:33 +03:00
parent 980fbcedcb
commit ed633ae036
18 changed files with 1412 additions and 29 deletions
+97
View File
@@ -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();
}