diff --git a/src/common/vfs.cpp b/src/common/vfs.cpp index 7cfb895e16..896b31db02 100644 --- a/src/common/vfs.cpp +++ b/src/common/vfs.cpp @@ -42,20 +42,17 @@ QString Vfs::modeToString(Mode mode) return QStringLiteral("off"); } -bool Vfs::modeFromString(const QString &str, Mode *mode) +Optional Vfs::modeFromString(const QString &str) { // Note: Strings are used for config and must be stable - *mode = Off; if (str == "off") { - return true; + return Off; } else if (str == "suffix") { - *mode = WithSuffix; - return true; + return WithSuffix; } else if (str == "wincfapi") { - *mode = WindowsCfApi; - return true; + return WindowsCfApi; } - return false; + return {}; } static QString modeToPluginName(Vfs::Mode mode) diff --git a/src/common/vfs.h b/src/common/vfs.h index 372395dbc6..7d68854d8f 100644 --- a/src/common/vfs.h +++ b/src/common/vfs.h @@ -18,6 +18,7 @@ #include #include "ocsynclib.h" +#include "result.h" typedef struct csync_file_stat_s csync_file_stat_t; @@ -80,7 +81,7 @@ public: WindowsCfApi, }; static QString modeToString(Mode mode); - static bool modeFromString(const QString &str, Mode *mode); + static Optional modeFromString(const QString &str); public: Vfs(QObject* parent = nullptr); diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index d485af0474..b8bf7e519a 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -1237,7 +1237,9 @@ bool FolderDefinition::load(QSettings &settings, const QString &alias, folder->virtualFilesMode = Vfs::Off; QString vfsModeString = settings.value(QStringLiteral("virtualFilesMode")).toString(); if (!vfsModeString.isEmpty()) { - if (!Vfs::modeFromString(vfsModeString, &folder->virtualFilesMode)) { + if (auto mode = Vfs::modeFromString(vfsModeString)) { + folder->virtualFilesMode = *mode; + } else { qCWarning(lcFolder) << "Unknown virtualFilesMode:" << vfsModeString << "assuming 'off'"; } } else if (settings.value(QLatin1String("usePlaceholders")).toBool()) {