diff options
| -rw-r--r-- | src/webpage.cpp | 97 | ||||
| -rw-r--r-- | src/webpage.h | 18 | ||||
| -rw-r--r-- | src/webview.cpp | 19 | ||||
| -rw-r--r-- | src/webview.h | 8 | 
4 files changed, 122 insertions, 20 deletions
| diff --git a/src/webpage.cpp b/src/webpage.cpp index 133a263c..e8e956ed 100644 --- a/src/webpage.cpp +++ b/src/webpage.cpp @@ -45,6 +45,9 @@  #include <KDE/KParts/BrowserRun>  #include <KDE/KMimeTypeTrader>  #include <KDE/KRun> +#include <KDE/KFileDialog> +#include <KDE/KInputDialog> +#include <KDE/KMessageBox>  #include <kdewebkit/kwebpage.h>  #include <kdewebkit/kwebview.h> @@ -65,9 +68,10 @@  #include <QtWebKit/QWebSettings>  #include <QtWebKit/QWebView> +#include <QUiLoader>  WebPage::WebPage(QObject *parent) -        : KWebPage(parent) +        : QWebPage(parent)  {      setForwardUnsupportedContent(true); @@ -76,7 +80,7 @@ WebPage::WebPage(QObject *parent)  } -KWebPage *WebPage::createWindow(QWebPage::WebWindowType type) +QWebPage *WebPage::createWindow(QWebPage::WebWindowType type)  {      kDebug() << "creating window as new tab.. "; @@ -113,7 +117,7 @@ void WebPage::slotHandleUnsupportedContent(QNetworkReply *reply)      switch (res)       {      case KParts::BrowserRun::Save: -        slotDownloadRequested(reply->request(), reply); +        slotDownloadRequested(reply->request());          return;      case KParts::BrowserRun::Cancel:          return; @@ -182,3 +186,90 @@ void WebPage::viewErrorPage(QNetworkReply *reply)          Application::historyManager()->removeHistoryEntry(reply->url(), mainFrame()->title());      }  } + + +void WebPage::javaScriptAlert(QWebFrame *frame, const QString &msg) +{ +    KMessageBox::error(frame->page()->view(), msg, i18n("JavaScript")); +} + + +bool WebPage::javaScriptConfirm(QWebFrame *frame, const QString &msg) +{ +    return (KMessageBox::warningYesNo(frame->page()->view(), msg, i18n("JavaScript"), KStandardGuiItem::ok(), KStandardGuiItem::cancel()) +            == KMessageBox::Yes); +} + + +bool WebPage::javaScriptPrompt(QWebFrame *frame, const QString &msg, const QString &defaultValue, QString *result) +{ +    bool ok = false; +    *result = KInputDialog::getText(i18n("JavaScript"), msg, defaultValue, &ok, frame->page()->view()); +    return ok; +} + + +QObject *WebPage::createPlugin(const QString &classId, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) +{ +    kDebug() << "create Plugin requested:"; +    kDebug() << "classid:" << classId; +    kDebug() << "url:" << url; +    kDebug() << "paramNames:" << paramNames << " paramValues:" << paramValues; + +    QUiLoader loader; +    return loader.createWidget(classId, view()); +} + + +void WebPage::slotDownloadRequested(const QNetworkRequest &request) +{ +    const KUrl url(request.url()); +    kDebug() << url; + +//     const QString fileName = d->getFileNameForDownload(request, reply); +//  +//     // parts of following code are based on khtml_ext.cpp +//     // DownloadManager <-> konqueror integration +//     // find if the integration is enabled +//     // the empty key  means no integration +//     // only use download manager for non-local urls! +//     bool downloadViaKIO = true; +//     if (!url.isLocalFile()) { +//         KConfigGroup cfg = KSharedConfig::openConfig("konquerorrc", KConfig::NoGlobals)->group("HTML Settings"); +//         const QString downloadManger = cfg.readPathEntry("DownloadManager", QString()); +//         if (!downloadManger.isEmpty()) { +//             // then find the download manager location +//             kDebug() << "Using: " << downloadManger << " as Download Manager"; +//             QString cmd = KStandardDirs::findExe(downloadManger); +//             if (cmd.isEmpty()) { +//                 QString errMsg = i18n("The Download Manager (%1) could not be found in your $PATH.", downloadManger); +//                 QString errMsgEx = i18n("Try to reinstall it. \n\nThe integration with Konqueror will be disabled."); +//                 KMessageBox::detailedSorry(view(), errMsg, errMsgEx); +//                 cfg.writePathEntry("DownloadManager", QString()); +//                 cfg.sync(); +//             } else { +//                 downloadViaKIO = false; +//                 cmd += ' ' + KShell::quoteArg(url.url()); +//                 kDebug() << "Calling command" << cmd; +//                 KRun::runCommand(cmd, view()); +//             } +//         } +//     } +//  +//     if (downloadViaKIO) { +//         const QString destUrl = KFileDialog::getSaveFileName(url.fileName(), QString(), view()); +//         if (destUrl.isEmpty()) return; +//         KIO::Job *job = KIO::file_copy(url, KUrl(destUrl), -1, KIO::Overwrite); +//         //job->setMetaData(metadata); //TODO: add metadata from request +//         job->addMetaData("MaxCacheSize", "0"); // Don't store in http cache. +//         job->addMetaData("cache", "cache"); // Use entry from cache if available. +//         job->uiDelegate()->setAutoErrorHandlingEnabled(true); +//     } +} + +WebPage *WebPage::newWindow(WebWindowType type) +{ +    Q_UNUSED(type); +    return 0; +} + diff --git a/src/webpage.h b/src/webpage.h index c43212b6..1e25958c 100644 --- a/src/webpage.h +++ b/src/webpage.h @@ -37,7 +37,7 @@ class QWebFrame;  class QNetworkReply; -class WebPage : public KWebPage +class WebPage : public QWebPage  {      Q_OBJECT @@ -48,11 +48,21 @@ public slots:      void manageNetworkErrors(QNetworkReply* reply);  protected: -    KWebPage *createWindow(QWebPage::WebWindowType type); - +    QWebPage *createWindow(QWebPage::WebWindowType type); +    virtual WebPage *newWindow(WebWindowType type); + +//     QString chooseFile(QWebFrame *frame, const QString &suggestedFile); +     +    void javaScriptAlert(QWebFrame *frame, const QString &msg); +    bool javaScriptConfirm(QWebFrame *frame, const QString &msg); +    bool javaScriptPrompt(QWebFrame *frame, const QString &msg, const QString &defaultValue, QString *result); +     +    QObject *createPlugin(const QString &classId, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); +          protected Q_SLOTS:      virtual void slotHandleUnsupportedContent(QNetworkReply *reply); - +    virtual void slotDownloadRequested(const QNetworkRequest &request); +      private:      void viewErrorPage(QNetworkReply *); diff --git a/src/webview.cpp b/src/webview.cpp index f0aa6641..114a1be4 100644 --- a/src/webview.cpp +++ b/src/webview.cpp @@ -65,11 +65,12 @@  WebView::WebView(QWidget* parent) -        : KWebView(parent) +        : QWebView(parent)          , m_page(new WebPage(this))          , m_progress(0)  {      setPage(m_page); +          connect(page(), SIGNAL(statusBarMessage(const QString&)), this, SLOT(setStatusBarText(const QString&)));      connect(this, SIGNAL(loadProgress(int)), this, SLOT(setProgress(int)));      connect(this, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished())); @@ -78,10 +79,10 @@ WebView::WebView(QWidget* parent)  } -void WebView::setNewPage() -{ -    setPage(new WebPage(this)); -} +// void WebView::setNewPage() +// { +//     setPage(new WebPage(this)); +// }  KUrl WebView::url() const  @@ -102,10 +103,10 @@ int WebView::progress() const  } -void WebView::load(const KUrl &url) -{ -    QWebView::load(url); -} +// void WebView::load(const KUrl &url) +// { +//     QWebView::load(url); +// }  void WebView::setProgress(int progress)  diff --git a/src/webview.h b/src/webview.h index d8a6f3d6..c12582d4 100644 --- a/src/webview.h +++ b/src/webview.h @@ -40,7 +40,7 @@  class WebPage; -class WebView : public KWebView +class WebView : public QWebView  {      Q_OBJECT @@ -51,8 +51,8 @@ public:      QString lastStatusBarText() const;      int progress() const; -public Q_SLOTS: -    void load(const KUrl &url); +// public Q_SLOTS: +//     void load(const KUrl &url);  signals:      // switching tabs @@ -69,7 +69,7 @@ protected:      void keyPressEvent(QKeyEvent *event);      // to reimplement from KWebView -    virtual void setNewPage(); +//     virtual void setNewPage();  private slots:      void setProgress(int progress); | 
