Merge pull request #4532 from nextcloud/bugfix/selective-sync-total-size-displayed

Bugfix. Take root folder's files size into account when displaying the total size in selective sync dialog.
This commit is contained in:
allexzander 2022-05-16 17:40:53 +03:00 committed by GitHub
commit 4d3b6d1d1e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 1 deletions

View file

@ -117,6 +117,8 @@ void SelectiveSyncWidget::refreshFolders()
job->setProperties(props);
connect(job, &LsColJob::directoryListingSubfolders,
this, &SelectiveSyncWidget::slotUpdateDirectories);
connect(job, &LsColJob::directoryListingSubfolders,
this, &SelectiveSyncWidget::slotUpdateRootFolderFilesSize);
connect(job, &LsColJob::finishedWithError,
this, &SelectiveSyncWidget::slotLscolFinishedWithError);
connect(job, &LsColJob::directoryListingIterated,
@ -288,6 +290,24 @@ void SelectiveSyncWidget::slotUpdateDirectories(QStringList list)
root->setExpanded(true);
}
void SelectiveSyncWidget::slotUpdateRootFolderFilesSize(const QStringList &subfolders)
{
const auto job = qobject_cast<LsColJob *>(sender());
if (!job) {
qWarning() << "slotUpdateRootFolderFilesSize must have a valid sender";
return;
}
_rootFilesSize = 0;
for (auto it = std::cbegin(job->_folderInfos); it != std::cend(job->_folderInfos); ++it) {
if (!subfolders.contains(it.key())) {
_rootFilesSize += it.value().size;
}
}
}
void SelectiveSyncWidget::slotLscolFinishedWithError(QNetworkReply *r)
{
if (r->error() == QNetworkReply::ContentNotFoundError) {
@ -454,7 +474,7 @@ qint64 SelectiveSyncWidget::estimatedSize(QTreeWidgetItem *root)
// We did not load from the server so we have no idea how much we will sync from this branch
return -1;
}
return result;
return result + _rootFilesSize;
}

View file

@ -56,6 +56,7 @@ public:
private slots:
void slotUpdateDirectories(QStringList);
void slotUpdateRootFolderFilesSize(const QStringList &subfolders);
void slotItemExpanded(QTreeWidgetItem *);
void slotItemChanged(QTreeWidgetItem *, int);
void slotLscolFinishedWithError(QNetworkReply *);
@ -81,6 +82,8 @@ private:
ExcludedFiles _excludedFiles;
QStringList _encryptedPaths;
qint64 _rootFilesSize = 0;
};
/**