From f1c7811962526c2e5f376e42fe43f133fa388509 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 9 Jan 2024 22:48:59 +0800 Subject: [PATCH] Add method to signal file provider domain via file provider settings controller Signed-off-by: Claudio Cambra --- .../macOS/fileprovidersettingscontroller.h | 1 + .../fileprovidersettingscontroller_mac.mm | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/gui/macOS/fileprovidersettingscontroller.h b/src/gui/macOS/fileprovidersettingscontroller.h index 72d983144..2bfa68e35 100644 --- a/src/gui/macOS/fileprovidersettingscontroller.h +++ b/src/gui/macOS/fileprovidersettingscontroller.h @@ -49,6 +49,7 @@ public slots: void setVfsEnabledForAccount(const QString &userIdAtHost, const bool setEnabled); void createEvictionWindowForAccount(const QString &userIdAtHost); + void signalFileProviderDomain(const QString &userIdAtHost); void createDebugArchive(const QString &userIdAtHost); signals: diff --git a/src/gui/macOS/fileprovidersettingscontroller_mac.mm b/src/gui/macOS/fileprovidersettingscontroller_mac.mm index f9be6ab1c..9629b07a5 100644 --- a/src/gui/macOS/fileprovidersettingscontroller_mac.mm +++ b/src/gui/macOS/fileprovidersettingscontroller_mac.mm @@ -22,6 +22,7 @@ #include "gui/macOS/fileprovider.h" #include "gui/macOS/fileprovideritemmetadata.h" #include "gui/macOS/fileprovidermaterialiseditemsmodel.h" +#include "gui/macOS/fileproviderutils.h" // Objective-C imports #import @@ -161,6 +162,24 @@ public: return _materialisedFiles.value(userIdAtHost); } + void signalFileProviderDomain(const QString &userIdAtHost) const + { + qCInfo(lcFileProviderSettingsController) << "Signalling file provider domain" << userIdAtHost; + NSFileProviderDomain * const domain = FileProviderUtils::domainForIdentifier(userIdAtHost); + NSFileProviderManager * const manager = [NSFileProviderManager managerForDomain:domain]; + [manager signalEnumeratorForContainerItemIdentifier:NSFileProviderRootContainerItemIdentifier + completionHandler:^(NSError *const error) { + if (error != nil) { + qCWarning(lcFileProviderSettingsController) << "Could not signal file provider domain, error" + << error.localizedDescription; + return; + } + + qCInfo(lcFileProviderSettingsController) << "Successfully signalled file provider domain"; + // TODO: Provide some feedback in the UI + }]; + } + private: [[nodiscard]] NSArray *nsEnabledAccounts() const { @@ -386,6 +405,11 @@ void FileProviderSettingsController::createEvictionWindowForAccount(const QStrin dialog->show(); } +void FileProviderSettingsController::signalFileProviderDomain(const QString &userIdAtHost) +{ + d->signalFileProviderDomain(userIdAtHost); +} + void FileProviderSettingsController::createDebugArchive(const QString &userIdAtHost) { const auto filename = QFileDialog::getSaveFileName(nullptr, -- 2.30.2