From 76fa3799a89be4c83fd23859a9a0809e92a6dc46 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 18 Mar 2016 09:55:51 +0100 Subject: [PATCH] Fixed #174. --- resources/text/CHANGELOG | 1 + src/network-web/downloadmanager.cpp | 21 ++++++++++++--------- src/network-web/downloadmanager.h | 8 ++++---- src/network-web/webpage.cpp | 2 +- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG index 148b8bfea..cd002d72c 100755 --- a/resources/text/CHANGELOG +++ b/resources/text/CHANGELOG @@ -15,6 +15,7 @@ Added: Fixed: +▪ When user selects "Save as..." for some file from internal web browser, file selection dialog is always shown. (bug #174) ▪ Better detection of MySQL server status. (bug #169) ▪ Ordering of messages is now done on SQL server (stands for both MySQL and SQLite). (bug #172) ▪ Now title of the RSS/ATOM message is taken into account when deciding message "uniqueness". (bug #171) diff --git a/src/network-web/downloadmanager.cpp b/src/network-web/downloadmanager.cpp index 0c1356772..caac56e75 100755 --- a/src/network-web/downloadmanager.cpp +++ b/src/network-web/downloadmanager.cpp @@ -41,13 +41,16 @@ #include -DownloadItem::DownloadItem(QNetworkReply *reply, QWidget *parent) : QWidget(parent), +DownloadItem::DownloadItem(bool is_direct_download, QNetworkReply *reply, QWidget *parent) : QWidget(parent), m_ui(new Ui::DownloadItem), m_reply(reply), m_bytesReceived(0), m_requestFileName(false), m_startedSaving(false), m_finishedDownloading(false), m_gettingFileName(false), m_canceledFileSelect(false) { m_ui->setupUi(this); m_ui->m_btnTryAgain->hide(); - m_requestFileName = qApp->settings()->value(GROUP(Downloads), SETTING(Downloads::AlwaysPromptForFilename)).toBool(); + + m_requestFileName = is_direct_download ? + qApp->settings()->value(GROUP(Downloads), SETTING(Downloads::AlwaysPromptForFilename)).toBool() : + true; connect(m_ui->m_btnStopDownload, SIGNAL(clicked()), this, SLOT(stop())); connect(m_ui->m_btnOpenFile, SIGNAL(clicked()), this, SLOT(openFile())); @@ -499,17 +502,17 @@ int DownloadManager::downloadProgress() const { } } -void DownloadManager::download(const QNetworkRequest &request) { +void DownloadManager::download(const QNetworkRequest &request, bool direct_download) { if (!request.url().isEmpty()) { - handleUnsupportedContent(m_networkManager->get(request)); + handleUnsupportedContent(m_networkManager->get(request), direct_download); } } -void DownloadManager::download(const QUrl &url) { - download(QNetworkRequest(url)); +void DownloadManager::download(const QUrl &url, bool direct_download) { + download(QNetworkRequest(url), direct_download); } -void DownloadManager::handleUnsupportedContent(QNetworkReply *reply) { +void DownloadManager::handleUnsupportedContent(QNetworkReply *reply, bool direct_download) { if (reply == NULL || reply->url().isEmpty()) { return; } @@ -522,7 +525,7 @@ void DownloadManager::handleUnsupportedContent(QNetworkReply *reply) { return; } - DownloadItem *item = new DownloadItem(reply, this); + DownloadItem *item = new DownloadItem(direct_download, reply, this); addItem(item); if (!item->m_canceledFileSelect && qApp->settings()->value(GROUP(Downloads), @@ -670,7 +673,7 @@ void DownloadManager::load() { bool done = settings->value(GROUP(Downloads), QString(Downloads::ItemDone).arg(i), true).toBool(); if (!url.isEmpty() && !file_name.isEmpty()) { - DownloadItem *item = new DownloadItem(0, this); + DownloadItem *item = new DownloadItem(false, 0, this); item->m_output.setFileName(file_name); item->m_url = url; diff --git a/src/network-web/downloadmanager.h b/src/network-web/downloadmanager.h index b3763d009..737bff142 100755 --- a/src/network-web/downloadmanager.h +++ b/src/network-web/downloadmanager.h @@ -42,7 +42,7 @@ class DownloadItem : public QWidget { public: // Constructors. - explicit DownloadItem(QNetworkReply *reply = 0, QWidget *parent = 0); + explicit DownloadItem(bool is_direct_download, QNetworkReply *reply = 0, QWidget *parent = 0); virtual ~DownloadItem(); bool downloading() const; @@ -125,9 +125,9 @@ class DownloadManager : public TabContent { static QString dataString(qint64 size); public slots: - void download(const QNetworkRequest &request); - void download(const QUrl &url); - void handleUnsupportedContent(QNetworkReply *reply); + void download(const QNetworkRequest &request, bool direct_download = false); + void download(const QUrl &url, bool direct_download = false); + void handleUnsupportedContent(QNetworkReply *reply, bool direct_download = false); void cleanup(); private slots: diff --git a/src/network-web/webpage.cpp b/src/network-web/webpage.cpp index af3aee3a0..378239375 100755 --- a/src/network-web/webpage.cpp +++ b/src/network-web/webpage.cpp @@ -172,7 +172,7 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply) { switch (reply->error()) { case QNetworkReply::NoError: if (reply->header(QNetworkRequest::ContentTypeHeader).isValid()) { - qApp->downloadManager()->handleUnsupportedContent(reply); + qApp->downloadManager()->handleUnsupportedContent(reply, true); return; }