From e440ff5b1f1d742b59a20b65d11092403ae9b6b1 Mon Sep 17 00:00:00 2001 From: megabigbug Date: Tue, 22 Dec 2009 17:19:34 +0100 Subject: add options for kget in the config panel replace kio for download --- src/rekonq.kcfg | 6 ++++ src/settings/settings_general.ui | 23 ++++++++++++ src/webpage.cpp | 75 ++++++++++++++++++++++++++++++++++++++++ src/webpage.h | 3 +- src/webview.cpp | 58 ++++--------------------------- src/webview.h | 2 -- 6 files changed, 113 insertions(+), 54 deletions(-) diff --git a/src/rekonq.kcfg b/src/rekonq.kcfg index 6b926552..14b727d3 100644 --- a/src/rekonq.kcfg +++ b/src/rekonq.kcfg @@ -38,6 +38,12 @@ false + + false + + + false + diff --git a/src/settings/settings_general.ui b/src/settings/settings_general.ui index 57d293e6..9662ec3c 100644 --- a/src/settings/settings_general.ui +++ b/src/settings/settings_general.ui @@ -209,6 +209,29 @@ + + + + Download Manager + + + + + + Download with KGet + + + + + + + List links with KGet + + + + + + diff --git a/src/webpage.cpp b/src/webpage.cpp index cdb72caa..14a96543 100644 --- a/src/webpage.cpp +++ b/src/webpage.cpp @@ -53,6 +53,8 @@ #include +#include + #include #include #include @@ -250,3 +252,76 @@ QString WebPage::errorPage(QNetworkReply *reply) ; return html; } + + +void WebPage::downloadRequest(const QNetworkRequest &request) +{ + if (ReKonfig::kgetDownload()) + { + //*Copy of kwebpage code (Shouldn't be done in kwepage ?) + + KUrl destUrl; + KUrl srcUrl (request.url()); + int result = KIO::R_OVERWRITE; + + do + { + destUrl = KFileDialog::getSaveFileName(srcUrl.fileName(), QString(), view()); + + if (destUrl.isLocalFile()) + { + QFileInfo finfo (destUrl.toLocalFile()); + if (finfo.exists()) + { + QDateTime now = QDateTime::currentDateTime(); + KIO::RenameDialog dlg (view(), i18n("Overwrite File?"), srcUrl, destUrl, + KIO::RenameDialog_Mode(KIO::M_OVERWRITE | KIO::M_SKIP), + -1, finfo.size(), + now.toTime_t(), finfo.created().toTime_t(), + now.toTime_t(), finfo.lastModified().toTime_t()); + result = dlg.exec(); + } + } + } + while (result == KIO::R_CANCEL && destUrl.isValid()); + + if (result == KIO::R_OVERWRITE && destUrl.isValid()) + { + //*End of copy code + + //KGet integration: + if(!QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.kget")) + { + KToolInvocation::kdeinitExecWait("kget"); + } + QDBusInterface kget("org.kde.kget", "/KGet", "org.kde.kget.main"); + kget.call("addTransfer", srcUrl.prettyUrl(), destUrl.prettyUrl(), true); + } + } + else KWebPage::downloadRequest(request); +} + + +void WebPage::downloadAllContentsWithKGet() +{ + QList contentList; + + QWebElementCollection images = mainFrame()->documentElement().findAll("img"); + foreach(QWebElement img, images) + { + contentList.append(img.attribute("src")); + } + + QWebElementCollection links = mainFrame()->documentElement().findAll("a"); + foreach(QWebElement link, links) + { + contentList.append(link.attribute("href")); + } + + if(!QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.kget")) + { + KToolInvocation::kdeinitExecWait("kget"); + } + QDBusInterface kget("org.kde.kget", "/KGet", "org.kde.kget.main"); + kget.call("importLinks", QVariant(contentList)); +} diff --git a/src/webpage.h b/src/webpage.h index c76eaea3..9169ad60 100644 --- a/src/webpage.h +++ b/src/webpage.h @@ -56,7 +56,8 @@ public: public slots: void manageNetworkErrors(QNetworkReply *reply); - + virtual void downloadRequest(const QNetworkRequest &request); + void downloadAllContentsWithKGet(); protected: WebPage *createWindow(WebWindowType type); diff --git a/src/webview.cpp b/src/webview.cpp index a6ebd08d..462adc08 100644 --- a/src/webview.cpp +++ b/src/webview.cpp @@ -101,13 +101,7 @@ void WebView::contextMenuEvent(QContextMenuEvent *event) connect(a, SIGNAL(triggered(bool)), this, SLOT(openLinkInNewWindow())); menu.addAction(a); - menu.addAction(pageAction(KWebPage::DownloadLinkToDisk)); - - a = new KAction(KIcon("kget"), i18n("Download with KGet"), this); - a->setData(result.linkUrl()); - connect(a, SIGNAL(triggered(bool)), this, SLOT(downloadLinkWithKGet())); - menu.addAction(a); - + menu.addAction(pageAction(KWebPage::DownloadLinkToDisk)); menu.addAction(pageAction(KWebPage::CopyLinkToClipboard)); menu.addSeparator(); } @@ -270,9 +264,12 @@ void WebView::contextMenuEvent(QContextMenuEvent *event) menu.addAction(mainwindow->actionByName(KStandardAction::name(KStandardAction::SaveAs))); - a = new KAction(KIcon("kget"), i18n("Download All with KGet"), this); - connect(a, SIGNAL(triggered(bool)), this, SLOT(downloadAllContentsWithKGet())); - menu.addAction(a); + if (ReKonfig::kgetList()) + { + a = new KAction(KIcon("kget"), i18n("List all links"), this); + connect(a, SIGNAL(triggered(bool)), page(), SLOT(downloadAllContentsWithKGet())); + menu.addAction(a); + } menu.addAction(mainwindow->actionByName("page_source")); @@ -390,44 +387,3 @@ void WebView::keyPressEvent(QKeyEvent *event) KWebView::keyPressEvent(event); } - -void WebView::downloadLinkWithKGet() -{ - if(!QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.kget")) - { - KToolInvocation::kdeinitExecWait("kget"); - } - QDBusInterface kget("org.kde.kget", "/KGet", "org.kde.kget.main"); - KAction *a = qobject_cast(sender()); - - QString url = a->data().toUrl().toString(QUrl::RemoveFragment); - QString filename = QDir::homePath()+"/"+url.remove(0,url.lastIndexOf("/")+1); - kDebug() << filename; - kget.call("addTransfer", a->data().toUrl().toString(), filename, true); -} - - - -void WebView::downloadAllContentsWithKGet() -{ - QList contentList; - - QWebElementCollection images = page()->mainFrame()->documentElement().findAll("img"); - foreach(QWebElement img, images) - { - contentList.append(img.attribute("src")); - } - - QWebElementCollection links = page()->mainFrame()->documentElement().findAll("a"); - foreach(QWebElement link, links) - { - contentList.append(link.attribute("href")); - } - - if(!QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.kget")) - { - KToolInvocation::kdeinitExecWait("kget"); - } - QDBusInterface kget("org.kde.kget", "/KGet", "org.kde.kget.main"); - kget.call("importLinks", QVariant(contentList)); -} diff --git a/src/webview.h b/src/webview.h index 56b273fc..ef520a15 100644 --- a/src/webview.h +++ b/src/webview.h @@ -59,8 +59,6 @@ private slots: void openLinkInNewWindow(); void openLinkInNewTab(); void viewImage(Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); - void downloadLinkWithKGet(); - void downloadAllContentsWithKGet(); private: WebPage *const m_page; -- cgit v1.2.1