Инкрементальный индекс, пресеты автосейва, диалог Настройки
- 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:
@@ -14,6 +14,7 @@ constexpr auto kKeyTheme = "ui/theme";
|
||||
constexpr auto kKeyLeftW = "ui/leftPanelWidth";
|
||||
constexpr auto kKeyRightW = "ui/rightPanelWidth";
|
||||
constexpr auto kKeyViewModes = "ui/viewModes";
|
||||
constexpr auto kKeyAutosavePreset = "autosave/preset";
|
||||
|
||||
QString encodeKey(const QString &s) {
|
||||
// Процент-кодирование чтобы избежать интерпретации "/" как разделителя групп в QSettings Ini
|
||||
@@ -276,4 +277,53 @@ void SettingsStore::setViewModeForFile(const QString &vault, const QString &file
|
||||
root.insert(encKey, cleanMode);
|
||||
s.setValue(kKeyViewModes, root);
|
||||
s.sync();
|
||||
}
|
||||
}
|
||||
QString SettingsStore::autosavePreset() const
|
||||
{
|
||||
QSettings s;
|
||||
const QString p = s.value(kKeyAutosavePreset, QStringLiteral("balanced")).toString();
|
||||
if (p == "safe" || p == "balanced" || p == "eco" || p == "manual")
|
||||
return p;
|
||||
return QStringLiteral("balanced");
|
||||
}
|
||||
|
||||
void SettingsStore::setAutosavePreset(const QString &p)
|
||||
{
|
||||
QString clean = p.trimmed();
|
||||
if (clean != "safe" && clean != "balanced" && clean != "eco" && clean != "manual")
|
||||
clean = QStringLiteral("balanced");
|
||||
QSettings s;
|
||||
if (s.value(kKeyAutosavePreset).toString() == clean)
|
||||
return;
|
||||
s.setValue(kKeyAutosavePreset, clean);
|
||||
s.sync();
|
||||
emit autosavePresetChanged();
|
||||
}
|
||||
|
||||
int SettingsStore::autosaveDiskMs() const
|
||||
{
|
||||
const QString p = autosavePreset();
|
||||
if (p == "safe") return 2000;
|
||||
if (p == "eco") return 10000;
|
||||
if (p == "manual") return 0;
|
||||
return 5000; // balanced
|
||||
}
|
||||
|
||||
int SettingsStore::autocommitIdleMs() const
|
||||
{
|
||||
const QString p = autosavePreset();
|
||||
if (p == "safe") return 5000;
|
||||
if (p == "eco") return 60000;
|
||||
if (p == "manual") return 0;
|
||||
return 15000; // balanced
|
||||
}
|
||||
|
||||
bool SettingsStore::autosaveEnabled() const
|
||||
{
|
||||
return autosavePreset() != "manual";
|
||||
}
|
||||
|
||||
bool SettingsStore::autocommitEnabled() const
|
||||
{
|
||||
return autosavePreset() != "manual";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user