#include "ocsynclib.h"
#include "result.h"
+#include "syncfilestatus.h"
typedef struct csync_file_stat_s csync_file_stat_t;
*/
virtual bool statTypeVirtualFile(csync_file_stat_t *stat, void *stat_data) = 0;
+public slots:
+ /** Update in-sync state based on SyncFileStatusTracker signal.
+ *
+ * For some vfs plugins the icons aren't based on SocketAPI but rather on data shared
+ * via the vfs plugin. The connection to SyncFileStatusTracker allows both to be based
+ * on the same data.
+ */
+ virtual void fileStatusChanged(const QString &systemFileName, SyncFileStatus fileStatus) = 0;
+
signals:
/// Emitted when a user-initiated hydration starts
void beginHydrating();
bool isDehydratedPlaceholder(const QString &) override { return false; }
bool statTypeVirtualFile(csync_file_stat_t *, void *) override { return false; }
+
+public slots:
+ void fileStatusChanged(const QString &, SyncFileStatus) override {}
};
/// Check whether the plugin for the mode is available.
vfsParams.providerName = Theme::instance()->appNameGUI();
vfsParams.providerVersion = Theme::instance()->version();
- connect(_vfs.data(), &OCC::Vfs::beginHydrating, this, &Folder::slotHydrationStarts);
- connect(_vfs.data(), &OCC::Vfs::doneHydrating, this, &Folder::slotHydrationDone);
+ connect(_vfs.data(), &Vfs::beginHydrating, this, &Folder::slotHydrationStarts);
+ connect(_vfs.data(), &Vfs::doneHydrating, this, &Folder::slotHydrationDone);
+
+ connect(&_engine->syncFileStatusTracker(), &SyncFileStatusTracker::fileStatusChanged,
+ _vfs.data(), &Vfs::fileStatusChanged);
_vfs->registerFolder(vfsParams); // Do this always?
_vfs->start(vfsParams);
_vfs->stop();
_vfs->unregisterFolder();
+ disconnect(_vfs.data(), 0, this, 0);
+ disconnect(&_engine->syncFileStatusTracker(), 0, _vfs.data(), 0);
+
_vfs.reset(createVfsFromPlugin(newMode).release());
_definition.virtualFilesMode = newMode;
bool isDehydratedPlaceholder(const QString &filePath) override;
bool statTypeVirtualFile(csync_file_stat_t *stat, void *stat_data) override;
+
+public slots:
+ void fileStatusChanged(const QString &, SyncFileStatus) override {}
};
class SuffixVfsPluginFactory : public QObject, public DefaultPluginFactory<VfsSuffix>