return query->int64Value(0);
}
+bool SyncJournalDb::keyValueStoreGetBool(const QString &key, bool defaultValue)
+{
+ QMutexLocker locker(&_mutex);
+ if (!checkConnect()) {
+ return defaultValue;
+ }
+
+ const auto query = _queryManager.get(PreparedSqlQueryManager::GetKeyValueStoreQuery,
+ QByteArrayLiteral("SELECT value FROM key_value_store WHERE key = ?1;"), _db);
+ if (!query) {
+ return defaultValue;
+ }
+
+ query->bindValue(1, key);
+ query->exec();
+
+ if (!query->next().hasData) {
+ return defaultValue;
+ }
+
+ return query->intValue(0);
+}
+
QVariant SyncJournalDb::keyValueStoreGet(const QString &key, QVariant defaultValue)
{
QMutexLocker locker(&_mutex);
void keyValueStoreSet(const QString &key, QVariant value);
qint64 keyValueStoreGetInt(const QString &key, qint64 defaultValue);
+ bool keyValueStoreGetBool(const QString &key, bool defaultValue);
QVariant keyValueStoreGet(const QString &key, QVariant defaultValue = {});
void keyValueStoreDelete(const QString &key);
_engine->setIgnoreHiddenFiles(_definition.ignoreHiddenFiles);
+ correctPlaceholderFiles();
+
QMetaObject::invokeMethod(_engine.data(), "startSync", Qt::QueuedConnection);
emit syncStarted();
}
+void Folder::correctPlaceholderFiles()
+{
+ if (_definition.virtualFilesMode == Vfs::Off) {
+ return;
+ }
+ static const auto placeholdersCorrectedKey = QStringLiteral("placeholders_corrected");
+ const auto placeholdersCorrected = _journal.keyValueStoreGetBool(placeholdersCorrectedKey, false);
+ if (!placeholdersCorrected) {
+ qCDebug(lcFolder) << "Make sure all virtual files are placeholder files";
+ switchToVirtualFiles();
+ _journal.keyValueStoreSet(placeholdersCorrectedKey, true);
+ }
+}
+
void Folder::setSyncOptions()
{
SyncOptions opt;
void startVfs();
+ void correctPlaceholderFiles();
+
AccountStatePtr _accountState;
FolderDefinition _definition;
QString _canonicalLocalPath; // As returned with QFileInfo:canonicalFilePath. Always ends with "/"