diff options
-rw-r--r-- | src/CMakeLists.txt | 10 | ||||
-rw-r--r-- | src/webtab/previewselectorbar.cpp | 20 | ||||
-rw-r--r-- | src/webtab/webtab.cpp | 109 | ||||
-rw-r--r-- | src/webtab/webtab.h | 16 | ||||
-rw-r--r-- | src/webwindow/networkaccessmanager.cpp | 185 | ||||
-rw-r--r-- | src/webwindow/networkaccessmanager.h | 63 | ||||
-rw-r--r-- | src/webwindow/webpage.cpp | 74 | ||||
-rw-r--r-- | src/webwindow/webpage.h | 58 |
8 files changed, 54 insertions, 481 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b89125ac..35bbe67e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -72,21 +72,19 @@ set(rekonq_KDEINIT_SRCS useragent/useragentwidget.cpp #---------------------------------------- webtab/clicktoflash.cpp -# webtab/messagebar.cpp + webtab/messagebar.cpp webtab/networkaccessmanager.cpp -# webtab/previewselectorbar.cpp + webtab/previewselectorbar.cpp webtab/protocolhandler.cpp -# webtab/searchenginebar.cpp + webtab/searchenginebar.cpp webtab/sslinfodialog.cpp webtab/walletbar.cpp webtab/webpage.cpp webtab/webpluginfactory.cpp webtab/websslinfo.cpp webtab/webview.cpp -# webtab/webtab.cpp + webtab/webtab.cpp #---------------------------------------- - webwindow/networkaccessmanager.cpp - webwindow/webpage.cpp webwindow/webwindow.cpp #---------------------------------------- ) diff --git a/src/webtab/previewselectorbar.cpp b/src/webtab/previewselectorbar.cpp index b743e3c9..24461e79 100644 --- a/src/webtab/previewselectorbar.cpp +++ b/src/webtab/previewselectorbar.cpp @@ -33,8 +33,6 @@ #include "rekonq.h" // Local Include -#include "application.h" -#include "mainwindow.h" #include "webpage.h" #include "webtab.h" #include "websnap.h" @@ -70,8 +68,8 @@ PreviewSelectorBar::PreviewSelectorBar(int index, QWidget* parent) void PreviewSelectorBar::verifyUrl() { - - if (rApp->mainWindow()->currentTab()->page()->mainFrame()->url().scheme() != "about") + WebTab *tab = qobject_cast<WebTab *>(parent()); + if (tab->url().scheme() != "about") { m_insertAction->setEnabled(true); m_insertAction->setToolTip(""); @@ -102,21 +100,21 @@ void PreviewSelectorBar::loadFinished() void PreviewSelectorBar::clicked() { - WebPage *page = rApp->mainWindow()->currentTab()->page(); - - if (page) + WebTab *tab = qobject_cast<WebTab *>(parent()); + + if (tab->page()) { - KUrl url = page->mainFrame()->url(); + KUrl url = tab->url(); QStringList names = ReKonfig::previewNames(); QStringList urls = ReKonfig::previewUrls(); //cleanup the previous image from the cache (useful to refresh the snapshot) QFile::remove(WebSnap::imagePathFromUrl(urls.at(m_previewIndex))); - QPixmap preview = WebSnap::renderPagePreview(*page); + QPixmap preview = WebSnap::renderPagePreview(*tab->page()); preview.save(WebSnap::imagePathFromUrl(url)); urls.replace(m_previewIndex, url.toMimeDataString()); - names.replace(m_previewIndex, page->mainFrame()->title()); + names.replace(m_previewIndex, tab->page()->mainFrame()->title()); ReKonfig::setPreviewNames(names); ReKonfig::setPreviewUrls(urls); @@ -124,7 +122,7 @@ void PreviewSelectorBar::clicked() ReKonfig::self()->writeConfig(); - page->mainFrame()->load(KUrl("about:favorites")); + tab->page()->mainFrame()->load(KUrl("about:favorites")); } animatedHide(); diff --git a/src/webtab/webtab.cpp b/src/webtab/webtab.cpp index 13d2da93..81f63499 100644 --- a/src/webtab/webtab.cpp +++ b/src/webtab/webtab.cpp @@ -33,20 +33,21 @@ #include "rekonq.h" // Local Includes -#include "application.h" #include "historymanager.h" +#include "sessionmanager.h" +#include "syncmanager.h" + #include "messagebar.h" -#include "opensearchmanager.h" #include "previewselectorbar.h" -#include "rsswidget.h" +// #include "rsswidget.h" #include "searchenginebar.h" -#include "sessionmanager.h" -#include "syncmanager.h" -#include "urlbar.h" +// #include "urlbar.h" #include "walletbar.h" #include "webpage.h" #include "websnap.h" -#include "webshortcutwidget.h" +// #include "webshortcutwidget.h" + +#include "webwindow.h" // KDE Includes #include <KWebWallet> @@ -57,18 +58,20 @@ #include <KDebug> #include <KBuildSycocaProgressDialog> #include <kdeprintdialog.h> +#include <KLocalizedString> #include <KParts/Part> #include <KParts/BrowserExtension> // Qt Includes #include <QVBoxLayout> +#include <QPrintDialog> +#include <QPrinter> WebTab::WebTab(QWidget *parent) : QWidget(parent) , m_webView(0) - , m_urlBar(new UrlBar(this)) , m_progress(0) , m_part(0) { @@ -98,7 +101,7 @@ WebTab::WebTab(QWidget *parent) connect(view(), SIGNAL(loadFinished(bool)), this, SLOT(loadFinished())); // Session Manager - connect(view(), SIGNAL(loadFinished(bool)), rApp->sessionManager(), SLOT(saveSession())); + connect(view(), SIGNAL(loadFinished(bool)), SessionManager::self(), SLOT(saveSession())); } @@ -107,12 +110,6 @@ WebTab::~WebTab() m_walletBar.clear(); m_previewSelectorBar.clear(); - // NOTE: - // Urlbar is reparented when inserted in StackedUrlBar, so we need - // to get sure it will be deleted. Deleting it later to ensure everything - // will be finished before ;) - m_urlBar->deleteLater(); - // Get sure m_part will be deleted delete m_part; } @@ -214,7 +211,7 @@ void WebTab::createWalletBar(const QString &key, const QUrl &url) // sync passwords connect(m_walletBar.data(), SIGNAL(saveFormDataAccepted(QString)), - rApp->syncManager(), SLOT(syncPasswords()), Qt::UniqueConnection); + SyncManager::self(), SLOT(syncPasswords()), Qt::UniqueConnection); } @@ -280,8 +277,8 @@ void WebTab::showRSSInfo(const QPoint &pos) map.insert(KUrl(urlString), title); } - RSSWidget *widget = new RSSWidget(map, window()); - widget->showAt(pos); +// FIXME RSSWidget *widget = new RSSWidget(map, window()); +// widget->showAt(pos); } @@ -336,8 +333,9 @@ KUrl WebTab::extractOpensearchUrl(QWebElement e) bool WebTab::hasNewSearchEngine() { - QWebElement e = page()->mainFrame()->findFirstElement(QL1S("head >link[rel=\"search\"][ type=\"application/opensearchdescription+xml\"]")); - return !e.isNull() && !rApp->opensearchManager()->engineExists(extractOpensearchUrl(e)); +// QWebElement e = page()->mainFrame()->findFirstElement(QL1S("head >link[rel=\"search\"][ type=\"application/opensearchdescription+xml\"]")); +// return !e.isNull() && !rApp->opensearchManager()->engineExists(extractOpensearchUrl(e)); + return false; // FIXME } @@ -347,26 +345,27 @@ void WebTab::showSearchEngine(const QPoint &pos) QString title = e.attribute(QL1S("title")); if (!title.isEmpty()) { - WebShortcutWidget *widget = new WebShortcutWidget(window()); - widget->setWindowFlags(Qt::Popup); - - connect(widget, SIGNAL(webShortcutSet(KUrl, QString, QString)), - rApp->opensearchManager(), SLOT(addOpenSearchEngine(KUrl, QString, QString))); - connect(rApp->opensearchManager(), SIGNAL(openSearchEngineAdded(QString)), - this, SLOT(openSearchEngineAdded())); - - widget->show(extractOpensearchUrl(e), title, pos); + // FIXME +// WebShortcutWidget *widget = new WebShortcutWidget(window()); +// widget->setWindowFlags(Qt::Popup); +// +// connect(widget, SIGNAL(webShortcutSet(KUrl, QString, QString)), +// rApp->opensearchManager(), SLOT(addOpenSearchEngine(KUrl, QString, QString))); +// connect(rApp->opensearchManager(), SIGNAL(openSearchEngineAdded(QString)), +// this, SLOT(openSearchEngineAdded())); +// +// widget->show(extractOpensearchUrl(e), title, pos); } } void WebTab::openSearchEngineAdded() { - // If the providers changed, tell sycoca to rebuild its database... - KBuildSycocaProgressDialog::rebuildKSycoca(this); - - disconnect(rApp->opensearchManager(), SIGNAL(openSearchEngineAdded(QString, QString, QString)), - this, SLOT(openSearchEngineAdded())); +// // If the providers changed, tell sycoca to rebuild its database... +// KBuildSycocaProgressDialog::rebuildKSycoca(this); +// +// disconnect(rApp->opensearchManager(), SIGNAL(openSearchEngineAdded(QString, QString, QString)), +// this, SLOT(openSearchEngineAdded())); } @@ -378,37 +377,7 @@ void WebTab::showMessageBar() qobject_cast<QVBoxLayout *>(layout())->insertWidget(0, msgBar); msgBar->animatedShow(); - connect(msgBar, SIGNAL(accepted()), rApp->sessionManager(), SLOT(restoreCrashedSession())); -} - - -bool WebTab::hasAdBlockedElements() -{ - return page()->hasAdBlockedElements(); -} - - -QPixmap WebTab::tabPreview(int width, int height) -{ - if (isPageLoading()) - { - // no previews during load - return QPixmap(); - } - - if (!part()) - { - return WebSnap::renderPagePreview(*page(), width, height); - } - else - { - QWidget *partWidget = part()->widget(); - QPixmap partThumb(partWidget->size()); - - partWidget->render(&partThumb); - - return partThumb.scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - } + connect(msgBar, SIGNAL(accepted()), SessionManager::self(), SLOT(restoreCrashedSession())); } @@ -416,7 +385,7 @@ void WebTab::loadFinished() { // add page to history QString pageTitle = (page() && page()->isOnRekonqPage()) ? url().url() : m_webView->title(); - rApp->historyManager()->addHistoryEntry(url(), pageTitle); + HistoryManager::self()->addHistoryEntry(url(), pageTitle); } @@ -450,15 +419,11 @@ void WebTab::printFrame() } } - QWebFrame *printFrame = 0; - if (frame == 0) + QWebFrame *printFrame = page()->currentFrame(); + if (printFrame == 0) { printFrame = page()->mainFrame(); } - else - { - printFrame = frame; - } QPrinter printer; printer.setDocName(printFrame->title()); diff --git a/src/webtab/webtab.h b/src/webtab/webtab.h index be7791c4..617e0782 100644 --- a/src/webtab/webtab.h +++ b/src/webtab/webtab.h @@ -45,10 +45,11 @@ class NotificationBar; class PreviewSelectorBar; class QPoint; -class UrlBar; class WalletBar; class WebPage; +class WebWindow; + class REKONQ_TESTS_EXPORT WebTab : public QWidget { @@ -62,11 +63,6 @@ public: WebPage *page(); WebWindow *webWindow(); - inline UrlBar *urlBar() const - { - return m_urlBar; - } - inline int progress() const { return m_progress; @@ -91,10 +87,6 @@ public: void setPart(KParts::ReadOnlyPart *p, const KUrl &u); - bool hasAdBlockedElements(); - - QPixmap tabPreview(int width, int height); - private Q_SLOTS: void updateProgress(int progress); void resetProgress(); @@ -118,11 +110,11 @@ Q_SIGNALS: void loadProgressing(); void titleChanged(const QString &); + void triggerPartPrint(); + private: WebView *m_webView; - UrlBar *m_urlBar; - int m_progress; QWeakPointer<WalletBar> m_walletBar; diff --git a/src/webwindow/networkaccessmanager.cpp b/src/webwindow/networkaccessmanager.cpp deleted file mode 100644 index e817faca..00000000 --- a/src/webwindow/networkaccessmanager.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved -* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com> -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License or (at your option) version 3 or any later version -* accepted by the membership of KDE e.V. (or its successor approved -* by the membership of KDE e.V.), which shall act as a proxy -* defined in Section 14 of version 3 of the license. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -* -* ============================================================ */ - - - -// Self Includes -#include "networkaccessmanager.h" -#include "networkaccessmanager.moc" - -// Local Includes -#include "adblockmanager.h" - -// KDE Includes -#include <KLocale> -#include <KProtocolManager> -#include <KRun> - -// Qt Includes -#include <QNetworkReply> -#include <QTimer> -#include <QWebElement> -#include <QWebFrame> -#include <QWidget> - - -class NullNetworkReply : public QNetworkReply -{ -public: - NullNetworkReply(const QNetworkRequest &req, QObject* parent = 0) - : QNetworkReply(parent) - { - setRequest(req); - setUrl(req.url()); - setHeader(QNetworkRequest::ContentLengthHeader, 0); - setHeader(QNetworkRequest::ContentTypeHeader, "text/plain"); - setError(QNetworkReply::ContentAccessDenied, i18n("Blocked by ad filter")); - setAttribute(QNetworkRequest::User, QNetworkReply::ContentAccessDenied); - QTimer::singleShot(0, this, SIGNAL(finished())); - } - - virtual void abort() {} - virtual qint64 bytesAvailable() const - { - return 0; - } - -protected: - virtual qint64 readData(char*, qint64) - { - return -1; - } -}; - - -// ---------------------------------------------------------------------------------------------- - - -#define HIDABLE_ELEMENTS QL1S("audio,img,embed,object,iframe,frame,video") - - -static void hideBlockedElements(const QUrl& url, QWebElementCollection& collection) -{ - for (QWebElementCollection::iterator it = collection.begin(); it != collection.end(); ++it) - { - const QUrl baseUrl ((*it).webFrame()->baseUrl()); - QString src = (*it).attribute(QL1S("src")); - - if (src.isEmpty()) - src = (*it).evaluateJavaScript(QL1S("this.src")).toString(); - - if (src.isEmpty()) - continue; - const QUrl resolvedUrl (baseUrl.resolved(src)); - if (url == resolvedUrl) - { - //kDebug() << "*** HIDING ELEMENT: " << (*it).tagName() << resolvedUrl; - (*it).removeFromDocument(); - } - } -} - - -// ---------------------------------------------------------------------------------------------- - - -NetworkAccessManager::NetworkAccessManager(QObject *parent) - : AccessManager(parent) -{ - QString c = KGlobal::locale()->language(); - - if (c == QL1S("C")) - c = QL1S("en-US"); - else - c = c.replace(QL1C('_') , QL1C('-')); - - c.append(QL1S(", en-US; q=0.8, en; q=0.6")); - - _acceptLanguage = c.toLatin1(); -} - - -QNetworkReply *NetworkAccessManager::createRequest(Operation op, const QNetworkRequest &req, QIODevice *outgoingData) -{ - bool blocked = false; - - // Handle GET operations with AdBlock - if (op == QNetworkAccessManager::GetOperation) - blocked = AdBlockManager::self()->blockRequest(req); - - if (!blocked) - { - if (KProtocolInfo::isHelperProtocol(req.url())) - { - (void) new KRun(req.url(), qobject_cast<QWidget*>(req.originatingObject())); - return new NullNetworkReply(req, this); - } - - // set our "nice" accept-language header... - QNetworkRequest request = req; - request.setRawHeader("Accept-Language", _acceptLanguage); - - return KIO::AccessManager::createRequest(op, request, outgoingData); - } - - QWebFrame* frame = qobject_cast<QWebFrame*>(req.originatingObject()); - if (frame) - { - if (!m_blockedRequests.contains(frame)) - connect(frame, SIGNAL(loadFinished(bool)), this, SLOT(slotFinished(bool))); - m_blockedRequests.insert(frame, req.url()); - } - - return new NullNetworkReply(req, this); -} - - -void NetworkAccessManager::slotFinished(bool ok) -{ - if (!ok) - return; - - if(!AdBlockManager::self()->isEnabled()) - return; - - if(!AdBlockManager::self()->isHidingElements()) - return; - - QWebFrame* frame = qobject_cast<QWebFrame*>(sender()); - if (!frame) - return; - - QList<QUrl> urls = m_blockedRequests.values(frame); - if (urls.isEmpty()) - return; - - QWebElementCollection collection = frame->findAllElements(HIDABLE_ELEMENTS); - if (frame->parentFrame()) - collection += frame->parentFrame()->findAllElements(HIDABLE_ELEMENTS); - - Q_FOREACH(const QUrl& url, urls) - hideBlockedElements(url, collection); -} diff --git a/src/webwindow/networkaccessmanager.h b/src/webwindow/networkaccessmanager.h deleted file mode 100644 index 1c9c3905..00000000 --- a/src/webwindow/networkaccessmanager.h +++ /dev/null @@ -1,63 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved -* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com> -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License or (at your option) version 3 or any later version -* accepted by the membership of KDE e.V. (or its successor approved -* by the membership of KDE e.V.), which shall act as a proxy -* defined in Section 14 of version 3 of the license. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -* -* ============================================================ */ - - -#ifndef NETWORKACCESSMANAGER_H -#define NETWORKACCESSMANAGER_H - - -// Rekonq Includes -#include "rekonq_defines.h" - -// KDE Includes -#include <KIO/AccessManager> - -// Qt Includes -#include <QByteArray> - -// Forward Declarations -class QWebFrame; - - -class REKONQ_TESTS_EXPORT NetworkAccessManager : public KIO::Integration::AccessManager -{ - Q_OBJECT - -public: - NetworkAccessManager(QObject *parent); - -protected: - virtual QNetworkReply *createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData = 0); - -private Q_SLOTS: - void slotFinished(bool); - -private: - QMultiHash<QWebFrame*, QUrl> m_blockedRequests; - QByteArray _acceptLanguage; -}; - -#endif // NETWORKACCESSMANAGER_H diff --git a/src/webwindow/webpage.cpp b/src/webwindow/webpage.cpp deleted file mode 100644 index 7da39e0f..00000000 --- a/src/webwindow/webpage.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2008 Benjamin C. Meyer <ben@meyerhome.net> -* Copyright (C) 2008 Dirk Mueller <mueller@kde.org> -* Copyright (C) 2008 Urs Wolfer <uwolfer @ kde.org> -* Copyright (C) 2008 Michael Howell <mhowell123@gmail.com> -* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com> -* Copyright (C) 2010 by Matthieu Gicquel <matgic78 at gmail dot com> -* Copyright (C) 2009-2010 Dawit Alemayehu <adawit at kde dot org> -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License or (at your option) version 3 or any later version -* accepted by the membership of KDE e.V. (or its successor approved -* by the membership of KDE e.V.), which shall act as a proxy -* defined in Section 14 of version 3 of the license. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -* -* ============================================================ */ - - -// Self Includes -#include "webpage.h" -#include "webpage.moc" - -#include "networkaccessmanager.h" - - -WebPage::WebPage(QWidget *parent) - : KWebPage(parent, KWalletIntegration) -{ - // rekonq Network Manager - NetworkAccessManager *manager = new NetworkAccessManager(this); - - // set network reply object to emit readyRead when it receives meta data - manager->setEmitReadyReadOnMetaDataChange(true); - - // disable QtWebKit cache to just use KIO one.. - manager->setCache(0); - - // set cookieJar window.. - if (parent && parent->window()) - manager->setWindow(parent->window()); - - setNetworkAccessManager(manager); -} - - -WebPage::~WebPage() -{ -} - - -WebPage *WebPage::createWindow(QWebPage::WebWindowType type) -{ - // added to manage web modal dialogs - if (type == QWebPage::WebModalDialog) - kDebug() << "Modal Dialog"; - - WebPage* p = new WebPage; - emit pageCreated(p); - return p; -} diff --git a/src/webwindow/webpage.h b/src/webwindow/webpage.h deleted file mode 100644 index f953d3fc..00000000 --- a/src/webwindow/webpage.h +++ /dev/null @@ -1,58 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2008 Benjamin C. Meyer <ben@meyerhome.net> -* Copyright (C) 2008 Dirk Mueller <mueller@kde.org> -* Copyright (C) 2008 Urs Wolfer <uwolfer @ kde.org> -* Copyright (C) 2008 Michael Howell <mhowell123@gmail.com> -* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com> -* Copyright (C) 2010 by Matthieu Gicquel <matgic78 at gmail dot com> -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License or (at your option) version 3 or any later version -* accepted by the membership of KDE e.V. (or its successor approved -* by the membership of KDE e.V.), which shall act as a proxy -* defined in Section 14 of version 3 of the license. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -* -* ============================================================ */ - - -#ifndef WEBPAGE_H -#define WEBPAGE_H - - -// Rekonq Includes -#include "rekonq_defines.h" - -// KDE Includes -#include <KWebPage> - - -class WebPage : public KWebPage -{ - Q_OBJECT - -public: - WebPage(QWidget *parent = 0); - ~WebPage(); - -protected: - WebPage *createWindow(WebWindowType type); - -Q_SIGNALS: - void pageCreated(WebPage *); -}; - -#endif |