diff options
-rw-r--r-- | src/webtab/webpage.cpp | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/src/webtab/webpage.cpp b/src/webtab/webpage.cpp index de87ad42..ca2a23b2 100644 --- a/src/webtab/webpage.cpp +++ b/src/webtab/webpage.cpp @@ -337,19 +337,20 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply) { Q_ASSERT(reply); - if (!reply) + if (reply->error() != QNetworkReply::NoError) return; + KIO::Integration::AccessManager::putReplyOnHold(reply); + // handle protocols WebKit cannot handle... if (_protHandler.postHandling(reply->request(), mainFrame())) { return; } - if (reply->error() != QNetworkReply::NoError) - return; - - KIO::Integration::AccessManager::putReplyOnHold(reply); + // Get suggested file name... + const KIO::MetaData& data = reply->attribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::MetaData)).toMap(); + _suggestedFileName = data.value(QL1S("content-disposition-filename")); // Get mimeType... extractMimeType(reply, _mimeType); @@ -358,10 +359,6 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply) if (KParts::BrowserRun::isTextExecutable(_mimeType)) _mimeType = QL1S("text/plain"); - // Get suggested file name... - const KIO::MetaData& data = reply->attribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::MetaData)).toMap(); - _suggestedFileName = data.value(QL1S("content-disposition-filename")); - kDebug() << "Detected MimeType = " << _mimeType; kDebug() << "Suggested File Name = " << _suggestedFileName; // ------------------------------------------------ @@ -373,10 +370,18 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply) if (appService.isNull()) // no service can handle this. We can just download it.. { - isLocal - ? KMessageBox::sorry(view(), i18n("No service can handle this file.")) - : downloadUrl(reply->url()); + if (isLocal) + { + KMessageBox::sorry(view(), i18n("No service can handle this file.")); + return; + } + DownloadManager::self()->downloadResource( reply->url(), + KIO::MetaData(), + view(), + false, + _suggestedFileName, + !settings()->testAttribute(QWebSettings::PrivateBrowsingEnabled)); return; } @@ -386,10 +391,18 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply) // "recall" loop. if (appService->exec().trimmed().startsWith(QL1S("rekonq"))) { - isLocal - ? KMessageBox::sorry(view(), i18n("rekonq cannot properly handle this, sorry")) - : downloadUrl(reply->url()); + if (isLocal) + { + KMessageBox::sorry(view(), i18n("rekonq cannot properly handle this, sorry")); + return; + } + DownloadManager::self()->downloadResource( reply->url(), + KIO::MetaData(), + view(), + false, + _suggestedFileName, + !settings()->testAttribute(QWebSettings::PrivateBrowsingEnabled)); return; } @@ -685,7 +698,7 @@ void WebPage::downloadRequest(const QNetworkRequest &request) request.attribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::MetaData)).toMap(), view(), false, - QString(), + _suggestedFileName, !settings()->testAttribute(QWebSettings::PrivateBrowsingEnabled)); } |