diff options
author | Matthieu Gallien <matthieu.gallien@nextcloud.com> | 2021-11-04 13:20:16 +0300 |
---|---|---|
committer | Matthieu Gallien <matthieu.gallien@nextcloud.com> | 2021-11-05 18:56:24 +0300 |
commit | 5ab13b2adc827a2ee6f9164b863aa0ebfed480a0 (patch) | |
tree | ec571ca163400dd0b41a88f63397bcf8887cd847 /src/gui | |
parent | 845e2580314ca386fe88bb04ad078de205de49ac (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.cpp | 1 | ||||
-rw-r--r-- | src/gui/folder.cpp | 7 | ||||
-rw-r--r-- | src/gui/folder.h | 2 | ||||
-rw-r--r-- | src/gui/folderman.cpp | 21 | ||||
-rw-r--r-- | src/gui/folderman.h | 2 | ||||
-rw-r--r-- | src/gui/folderwizard.cpp | 5 | ||||
-rw-r--r-- | src/gui/wizard/owncloudadvancedsetuppage.cpp | 5 |
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); |