diff --git a/src/gui/macOS/fileprovidersettingscontroller.h b/src/gui/macOS/fileprovidersettingscontroller.h index 93a024cad3..b7c1cfe0f6 100644 --- a/src/gui/macOS/fileprovidersettingscontroller.h +++ b/src/gui/macOS/fileprovidersettingscontroller.h @@ -17,6 +17,8 @@ #include #include +class QAbstractListModel; + namespace OCC { class UserInfo; @@ -41,6 +43,8 @@ public: [[nodiscard]] unsigned long long remoteStorageUsageForAccount(const QString &userIdAtHost) const; [[nodiscard]] Q_INVOKABLE float remoteStorageUsageGbForAccount(const QString &userIdAtHost) const; + [[nodiscard]] Q_INVOKABLE QAbstractListModel *materialisedItemsModelForAccount(const QString &userIdAtHost); + public slots: void setVfsEnabledForAccount(const QString &userIdAtHost, const bool setEnabled); diff --git a/src/gui/macOS/fileprovidersettingscontroller_mac.mm b/src/gui/macOS/fileprovidersettingscontroller_mac.mm index 9ede05b585..f39e492af7 100644 --- a/src/gui/macOS/fileprovidersettingscontroller_mac.mm +++ b/src/gui/macOS/fileprovidersettingscontroller_mac.mm @@ -364,6 +364,28 @@ float FileProviderSettingsController::remoteStorageUsageGbForAccount(const QStri return gbFromBytesWithOneDecimal(remoteStorageUsageForAccount(userIdAtHost)); } +QAbstractListModel *FileProviderSettingsController::materialisedItemsModelForAccount(const QString &userIdAtHost) +{ + const auto items = d->materialisedItemsForAccount(userIdAtHost); + if (items.isEmpty()) { + return nullptr; + } + + const auto model = new FileProviderMaterialisedItemsModel(this); + model->setItems(items); + + connect(this, &FileProviderSettingsController::materialisedItemsForAccountChanged, model, [this, model, userIdAtHost](const QString &accountUserIdAtHost) { + if (accountUserIdAtHost != userIdAtHost) { + return; + } + + const auto items = d->materialisedItemsForAccount(userIdAtHost); + model->setItems(items); + }); + + return model; +} + } // namespace Mac } // namespace OCC