Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>2021-11-04 13:20:16 +0300
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>2021-11-05 18:56:24 +0300
commit5ab13b2adc827a2ee6f9164b863aa0ebfed480a0 (patch)
treeec571ca163400dd0b41a88f63397bcf8887cd847 /src/gui
parent845e2580314ca386fe88bb04ad078de205de49ac (diff)
add an option to enforce use of virtual files sync folder
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/accountsettings.cpp1
-rw-r--r--src/gui/folder.cpp7
-rw-r--r--src/gui/folder.h2
-rw-r--r--src/gui/folderman.cpp21
-rw-r--r--src/gui/folderman.h2
-rw-r--r--src/gui/folderwizard.cpp5
-rw-r--r--src/gui/wizard/owncloudadvancedsetuppage.cpp5
7 files changed, 42 insertions, 1 deletions
diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp
index 43dab82a5..76cf0cc39 100644
--- a/src/gui/accountsettings.cpp
+++ b/src/gui/accountsettings.cpp
@@ -593,6 +593,7 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
ac = menu->addAction(tr("Disable virtual file support …"));
connect(ac, &QAction::triggered, this, &AccountSettings::slotDisableVfsCurrentFolder);
+ ac->setDisabled(Theme::instance()->enforceVirtualFilesSyncFolder());
}
if (Theme::instance()->showVirtualFilesOption()
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index 3a33d4542..decbb927b 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -671,7 +671,7 @@ void Folder::setVirtualFilesEnabled(bool enabled)
startVfs();
if (newMode != Vfs::Off) {
_saveInFoldersWithPlaceholders = true;
- SyncEngine::switchToVirtualFiles(path(), _journal, *_vfs);
+ switchToVirtualFiles();
}
saveToSettings();
}
@@ -688,6 +688,11 @@ void Folder::setRootPinState(PinState state)
slotNextSyncFullLocalDiscovery();
}
+void Folder::switchToVirtualFiles()
+{
+ SyncEngine::switchToVirtualFiles(path(), _journal, *_vfs);
+}
+
bool Folder::supportsSelectiveSync() const
{
return !virtualFilesEnabled() && !isVfsOnOffSwitchPending();
diff --git a/src/gui/folder.h b/src/gui/folder.h
index 6efdd1eb0..3bb96b2da 100644
--- a/src/gui/folder.h
+++ b/src/gui/folder.h
@@ -287,6 +287,8 @@ public:
bool isVfsOnOffSwitchPending() const { return _vfsOnOffPending; }
void setVfsOnOffSwitchPending(bool pending) { _vfsOnOffPending = pending; }
+ void switchToVirtualFiles();
+
/** Whether this folder should show selective sync ui */
bool supportsSelectiveSync() const;
diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp
index 5a3881480..73ad0c553 100644
--- a/src/gui/folderman.cpp
+++ b/src/gui/folderman.cpp
@@ -292,6 +292,11 @@ void FolderMan::setupFoldersHelper(QSettings &settings, AccountStatePtr account,
SyncJournalDb::maybeMigrateDb(folderDefinition.localPath, folderDefinition.absoluteJournalPath());
}
+ const auto switchToVfs = isSwitchToVfsNeeded(folderDefinition);
+ if (switchToVfs) {
+ folderDefinition.virtualFilesMode = bestAvailableVfsMode();
+ }
+
auto vfs = createVfsFromPlugin(folderDefinition.virtualFilesMode);
if (!vfs) {
// TODO: Must do better error handling
@@ -300,6 +305,9 @@ void FolderMan::setupFoldersHelper(QSettings &settings, AccountStatePtr account,
Folder *f = addFolderInternal(std::move(folderDefinition), account.data(), std::move(vfs));
if (f) {
+ if (switchToVfs) {
+ f->switchToVirtualFiles();
+ }
// Migrate the old "usePlaceholders" setting to the root folder pin state
if (settings.value(QLatin1String(versionC), 1).toInt() == 1
&& settings.value(QLatin1String("usePlaceholders"), false).toBool()) {
@@ -837,6 +845,19 @@ bool FolderMan::pushNotificationsFilesReady(Account *account)
return pushFilesAvailable && pushNotifications && pushNotifications->isReady();
}
+bool FolderMan::isSwitchToVfsNeeded(const FolderDefinition &folderDefinition) const
+{
+ auto result = false;
+ if (ENFORCE_VIRTUAL_FILES_SYNC_FOLDER &&
+ folderDefinition.virtualFilesMode != bestAvailableVfsMode() &&
+ folderDefinition.virtualFilesMode == Vfs::Off &&
+ OCC::Theme::instance()->showVirtualFilesOption()) {
+ result = true;
+ }
+
+ return result;
+}
+
void FolderMan::slotEtagPollTimerTimeout()
{
qCInfo(lcFolderMan) << "Etag poll timer timeout";
diff --git a/src/gui/folderman.h b/src/gui/folderman.h
index c3a1b1466..5a6c234e7 100644
--- a/src/gui/folderman.h
+++ b/src/gui/folderman.h
@@ -324,6 +324,8 @@ private:
bool pushNotificationsFilesReady(Account *account);
+ bool isSwitchToVfsNeeded(const FolderDefinition &folderDefinition) const;
+
QSet<Folder *> _disabledFolders;
Folder::Map _folderMap;
QString _folderConfigPath;
diff --git a/src/gui/folderwizard.cpp b/src/gui/folderwizard.cpp
index 3200f4210..b240d7235 100644
--- a/src/gui/folderwizard.cpp
+++ b/src/gui/folderwizard.cpp
@@ -545,6 +545,11 @@ void FolderWizardSelectiveSync::initializePage()
_virtualFilesCheckBox->setChecked(bestAvailableVfsMode() == Vfs::WindowsCfApi);
_virtualFilesCheckBox->setEnabled(true);
_virtualFilesCheckBox->setText(tr("Use virtual files instead of downloading content immediately %1").arg(bestAvailableVfsMode() == Vfs::WindowsCfApi ? QString() : tr("(experimental)")));
+
+ if (Theme::instance()->enforceVirtualFilesSyncFolder()) {
+ _virtualFilesCheckBox->setChecked(true);
+ _virtualFilesCheckBox->setDisabled(true);
+ }
}
//
}
diff --git a/src/gui/wizard/owncloudadvancedsetuppage.cpp b/src/gui/wizard/owncloudadvancedsetuppage.cpp
index 88b522931..0d8cb6c1a 100644
--- a/src/gui/wizard/owncloudadvancedsetuppage.cpp
+++ b/src/gui/wizard/owncloudadvancedsetuppage.cpp
@@ -59,6 +59,11 @@ OwncloudAdvancedSetupPage::OwncloudAdvancedSetupPage(OwncloudWizard *wizard)
connect(_ui.pbSelectLocalFolder, &QAbstractButton::clicked, this, &OwncloudAdvancedSetupPage::slotSelectFolder);
setButtonText(QWizard::FinishButton, tr("Connect"));
+ if (Theme::instance()->enforceVirtualFilesSyncFolder()) {
+ _ui.rSyncEverything->setDisabled(true);
+ _ui.rSelectiveSync->setDisabled(true);
+ }
+
connect(_ui.rSyncEverything, &QAbstractButton::clicked, this, &OwncloudAdvancedSetupPage::slotSyncEverythingClicked);
connect(_ui.rSelectiveSync, &QAbstractButton::clicked, this, &OwncloudAdvancedSetupPage::slotSelectiveSyncClicked);
connect(_ui.rVirtualFileSync, &QAbstractButton::clicked, this, &OwncloudAdvancedSetupPage::slotVirtualFileSyncClicked);