Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authoralex-z <blackslayer4@gmail.com>2022-05-15 22:38:21 +0300
committeralex-z <blackslayer4@gmail.com>2022-05-16 17:40:30 +0300
commit101a92faf395cd2b22cb45ac4d543c6779a995e2 (patch)
treecdb2046f01f429cd608257bfef4d4160a565686c /src/gui
parent71439f2ef664b2c648a51e8b12047136f285e302 (diff)
Bugfix. Take root folder's files size into account when displaying the total size in selective sync dialog.
Signed-off-by: alex-z <blackslayer4@gmail.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/selectivesyncdialog.cpp22
-rw-r--r--src/gui/selectivesyncdialog.h3
2 files changed, 24 insertions, 1 deletions
diff --git a/src/gui/selectivesyncdialog.cpp b/src/gui/selectivesyncdialog.cpp
index 919a74ae8..06efaf90b 100644
--- a/src/gui/selectivesyncdialog.cpp
+++ b/src/gui/selectivesyncdialog.cpp
@@ -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;
}
diff --git a/src/gui/selectivesyncdialog.h b/src/gui/selectivesyncdialog.h
index 44e2c1ea6..d4ecd07e8 100644
--- a/src/gui/selectivesyncdialog.h
+++ b/src/gui/selectivesyncdialog.h
@@ -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;
};
/**