vfs: Improve modeFromString() signature
authorChristian Kamm <mail@ckamm.de>
Thu, 15 Nov 2018 08:01:46 +0000 (09:01 +0100)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 09:58:24 +0000 (10:58 +0100)
src/common/vfs.cpp
src/common/vfs.h
src/gui/folder.cpp

index 7cfb895e1689d1032101af350aafee95a40a83ec..896b31db021ac179fa76358794ce130d8d86a64a 100644 (file)
@@ -42,20 +42,17 @@ QString Vfs::modeToString(Mode mode)
     return QStringLiteral("off");
 }
 
-bool Vfs::modeFromString(const QString &str, Mode *mode)
+Optional<Vfs::Mode> 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)
index 372395dbc6b00beeef3135c47ae7b04d17c5d109..7d68854d8fdbb61c70324081a11b22aacfa1b898 100644 (file)
@@ -18,6 +18,7 @@
 #include <QSharedPointer>
 
 #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<Mode> modeFromString(const QString &str);
 
 public:
     Vfs(QObject* parent = nullptr);
index 270223810782164178c87adb194bdc2089d261f5..da85ea4b5c3be80815f869c7c102253cea15aeea 100644 (file)
@@ -1236,7 +1236,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()) {