Bugfix. Take root folder's files size into account when displaying the total size...
authoralex-z <blackslayer4@gmail.com>
Sun, 15 May 2022 19:38:21 +0000 (22:38 +0300)
committeralex-z <blackslayer4@gmail.com>
Mon, 16 May 2022 14:40:30 +0000 (17:40 +0300)
Signed-off-by: alex-z <blackslayer4@gmail.com>
src/gui/selectivesyncdialog.cpp
src/gui/selectivesyncdialog.h

index 919a74ae88cc3cc812b4ddb84c84f21b4871c6e8..06efaf90b2cc75b99259c8393bf4a76527ab46ae 100644 (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;
 }
 
 
index 44e2c1ea623fcc574ac500b6d2fb387df0366f3f..d4ecd07e8522c07859c2020b9743208be54b9017 100644 (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;
 };
 
 /**