From 8b5db328ec2c3a0fdfcd9f5c773863311d224d2c Mon Sep 17 00:00:00 2001 From: jagannatharjun Date: Sun, 29 Aug 2021 12:20:56 +0530 Subject: [PATCH] Add DownloadRequest::destFileName --- src/base/net/downloadhandlerimpl.cpp | 12 +++++++++++- src/base/net/downloadmanager.cpp | 11 +++++++++++ src/base/net/downloadmanager.h | 7 +++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/base/net/downloadhandlerimpl.cpp b/src/base/net/downloadhandlerimpl.cpp index b5b9a2ed0..1a3781282 100644 --- a/src/base/net/downloadhandlerimpl.cpp +++ b/src/base/net/downloadhandlerimpl.cpp @@ -42,6 +42,16 @@ namespace { bool saveToFile(const QByteArray &replyData, QString &filePath) { + if (!filePath.isEmpty()) + { + QFile file {filePath}; + if (!file.open(QIODevice::WriteOnly)) + return false; + + file.write(replyData); + return true; + } + QTemporaryFile tmpfile {Utils::Fs::tempPath() + "XXXXXX"}; tmpfile.setAutoRemove(false); @@ -129,7 +139,7 @@ void DownloadHandlerImpl::processFinishedDownload() if (m_downloadRequest.saveToFile()) { - QString filePath; + QString filePath {m_downloadRequest.destFileName()}; if (saveToFile(m_result.data, filePath)) m_result.filePath = filePath; else diff --git a/src/base/net/downloadmanager.cpp b/src/base/net/downloadmanager.cpp index 71fbf9f12..aaf8089f9 100644 --- a/src/base/net/downloadmanager.cpp +++ b/src/base/net/downloadmanager.cpp @@ -348,6 +348,17 @@ Net::DownloadRequest &Net::DownloadRequest::saveToFile(const bool value) return *this; } +QString Net::DownloadRequest::destFileName() const +{ + return m_destFileName; +} + +Net::DownloadRequest &Net::DownloadRequest::destFileName(const QString &value) +{ + m_destFileName = value; + return *this; +} + Net::ServiceID Net::ServiceID::fromURL(const QUrl &url) { return {url.host(), url.port(80)}; diff --git a/src/base/net/downloadmanager.h b/src/base/net/downloadmanager.h index 8b9c51be4..22f133191 100644 --- a/src/base/net/downloadmanager.h +++ b/src/base/net/downloadmanager.h @@ -78,11 +78,18 @@ namespace Net bool saveToFile() const; DownloadRequest &saveToFile(bool value); + // if saveToFile is set, the file is saved in destFileName + // (deprecated) if destFileName is not provided, the file will be saved + // in a temporary file, the name of file is set in DownloadResult::filePath + QString destFileName() const; + DownloadRequest &destFileName(const QString &value); + private: QString m_url; QString m_userAgent; qint64 m_limit = 0; bool m_saveToFile = false; + QString m_destFileName; }; struct DownloadResult