Add method to generate materialised item models in settings controller

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2023-10-11 10:40:22 +08:00
parent 85b3a135b6
commit c1a5e788f8
No known key found for this signature in database
GPG Key ID: C839200C384636B0
2 changed files with 26 additions and 0 deletions

View File

@ -17,6 +17,8 @@
#include <QObject>
#include <QtQuickWidgets/QtQuickWidgets>
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);

View File

@ -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