Инкрементальный индекс, пресеты автосейва, диалог Настройки

- VaultIndex: updateFile/removeFile/syncIncremental (mtime+size), полный рескан только на старте/смене/внешних изменениях; relink висячих [[ссылок]] при создании файла; FileStore.externalChanged для внешних правок
- QML: сейвы и правки идут точечно, дерево — через syncIncremental
- Настройки: пресеты safe/balanced/eco/manual (диск 2/5/10с/выкл, коммит после паузы 5/15/60с/вручную), диалог с +/-, шкалами и подсказкой; коммит только в простое, в manual — по Ctrl+S
- Удалены highlightedCode, словный merge, fileDiffText/Html, 2-arg fileHistory; renderInner без побочек
- Тесты: инкремент индекса, пресеты, autosaveEnabled, ~~~-блоки
This commit is contained in:
2026-09-06 23:02:05 +03:00
parent 1f140d3433
commit 417d0273b7
20 changed files with 802 additions and 80 deletions
+6
View File
@@ -17,6 +17,8 @@ class DocumentManager : public QObject
Q_PROPERTY(bool sideBySide READ sideBySide WRITE setSideBySide NOTIFY sideBySideChanged)
Q_PROPERTY(int autosaveIntervalMs READ autosaveIntervalMs WRITE setAutosaveIntervalMs
NOTIFY autosaveIntervalChanged)
Q_PROPERTY(bool autosaveEnabled READ autosaveEnabled WRITE setAutosaveEnabled
NOTIFY autosaveEnabledChanged)
Q_PROPERTY(QString lastStatus READ lastStatus NOTIFY lastStatusChanged)
public:
@@ -31,6 +33,8 @@ public:
Q_INVOKABLE void setSideBySide(bool on);
int autosaveIntervalMs() const;
Q_INVOKABLE void setAutosaveIntervalMs(int ms);
bool autosaveEnabled() const;
Q_INVOKABLE void setAutosaveEnabled(bool on);
QString lastStatus() const;
// Открывает документ (при необходимости создаётся вкладка). Возвращает индекс.
@@ -60,6 +64,7 @@ signals:
void secondaryIndexChanged();
void sideBySideChanged();
void autosaveIntervalChanged();
void autosaveEnabledChanged();
void lastStatusChanged();
// Уведомляет вкладку о смене признака «изменено».
@@ -89,6 +94,7 @@ public:
int m_secondary = -1;
bool m_sideBySide = false;
int m_autosaveMs = 5000;
bool m_autosaveEnabled = true;
QString m_lastStatus;
QTimer *m_autosave = nullptr;
};