Expose local storage usage for account in gigabytes to QML

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2023-09-14 15:52:04 +08:00
parent 2105596643
commit 18ed46ef77
No known key found for this signature in database
GPG key ID: C839200C384636B0
2 changed files with 25 additions and 2 deletions

View file

@ -34,13 +34,15 @@ public:
[[nodiscard]] QStringList vfsEnabledAccounts() const; [[nodiscard]] QStringList vfsEnabledAccounts() const;
[[nodiscard]] Q_INVOKABLE bool vfsEnabledForAccount(const QString &userIdAtHost) const; [[nodiscard]] Q_INVOKABLE bool vfsEnabledForAccount(const QString &userIdAtHost) const;
[[nodiscard]] unsigned long long localStorageUsageForAccount(const QString &userIdAtHost) const;
[[nodiscard]] Q_INVOKABLE float localStorageUsageGbForAccount(const QString &userIdAtHost) const;
public slots: public slots:
void setVfsEnabledForAccount(const QString &userIdAtHost, const bool setEnabled); void setVfsEnabledForAccount(const QString &userIdAtHost, const bool setEnabled);
signals: signals:
void vfsEnabledAccountsChanged(); void vfsEnabledAccountsChanged();
void vfsStorageUseForAccountChanged(const QString &userIdAtHost); void localStorageUsageForAccountChanged(const QString &userIdAtHost);
private: private:
explicit FileProviderSettingsController(QObject *parent = nullptr); explicit FileProviderSettingsController(QObject *parent = nullptr);

View file

@ -133,7 +133,17 @@ public:
} }
return overallActResult; return overallActResult;
}
[[nodiscard]] unsigned long long localStorageUsageForAccount(const QString &userIdAtHost) const
{
// Return cached value as we fetch asynchronously on initialisation of this class.
// We will then emit a signal when the new value is found.
NSNumber *const storageUsage = [_storageUsage objectForKey:userIdAtHost.toNSString()];
if (storageUsage == nil) {
return 0;
}
return storageUsage.unsignedLongLongValue;
} }
private: private:
@ -169,7 +179,7 @@ private:
_storageUsage = mutableStorageDictCopy.copy; _storageUsage = mutableStorageDictCopy.copy;
const auto qDomainIdentifier = QString::fromNSString(domain.identifier); const auto qDomainIdentifier = QString::fromNSString(domain.identifier);
emit q->vfsStorageUseForAccountChanged(qDomainIdentifier); emit q->localStorageUsageForAccountChanged(qDomainIdentifier);
}; };
[enumerator enumerateItemsForObserver:storageUseObserver startingAtPage:NSFileProviderInitialPageSortedByName]; [enumerator enumerateItemsForObserver:storageUseObserver startingAtPage:NSFileProviderInitialPageSortedByName];
@ -240,6 +250,17 @@ void FileProviderSettingsController::setVfsEnabledForAccount(const QString &user
} }
} }
unsigned long long FileProviderSettingsController::localStorageUsageForAccount(const QString &userIdAtHost) const
{
return d->localStorageUsageForAccount(userIdAtHost);
}
float FileProviderSettingsController::localStorageUsageGbForAccount(const QString &userIdAtHost) const
{
static constexpr auto bytesIn100Mb = 1ULL * 1000ULL * 1000ULL * 100ULL;
return (float)(localStorageUsageForAccount(userIdAtHost) / bytesIn100Mb) / 10.0;
}
} // namespace Mac } // namespace Mac
} // namespace OCC } // namespace OCC