diff --git a/src/gui/application.cpp b/src/gui/application.cpp index bea238ecc0a79..7ef731f907adf 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -405,7 +405,20 @@ Application::Application(int &argc, char **argv) } #if WITH_LIBCLOUDPROVIDERS - _gui->setupCloudProviders(); + // Configuration: showCloudProvidersInFileManager (default: true) + // This setting controls whether Nextcloud folders are exposed via the freedesktop + // CloudProviders D-Bus interface to file managers (Nautilus, etc.). + // + // Note: This is a config-file-only setting, not exposed in the UI, as it addresses + // a niche use case. + // + // Future: This global setting should be deprecated once file managers implement + // per-entry visibility controls for CloudProviders mount points. When that happens, + // users will be able to selectively hide individual cloud provider entries directly + // in their file manager preferences. + if (ConfigFile().showCloudProvidersInFileManager()) { + _gui->setupCloudProviders(); + } #endif if (_theme->doNotUseProxy()) { diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp index a04e71feb2862..348dffd955b99 100644 --- a/src/libsync/configfile.cpp +++ b/src/libsync/configfile.cpp @@ -231,6 +231,19 @@ void ConfigFile::setShowInExplorerNavigationPane(bool show) settings.sync(); } +bool ConfigFile::showCloudProvidersInFileManager() const +{ + QSettings settings(configFile(), QSettings::IniFormat); + return settings.value(showCloudProvidersInFileManagerC, true).toBool(); +} + +void ConfigFile::setShowCloudProvidersInFileManager(bool show) +{ + QSettings settings(configFile(), QSettings::IniFormat); + settings.setValue(showCloudProvidersInFileManagerC, show); + settings.sync(); +} + int ConfigFile::timeout() const { QSettings settings(configFile(), QSettings::IniFormat); diff --git a/src/libsync/configfile.h b/src/libsync/configfile.h index 86b77fadd235b..bf1b2e8f94c6b 100644 --- a/src/libsync/configfile.h +++ b/src/libsync/configfile.h @@ -172,6 +172,9 @@ class OWNCLOUDSYNC_EXPORT ConfigFile [[nodiscard]] bool showInExplorerNavigationPane() const; void setShowInExplorerNavigationPane(bool show); + [[nodiscard]] bool showCloudProvidersInFileManager() const; + void setShowCloudProvidersInFileManager(bool show); + [[nodiscard]] int timeout() const; [[nodiscard]] qint64 chunkSize() const; [[nodiscard]] qint64 maxChunkSize() const; @@ -296,6 +299,7 @@ class OWNCLOUDSYNC_EXPORT ConfigFile static constexpr char showQuotaWarningNotificationsC[] = "showQuotaWarningNotifications"; static constexpr char showChatNotificationsC[] = "showChatNotifications"; static constexpr char showInExplorerNavigationPaneC[] = "showInExplorerNavigationPane"; + static constexpr char showCloudProvidersInFileManagerC[] = "showCloudProvidersInFileManager"; static constexpr char confirmExternalStorageC[] = "confirmExternalStorage"; static constexpr char useNewBigFolderSizeLimitC[] = "useNewBigFolderSizeLimit"; static constexpr char newBigFolderSizeLimitC[] = "newBigFolderSizeLimit";