diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-04-26 11:12:08 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2022-04-29 11:18:51 +0300 |
commit | 2aa0af7cea3efa5184c1969072559d3b0d647cc7 (patch) | |
tree | d8d049f8e2838e920ee12eea23bb4803af2b4684 /src/common | |
parent | 8f6ee672e17bd5a995ea6335704771ae4081df18 (diff) |
Move VFS::Off to a plugin
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/vfs.cpp | 30 | ||||
-rw-r--r-- | src/common/vfs.h | 37 |
2 files changed, 12 insertions, 55 deletions
diff --git a/src/common/vfs.cpp b/src/common/vfs.cpp index 88f770e91..c7cff04f0 100644 --- a/src/common/vfs.cpp +++ b/src/common/vfs.cpp @@ -17,12 +17,11 @@ */ #include "vfs.h" +#include "common/filesystembase.h" #include "common/version.h" #include "plugin.h" #include "syncjournaldb.h" -#include "common/filesystembase.h" - #include <QDir> #include <QPluginLoader> #include <QLoggingCategory> @@ -138,20 +137,18 @@ Vfs::AvailabilityResult Vfs::availabilityInDb(const QString &folderPath) return AvailabilityError::NoSuchItem; } -VfsOff::VfsOff(QObject *parent) - : Vfs(parent) -{ -} - -VfsOff::~VfsOff() = default; - static QString modeToPluginName(Vfs::Mode mode) { - if (mode == Vfs::WithSuffix) + switch (mode) { + case Vfs::Off: + return QStringLiteral("off"); + case Vfs::WithSuffix: return QStringLiteral("suffix"); - if (mode == Vfs::WindowsCfApi) + case Vfs::WindowsCfApi: return QStringLiteral("win"); - return QString(); + default: + Q_UNREACHABLE(); + } } Q_LOGGING_CATEGORY(lcPlugin, "plugins", QtInfoMsg) @@ -159,8 +156,6 @@ Q_LOGGING_CATEGORY(lcPlugin, "plugins", QtInfoMsg) bool OCC::isVfsPluginAvailable(Vfs::Mode mode) { // TODO: cache plugins available? - if (mode == Vfs::Off) - return true; auto name = modeToPluginName(mode); if (name.isEmpty()) return false; @@ -203,15 +198,14 @@ Vfs::Mode OCC::bestAvailableVfsMode() return Vfs::WindowsCfApi; } else if (isVfsPluginAvailable(Vfs::WithSuffix)) { return Vfs::WithSuffix; + } else if (isVfsPluginAvailable(Vfs::Off)) { + return Vfs::Off; } - return Vfs::Off; + Q_UNREACHABLE(); } std::unique_ptr<Vfs> OCC::createVfsFromPlugin(Vfs::Mode mode) { - if (mode == Vfs::Off) - return std::make_unique<VfsOff>(); - auto name = modeToPluginName(mode); if (name.isEmpty()) return nullptr; diff --git a/src/common/vfs.h b/src/common/vfs.h index f1b395dd1..56de12eff 100644 --- a/src/common/vfs.h +++ b/src/common/vfs.h @@ -281,43 +281,6 @@ protected: friend class OwncloudPropagator; }; -/// Implementation of Vfs for Vfs::Off mode - does nothing -class OCSYNC_EXPORT VfsOff : public Vfs -{ - Q_OBJECT - -public: - VfsOff(QObject* parent = nullptr); - ~VfsOff() override; - - Mode mode() const override { return Vfs::Off; } - - QString fileSuffix() const override { return QString(); } - - void stop() override {} - void unregisterFolder() override {} - - bool socketApiPinStateActionsShown() const override { return false; } - bool isHydrating() const override { return false; } - - Result<void, QString> createPlaceholder(const SyncFileItem &) override { return {}; } - - bool needsMetadataUpdate(const SyncFileItem &) override { return false; } - bool isDehydratedPlaceholder(const QString &) override { return false; } - bool statTypeVirtualFile(csync_file_stat_t *, void *) override { return false; } - - bool setPinState(const QString &, PinState) override { return true; } - Optional<PinState> pinState(const QString &) override { return PinState::AlwaysLocal; } - AvailabilityResult availability(const QString &) override { return VfsItemAvailability::AlwaysLocal; } - -public slots: - void fileStatusChanged(const QString &, SyncFileStatus) override {} - -protected: - Result<ConvertToPlaceholderResult, QString> updateMetadata(const SyncFileItem &, const QString &, const QString &) override { return { ConvertToPlaceholderResult::Ok }; } - void startImpl(const VfsSetupParams &) override { Q_EMIT started(); } -}; - /// Check whether the plugin for the mode is available. OCSYNC_EXPORT bool isVfsPluginAvailable(Vfs::Mode mode); |