diff options
| -rw-r--r-- | src/webview.cpp | 60 | ||||
| -rw-r--r-- | src/webview.h | 4 | 
2 files changed, 60 insertions, 4 deletions
diff --git a/src/webview.cpp b/src/webview.cpp index 0b589ec0..f766ab58 100644 --- a/src/webview.cpp +++ b/src/webview.cpp @@ -45,6 +45,7 @@  #include <KStandardShortcut>  #include <KMenu>  #include <KActionMenu> +#include <ktoolinvocation.h>  // Qt Includes  #include <QContextMenuEvent> @@ -54,7 +55,10 @@  #include <QKeyEvent>  #include <QAction>  #include <QLayout> - +#include <QtDBus/QDBusConnectionInterface> +#include <QtDBus/QDBusInterface> +#include <QtDBus/QDBusReply> +#include <QDir>  WebView::WebView(QWidget* parent)      : KWebView(parent, false) @@ -98,6 +102,12 @@ void WebView::contextMenuEvent(QContextMenuEvent *event)          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::CopyLinkToClipboard));          menu.addSeparator();      } @@ -254,11 +264,16 @@ void WebView::contextMenuEvent(QContextMenuEvent *event)          menu.addAction(frameMenu);          menu.addSeparator(); - +                  // Page Actions          menu.addAction(pageAction(KWebPage::SelectAll));          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); +          menu.addAction(mainwindow->actionByName("page_source"));          QAction *addBookmarkAction = Application::bookmarkProvider()->actionByName("rekonq_add_bookmark"); @@ -374,3 +389,44 @@ 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());   + +    QList<QString> contentList; +    contentList.append(a->data().toUrl().toString()); +    kget.call("importLinks", QVariant(contentList)); +} + + + +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 60c8c9fc..56b273fc 100644 --- a/src/webview.h +++ b/src/webview.h @@ -28,14 +28,12 @@  #ifndef WEBVIEW_H  #define WEBVIEW_H -  // KDE Includes  #include <KWebView>  // Forward Declarations  class WebPage; -  class WebView : public KWebView  {      Q_OBJECT @@ -61,6 +59,8 @@ private slots:      void openLinkInNewWindow();      void openLinkInNewTab();      void viewImage(Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); +    void downloadLinkWithKGet(); +    void downloadAllContentsWithKGet();  private:      WebPage *const m_page;  | 
