From 9658aea9639012c62ddfcfb60d72d1bc01efaec8 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Fri, 9 Jul 2021 12:23:41 +0200 Subject: [PATCH] on switch to VFS real plugin, convert existing files to placeholders Signed-off-by: Matthieu Gallien --- src/gui/folder.cpp | 4 +++- src/libsync/syncengine.cpp | 10 ++++++++++ src/libsync/syncengine.h | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index 993dcb69e1..3a33d45427 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -669,8 +669,10 @@ void Folder::setVirtualFilesEnabled(bool enabled) _definition.virtualFilesMode = newMode; startVfs(); - if (newMode != Vfs::Off) + if (newMode != Vfs::Off) { _saveInFoldersWithPlaceholders = true; + SyncEngine::switchToVirtualFiles(path(), _journal, *_vfs); + } saveToSettings(); } } diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 9813e63cb6..47f24f832c 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -1019,6 +1019,16 @@ void SyncEngine::wipeVirtualFiles(const QString &localPath, SyncJournalDb &journ // But hydrated placeholders may still be around. } +void SyncEngine::switchToVirtualFiles(const QString &localPath, SyncJournalDb &journal, Vfs &vfs) +{ + qCInfo(lcEngine) << "Convert to virtual files inside" << localPath; + journal.getFilesBelowPath({}, [&](const SyncJournalFileRecord &rec) { + SyncFileItem item; + QString localFile = localPath + rec.path(); + vfs.convertToPlaceholder(localFile, item, localFile); + }); +} + void SyncEngine::abort() { if (_propagator) diff --git a/src/libsync/syncengine.h b/src/libsync/syncengine.h index 991ef48202..9d0bada92d 100644 --- a/src/libsync/syncengine.h +++ b/src/libsync/syncengine.h @@ -134,6 +134,8 @@ public: */ static void wipeVirtualFiles(const QString &localPath, SyncJournalDb &journal, Vfs &vfs); + static void switchToVirtualFiles(const QString &localPath, SyncJournalDb &journal, Vfs &vfs); + auto getPropagator() { return _propagator; } // for the test signals: