Account Settings: Add a context menu entry to enable or disable virtual files
authorOlivier Goffart <ogoffart@woboq.com>
Thu, 26 Nov 2020 08:56:52 +0000 (09:56 +0100)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 09:58:12 +0000 (10:58 +0100)
Issue #6725

src/gui/accountsettings.cpp
src/gui/folder.cpp
src/gui/folder.h

index ae0139ab919c725cdae09f7208bbe57378a7392b..13e1b9e221ed2b768bf89f2c36f197f46eea9540 100644 (file)
@@ -36,6 +36,7 @@
 #include "encryptfolderjob.h"
 #include "syncresult.h"
 #include "ignorelisttablewidget.h"
+#include "wizard/owncloudwizard.h"
 
 #include <cmath>
 
@@ -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));
 }
 
index 28c248cef8c99a84c2de5830ec041093a6b62d32..1d38acfcf8c8e78115b591c0d67676e03f3ddfe2 100644 (file)
@@ -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
index bd659ba7ee2b87cefa564014ab9f404a652598ad..b63be42d124fc1b2dbe62c25c2517545419fb57f 100644 (file)
@@ -236,6 +236,7 @@ public:
 
     /** new files are downloaded as virtual files */
     bool useVirtualFiles() { return _definition.useVirtualFiles; }
+    void setUseVirtualFiles(bool enabled);
 
 signals:
     void syncStateChange();