diff options
-rw-r--r-- | src/rekonq.kcfg | 6 | ||||
-rw-r--r-- | src/settings/settings_general.ui | 23 | ||||
-rw-r--r-- | src/webpage.cpp | 75 | ||||
-rw-r--r-- | src/webpage.h | 3 | ||||
-rw-r--r-- | src/webview.cpp | 58 | ||||
-rw-r--r-- | 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 @@ <entry name="showBookmarksPanel" type="Bool"> <default>false</default> </entry> + <entry name="kgetDownload" type="Bool"> + <default>false</default> + </entry> + <entry name="kgetList" type="Bool"> + <default>false</default> + </entry> </group> <!-- Tabs Settings --> 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 @@ -210,6 +210,29 @@ </widget> </item> <item> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>Download Manager</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <item> + <widget class="QCheckBox" name="kcfg_kgetDownload"> + <property name="text"> + <string>Download with KGet</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_kgetList"> + <property name="text"> + <string>List links with KGet</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> 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 <kparts/browseropenorsavequestion.h> +#include <kio/renamedialog.h> + #include <KDE/KMimeTypeTrader> #include <KDE/KRun> #include <KDE/KFileDialog> @@ -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<QString> 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<KAction*>(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<QString> 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; |