option( WITH_PROVIDERS "Build with providers list" ON )
+option( ENFORCE_VIRTUAL_FILES_SYNC_FOLDER "Enforce use of virtual files sync folder when available" OFF )
## Theming options
set(NEXTCLOUD_BACKGROUND_COLOR "#0082c9" CACHE STRING "Default Nextcloud background color")
#cmakedefine APPLICATION_OCSP_STAPLING_ENABLED "@APPLICATION_OCSP_STAPLING_ENABLED@"
#cmakedefine APPLICATION_FORBID_BAD_SSL "@APPLICATION_FORBID_BAD_SSL@"
#define APPLICATION_DOTVIRTUALFILE_SUFFIX "." APPLICATION_VIRTUALFILE_SUFFIX
+#cmakedefine01 ENFORCE_VIRTUAL_FILES_SYNC_FOLDER
#cmakedefine ZLIB_FOUND @ZLIB_FOUND@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include "config.h"
#include "vfs.h"
#include "plugin.h"
#include "version.h"
ac = menu->addAction(tr("Disable virtual file support …"));
connect(ac, &QAction::triggered, this, &AccountSettings::slotDisableVfsCurrentFolder);
+ ac->setDisabled(Theme::instance()->enforceVirtualFilesSyncFolder());
}
if (Theme::instance()->showVirtualFilesOption()
startVfs();
if (newMode != Vfs::Off) {
_saveInFoldersWithPlaceholders = true;
- SyncEngine::switchToVirtualFiles(path(), _journal, *_vfs);
+ switchToVirtualFiles();
}
saveToSettings();
}
slotNextSyncFullLocalDiscovery();
}
+void Folder::switchToVirtualFiles()
+{
+ SyncEngine::switchToVirtualFiles(path(), _journal, *_vfs);
+}
+
bool Folder::supportsSelectiveSync() const
{
return !virtualFilesEnabled() && !isVfsOnOffSwitchPending();
bool isVfsOnOffSwitchPending() const { return _vfsOnOffPending; }
void setVfsOnOffSwitchPending(bool pending) { _vfsOnOffPending = pending; }
+ void switchToVirtualFiles();
+
/** Whether this folder should show selective sync ui */
bool supportsSelectiveSync() const;
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
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()) {
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";
bool pushNotificationsFilesReady(Account *account);
+ bool isSwitchToVfsNeeded(const FolderDefinition &folderDefinition) const;
+
QSet<Folder *> _disabledFolders;
Folder::Map _folderMap;
QString _folderConfigPath;
_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);
+ }
}
//
}
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);
return ConfigFile().showExperimentalOptions() || vfsMode == Vfs::WindowsCfApi;
}
+bool Theme::enforceVirtualFilesSyncFolder() const
+{
+ const auto vfsMode = bestAvailableVfsMode();
+ return ENFORCE_VIRTUAL_FILES_SYNC_FOLDER && vfsMode != OCC::Vfs::Off;
+}
+
QColor Theme::errorBoxTextColor() const
{
return QColor{"white"};
*/
virtual bool showVirtualFilesOption() const;
+ virtual bool enforceVirtualFilesSyncFolder() const;
+
/** @return color for the ErrorBox text. */
virtual QColor errorBoxTextColor() const;