From d863dad055acbc066d86f7fbfa054e7f4c2dd7b2 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Thu, 14 Jul 2016 14:55:03 +0600 Subject: CLOUD: Fix FolderDownloadRequest::getProgress() Now it doesn't stop on 100 % on last file and it ignores the directories, so it doesn't "jump" suddenly as there are no directories to skip. --- backends/cloud/folderdownloadrequest.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'backends/cloud') diff --git a/backends/cloud/folderdownloadrequest.cpp b/backends/cloud/folderdownloadrequest.cpp index 1d42f27d3f..c77fc27b35 100644 --- a/backends/cloud/folderdownloadrequest.cpp +++ b/backends/cloud/folderdownloadrequest.cpp @@ -65,6 +65,14 @@ void FolderDownloadRequest::directoryListedCallback(Storage::ListDirectoryRespon _workingRequest = nullptr; if (_ignoreCallback) return; _pendingFiles = response.value; + + // remove all directories + for (Common::Array::iterator i = _pendingFiles.begin(); i != _pendingFiles.end(); ) + if (i->isDirectory()) + _pendingFiles.erase(i); + else + ++i; + _totalFiles = _pendingFiles.size(); downloadNextFile(); } @@ -146,7 +154,8 @@ double FolderDownloadRequest::getProgress() const { if (idDownloadRequest != nullptr) currentFileProgress = idDownloadRequest->getProgress(); } - return (double)(_totalFiles - _pendingFiles.size() + currentFileProgress) / (double)(_totalFiles); + uint32 uploadedFiles = _totalFiles - _pendingFiles.size() - 1; // -1 because currently downloaded file is already removed from _pendingFiles + return (double)(uploadedFiles + currentFileProgress) / (double)(_totalFiles); } } // End of namespace Cloud -- cgit v1.2.3