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.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/backends/cloud/folderdownloadrequest.cpp b/backends/cloud/folderdownloadrequest.cpp
index f5c872b461..ca3f9a1c99 100644
--- a/backends/cloud/folderdownloadrequest.cpp
+++ b/backends/cloud/folderdownloadrequest.cpp
@@ -51,6 +51,7 @@ void FolderDownloadRequest::start() {
_failedFiles.clear();
_ignoreCallback = false;
_totalFiles = 0;
+ _downloadedBytes = _totalBytes = 0;
//list directory first
_workingRequest = _storage->listDirectory(
@@ -70,8 +71,10 @@ void FolderDownloadRequest::directoryListedCallback(Storage::ListDirectoryRespon
for (Common::Array<StorageFile>::iterator i = _pendingFiles.begin(); i != _pendingFiles.end(); )
if (i->isDirectory())
_pendingFiles.erase(i);
- else
+ else {
+ _totalBytes += i->size();
++i;
+ }
_totalFiles = _pendingFiles.size();
downloadNextFile();
@@ -87,6 +90,7 @@ void FolderDownloadRequest::fileDownloadedCallback(Storage::BoolResponse respons
_workingRequest = nullptr;
if (_ignoreCallback) return;
if (!response.value) _failedFiles.push_back(_currentFile);
+ _downloadedBytes += _currentFile.size();
downloadNextFile();
}
@@ -159,4 +163,22 @@ double FolderDownloadRequest::getProgress() const {
return (double)(uploadedFiles + currentFileProgress) / (double)(_totalFiles);
}
+uint64 FolderDownloadRequest::getDownloadedBytes() 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 _downloadedBytes + (uint64)(currentFileProgress * _currentFile.size());
+}
+
+uint64 FolderDownloadRequest::getTotalBytesToDownload() const {
+ return _totalBytes;
+}
+
} // End of namespace Cloud