#pragma once #include #include #include // Хранение настроек приложения (QSettings): // список хранилищ, основное хранилище, конфигурации провайдеров синхронизации. class SettingsStore : public QObject { Q_OBJECT Q_PROPERTY(QStringList vaults READ vaults NOTIFY vaultsChanged) Q_PROPERTY(QString currentVault READ currentVault WRITE setCurrentVault NOTIFY currentVaultChanged) Q_PROPERTY(QVariantList providers READ providers NOTIFY providersChanged) Q_PROPERTY(QString theme READ theme WRITE setTheme NOTIFY themeChanged) Q_PROPERTY(int leftPanelWidth READ leftPanelWidth WRITE setLeftPanelWidth NOTIFY leftPanelWidthChanged) Q_PROPERTY(int rightPanelWidth READ rightPanelWidth WRITE setRightPanelWidth NOTIFY rightPanelWidthChanged) // Пресет автосохранения: "safe" | "balanced" | "eco" | "manual". // Производные значения читает UI (таймеры) и тесты. Q_PROPERTY(QString autosavePreset READ autosavePreset WRITE setAutosavePreset NOTIFY autosavePresetChanged) Q_PROPERTY(int autosaveDiskMs READ autosaveDiskMs NOTIFY autosavePresetChanged) Q_PROPERTY(int autocommitIdleMs READ autocommitIdleMs NOTIFY autosavePresetChanged) Q_PROPERTY(bool autosaveEnabled READ autosaveEnabled NOTIFY autosavePresetChanged) Q_PROPERTY(bool autocommitEnabled READ autocommitEnabled NOTIFY autosavePresetChanged) public: explicit SettingsStore(QObject *parent = nullptr); QStringList vaults() const; QString currentVault() const; void setCurrentVault(const QString &path); QVariantList providers() const; // Добавляет хранилище в список (если ещё нет) и делает его текущим. void addVault(const QString &path); // Сохраняет конфигурацию провайдера (provider: "github"/"gitlab"/"gitea"/"webdav"/"syncthing"). void addProvider(const QString &provider, const QVariantMap &config); Q_INVOKABLE bool hasVault(const QString &path) const; Q_INVOKABLE void clearProvider(const QString &provider); QString theme() const; void setTheme(const QString &t); int leftPanelWidth() const; void setLeftPanelWidth(int w); int rightPanelWidth() const; void setRightPanelWidth(int w); QString autosavePreset() const; void setAutosavePreset(const QString &p); int autosaveDiskMs() const; int autocommitIdleMs() const; bool autosaveEnabled() const; bool autocommitEnabled() const; Q_INVOKABLE QString viewModeForFile(const QString &vault, const QString &filePath) const; Q_INVOKABLE void setViewModeForFile(const QString &vault, const QString &filePath, const QString &mode); signals: void vaultsChanged(); void currentVaultChanged(); void providersChanged(); void themeChanged(); void leftPanelWidthChanged(); void rightPanelWidthChanged(); void autosavePresetChanged(); private: QVariantList m_providers; };