From: Olivier Goffart Date: Thu, 26 Nov 2020 08:56:52 +0000 (+0100) Subject: Account Settings: Add a context menu entry to enable or disable virtual files X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~21^2~468^2~471 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=94e63ef7b975986559222082664176474b1b03fd;p=nextcloud-desktop.git Account Settings: Add a context menu entry to enable or disable virtual files Issue #6725 --- diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index ae0139ab9..13e1b9e22 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -36,6 +36,7 @@ #include "encryptfolderjob.h" #include "syncresult.h" #include "ignorelisttablewidget.h" +#include "wizard/owncloudwizard.h" #include @@ -425,7 +426,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); @@ -437,6 +438,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 28c248cef..1d38acfcf 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -544,6 +544,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 bd659ba7e..b63be42d1 100644 --- a/src/gui/folder.h +++ b/src/gui/folder.h @@ -236,6 +236,7 @@ public: /** new files are downloaded as virtual files */ bool useVirtualFiles() { return _definition.useVirtualFiles; } + void setUseVirtualFiles(bool enabled); signals: void syncStateChange();