diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 6bee0c9353..03a8062e2b 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -33,6 +33,7 @@ #include "creds/httpcredentialsgui.h" #include "tooltipupdater.h" #include "filesystem.h" +#include "wizard/owncloudwizard.h" #include @@ -306,7 +307,7 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos) if (!folderPaused) { ac = menu->addAction(tr("Force sync now")); - if (folderMan->currentSyncFolder() == folderMan->folder(alias)) { + if (folderMan->currentSyncFolder() == folder) { ac->setText(tr("Restart sync")); } ac->setEnabled(folderConnected); @@ -318,6 +319,29 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos) ac = menu->addAction(tr("Remove folder sync connection")); connect(ac, &QAction::triggered, this, &AccountSettings::slotRemoveCurrentFolder); + + if (ConfigFile().showExperimentalOptions() || folder->useVirtualFiles()) { + ac = menu->addAction(tr("Create virtual files for new files (Experimental)")); + ac->setCheckable(true); + ac->setChecked(folder->useVirtualFiles()); + connect(ac, &QAction::toggled, this, [folder, this](bool checked) { + if (!checked) { + if (folder) + folder->setUseVirtualFiles(false); + // Make sure the size is recomputed as the virtual file indicator changes + ui->_folderList->doItemsLayout(); + return; + } + OwncloudWizard::askExperimentalVirtualFilesFeature([folder, this](bool enable) { + if (enable && folder) + folder->setUseVirtualFiles(enable); + // Make sure the size is recomputed as the virtual file indicator changes + ui->_folderList->doItemsLayout(); + }); + }); + } + + menu->popup(tv->mapToGlobal(pos)); } diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index 2e06986f86..b2bfd1fa2e 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -534,6 +534,13 @@ void Folder::downloadVirtualFile(const QString &_relativepath) slotScheduleThisFolder(); } + +void Folder::setUseVirtualFiles(bool enabled) +{ + _definition.useVirtualFiles = enabled; + saveToSettings(); +} + void Folder::saveToSettings() const { // Remove first to make sure we don't get duplicates diff --git a/src/gui/folder.h b/src/gui/folder.h index 892165e103..1ea815febb 100644 --- a/src/gui/folder.h +++ b/src/gui/folder.h @@ -244,6 +244,7 @@ public: /** new files are downloaded as virtual files */ bool useVirtualFiles() { return _definition.useVirtualFiles; } + void setUseVirtualFiles(bool enabled); signals: void syncStateChange();