aboutsummaryrefslogtreecommitdiff
path: root/backends/cloud/folderdownloadrequest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/cloud/folderdownloadrequest.cpp')
-rw-r--r--backends/cloud/folderdownloadrequest.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/backends/cloud/folderdownloadrequest.cpp b/backends/cloud/folderdownloadrequest.cpp
index 6cf55b28cf..bbb3c646ac 100644
--- a/backends/cloud/folderdownloadrequest.cpp
+++ b/backends/cloud/folderdownloadrequest.cpp
@@ -21,6 +21,8 @@
*/
#include "backends/cloud/folderdownloadrequest.h"
+#include "backends/cloud/downloadrequest.h"
+#include "backends/cloud/id/iddownloadrequest.h"
#include "common/debug.h"
#include "gui/downloaddialog.h"
@@ -133,9 +135,18 @@ void FolderDownloadRequest::finishDownload(Common::Array<StorageFile> &files) {
if (_fileArrayCallback) (*_fileArrayCallback)(Storage::FileArrayResponse(this, files));
}
-double FolderDownloadRequest::getProgress() {
- if (_totalFiles == 0) return 0;
- return (double)(_totalFiles - _files.size()) / (double)(_totalFiles);
+double FolderDownloadRequest::getProgress() const {
+ if (_totalFiles == 0) return 0;
+
+ double currentFileProgress = 0;
+ DownloadRequest *downloadRequest = dynamic_cast<DownloadRequest *>(_workingRequest);
+ if (downloadRequest != nullptr) currentFileProgress = downloadRequest->getProgress();
+ else {
+ Id::IdDownloadRequest *idDownloadRequest = dynamic_cast<Id::IdDownloadRequest *>(_workingRequest);
+ if (idDownloadRequest != nullptr) currentFileProgress = idDownloadRequest->getProgress();
+ }
+
+ return (double)(_totalFiles - _files.size() + currentFileProgress) / (double)(_totalFiles);
}
} // End of namespace Cloud