SQLite-база хранилища: свойства, ~sql-блоки, настройки хранилища
- Frontmatter: шапка --- ключ: значение (источник правды свойств) - VaultSettings: .flora/settings.json (журнал, sqlEnabled, sqlMaxRows) - Database: files/tags/file_tags/links/properties, только SELECT/WITH на read-only соединении (mode=ro + query_only + зонд), лимит строк - MdParser: ~sql-блоки таблицей (parseBlocks + Renderer), шапка скрыта в просмотре - Окно: per-window Database/VaultSettings, sync при сохранении, дебаунс reindex - QML: VaultSettingsDialog, FilePropertiesDialog, меню, автообновление ~sql - FileStore.journalDir, DocumentManager.reloadDocument - Тест flora_db_test (23/23 зелёных)
This commit is contained in:
@@ -87,6 +87,11 @@ ApplicationWindow {
|
||||
}
|
||||
MenuSeparator { }
|
||||
Action { text: qsTr("Настройки…"); onTriggered: settingsDialog.open() }
|
||||
Action {
|
||||
text: qsTr("Настройки хранилища…")
|
||||
enabled: fileStore.ready
|
||||
onTriggered: vaultSettingsDialog.open()
|
||||
}
|
||||
Action { text: qsTr("Выход"); onTriggered: window.close() }
|
||||
}
|
||||
Menu {
|
||||
@@ -119,6 +124,18 @@ ApplicationWindow {
|
||||
}
|
||||
}
|
||||
}
|
||||
MenuSeparator { }
|
||||
Action {
|
||||
text: qsTr("Свойства заметки…")
|
||||
enabled: documentManager.activeIndex >= 0 && fileStore.ready
|
||||
onTriggered: {
|
||||
const p = documentManager.pathAt(documentManager.activeIndex)
|
||||
if (p.length>0) {
|
||||
filePropsDialog.filePath = p
|
||||
filePropsDialog.open()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Menu {
|
||||
title: qsTr("&Вид")
|
||||
@@ -183,6 +200,32 @@ ApplicationWindow {
|
||||
id: settingsDialog
|
||||
}
|
||||
|
||||
VaultSettingsDialog {
|
||||
id: vaultSettingsDialog
|
||||
}
|
||||
|
||||
FilePropertiesDialog {
|
||||
id: filePropsDialog
|
||||
}
|
||||
|
||||
// Fallback для пути визарда: хранилище открыли прямо в этом окне
|
||||
// (не через WindowController) — открываем настройки и базу здесь.
|
||||
// Обычный путь уже подключён в C++, повторный open() безвреден (guard ниже).
|
||||
function ensureVaultDb() {
|
||||
if (!fileStore.ready)
|
||||
return
|
||||
if (vaultDatabase.isOpen && vaultDatabase.vault === fileStore.vault)
|
||||
return
|
||||
vaultSettings.open(fileStore.vault)
|
||||
if (vaultDatabase.open(fileStore.vault))
|
||||
mdParser.setDatabaseForVault(fileStore.vault, vaultDatabase)
|
||||
}
|
||||
Connections {
|
||||
target: fileStore
|
||||
function onVaultChanged() { window.ensureVaultDb() }
|
||||
function onReadyChanged() { if (fileStore.ready) window.ensureVaultDb() }
|
||||
}
|
||||
|
||||
Popup {
|
||||
id: vaultSwitcher
|
||||
x: 12
|
||||
|
||||
Reference in New Issue
Block a user