2026-08-17 00:43:33 +03:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
|
#include <QStringList>
|
|
|
|
|
#include <QVariantList>
|
|
|
|
|
|
|
|
|
|
// Хранение настроек приложения (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)
|
2026-09-01 19:25:07 +03:00
|
|
|
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)
|
2026-09-06 23:02:05 +03:00
|
|
|
// Пресет автосохранения: "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)
|
2026-08-17 00:43:33 +03:00
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
2026-09-01 19:25:07 +03:00
|
|
|
QString theme() const;
|
|
|
|
|
void setTheme(const QString &t);
|
|
|
|
|
int leftPanelWidth() const;
|
|
|
|
|
void setLeftPanelWidth(int w);
|
|
|
|
|
int rightPanelWidth() const;
|
|
|
|
|
void setRightPanelWidth(int w);
|
|
|
|
|
|
2026-09-06 23:02:05 +03:00
|
|
|
QString autosavePreset() const;
|
|
|
|
|
void setAutosavePreset(const QString &p);
|
|
|
|
|
int autosaveDiskMs() const;
|
|
|
|
|
int autocommitIdleMs() const;
|
|
|
|
|
bool autosaveEnabled() const;
|
|
|
|
|
bool autocommitEnabled() const;
|
|
|
|
|
|
2026-09-01 19:25:07 +03:00
|
|
|
Q_INVOKABLE QString viewModeForFile(const QString &vault, const QString &filePath) const;
|
|
|
|
|
Q_INVOKABLE void setViewModeForFile(const QString &vault, const QString &filePath, const QString &mode);
|
|
|
|
|
|
2026-08-17 00:43:33 +03:00
|
|
|
signals:
|
|
|
|
|
void vaultsChanged();
|
|
|
|
|
void currentVaultChanged();
|
|
|
|
|
void providersChanged();
|
2026-09-01 19:25:07 +03:00
|
|
|
void themeChanged();
|
|
|
|
|
void leftPanelWidthChanged();
|
|
|
|
|
void rightPanelWidthChanged();
|
2026-09-06 23:02:05 +03:00
|
|
|
void autosavePresetChanged();
|
2026-08-17 00:43:33 +03:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
QVariantList m_providers;
|
|
|
|
|
};
|