Files
Flora/src/core/SettingsStore.h
T

75 lines
3.1 KiB
C++
Raw Normal View History

#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)
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;
};