Merge pull request #8002 from nextcloud/backport/7933/stable-3.16

[stable-3.16] Add option to disable virtual files syncing on Windows.
This commit is contained in:
Matthieu Gallien 2025-03-13 12:24:36 +01:00 committed by GitHub
commit 173b945f60
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 14 additions and 5 deletions

View File

@ -52,6 +52,7 @@ option( BUILD_UPDATER "Build updater" ON )
option( WITH_PROVIDERS "Build with providers list" ON )
option( ENFORCE_VIRTUAL_FILES_SYNC_FOLDER "Enforce use of virtual files sync folder when available" OFF )
option( DISABLE_VIRTUAL_FILES_SYNC_FOLDER "Disable use of virtual files sync folder even when available" OFF )
option(ENFORCE_SINGLE_ACCOUNT "Enforce use of a single account in desktop client" OFF)

View File

@ -36,6 +36,7 @@
#define APPLICATION_DOTVIRTUALFILE_SUFFIX "." APPLICATION_VIRTUALFILE_SUFFIX
#define APPLICATION_URI_HANDLER_SCHEME "@APPLICATION_URI_HANDLER_SCHEME@"
#cmakedefine01 ENFORCE_VIRTUAL_FILES_SYNC_FOLDER
#cmakedefine01 DISABLE_VIRTUAL_FILES_SYNC_FOLDER
#cmakedefine DO_NOT_USE_PROXY "@DO_NOT_USE_PROXY@"
#cmakedefine ENFORCE_SINGLE_ACCOUNT "@ENFORCE_SINGLE_ACCOUNT@"
#cmakedefine01 APPLICATION_DISPLAY_LEGACY_IMPORT_DIALOG

View File

@ -726,8 +726,8 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
}
if (const auto mode = bestAvailableVfsMode();
Theme::instance()->showVirtualFilesOption()
&& !folder->virtualFilesEnabled() && Vfs::checkAvailability(folder->path(), mode)) {
!Theme::instance()->disableVirtualFilesSyncFolder() &&
Theme::instance()->showVirtualFilesOption() && !folder->virtualFilesEnabled() && Vfs::checkAvailability(folder->path(), mode)) {
if (mode == Vfs::WindowsCfApi || ConfigFile().showExperimentalOptions()) {
ac = menu->addAction(tr("Enable virtual file support %1 …").arg(mode == Vfs::WindowsCfApi ? QString() : tr("(experimental)")));
// TODO: remove when UX decision is made

View File

@ -991,7 +991,8 @@ bool FolderMan::pushNotificationsFilesReady(Account *account)
bool FolderMan::isSwitchToVfsNeeded(const FolderDefinition &folderDefinition) const
{
auto result = false;
if (ENFORCE_VIRTUAL_FILES_SYNC_FOLDER &&
if (!DISABLE_VIRTUAL_FILES_SYNC_FOLDER &&
ENFORCE_VIRTUAL_FILES_SYNC_FOLDER &&
folderDefinition.virtualFilesMode != bestAvailableVfsMode() &&
folderDefinition.virtualFilesMode == Vfs::Off &&
OCC::Theme::instance()->showVirtualFilesOption()) {

View File

@ -572,7 +572,7 @@ FolderWizardSelectiveSync::FolderWizardSelectiveSync(const AccountPtr &account)
_selectiveSync = new SelectiveSyncWidget(account, this);
layout->addWidget(_selectiveSync);
if (Theme::instance()->showVirtualFilesOption() && bestAvailableVfsMode() != Vfs::Off) {
if (!Theme::instance()->disableVirtualFilesSyncFolder() && Theme::instance()->showVirtualFilesOption() && bestAvailableVfsMode() != Vfs::Off) {
_virtualFilesCheckBox = new QCheckBox(tr("Use virtual files instead of downloading content immediately %1").arg(bestAvailableVfsMode() == Vfs::WindowsCfApi ? QString() : tr("(experimental)")));
connect(_virtualFilesCheckBox, &QCheckBox::clicked, this, &FolderWizardSelectiveSync::virtualFilesCheckboxClicked);
connect(_virtualFilesCheckBox, &QCheckBox::checkStateChanged, this, [this](int state) {

View File

@ -158,7 +158,7 @@ void OwncloudAdvancedSetupPage::initializePage()
{
WizardCommon::initErrorLabel(_ui.errorLabel);
if (!Theme::instance()->showVirtualFilesOption()
if (Theme::instance()->disableVirtualFilesSyncFolder() || !Theme::instance()->showVirtualFilesOption()
#ifndef BUILD_FILE_PROVIDER_MODULE
|| bestAvailableVfsMode() == Vfs::Off
#endif

View File

@ -960,6 +960,11 @@ bool Theme::enforceVirtualFilesSyncFolder() const
return ENFORCE_VIRTUAL_FILES_SYNC_FOLDER && vfsMode != OCC::Vfs::Off;
}
bool Theme::disableVirtualFilesSyncFolder() const
{
return DISABLE_VIRTUAL_FILES_SYNC_FOLDER;
}
QColor Theme::defaultColor()
{
return QColor{NEXTCLOUD_BACKGROUND_COLOR};

View File

@ -596,6 +596,7 @@ public:
[[nodiscard]] bool showVirtualFilesOption() const;
[[nodiscard]] bool enforceVirtualFilesSyncFolder() const;
[[nodiscard]] bool disableVirtualFilesSyncFolder() const;
static QColor defaultColor();