diff options
-rw-r--r-- | CMakeLists.txt | 75 | ||||
-rw-r--r-- | src/CMakeLists.txt | 84 | ||||
-rw-r--r-- | src/kaccessmanager.cpp (renamed from src/networkaccessmanager.cpp) | 6 | ||||
-rw-r--r-- | src/kaccessmanager.h | 54 | ||||
-rw-r--r-- | src/networkaccessmanager.h | 38 | ||||
-rw-r--r-- | src/networkmanager.cpp | 180 | ||||
-rw-r--r-- | src/networkmanager.h | 53 |
7 files changed, 423 insertions, 67 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a5a1b79..512e25a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ PROJECT( rekonq ) # rekonq info SET(REKONQ_MAJOR_VERSION "0") SET(REKONQ_MINOR_VERSION "1") -SET(REKONQ_PATCH_VERSION "3") +SET(REKONQ_PATCH_VERSION "4") SET(REKONQ_VERSION_STR "${REKONQ_MAJOR_VERSION}.${REKONQ_MINOR_VERSION}.${REKONQ_PATCH_VERSION}" @@ -37,6 +37,21 @@ INCLUDE(FindPackageHandleStandardArgs) INCLUDE(KDE4Defaults) INCLUDE(MacroLibrary) +# --------------- KNetworkAccessManager +if(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") +else(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + find_package(KdeNetwork REQUIRED) + + MESSAGE(STATUS "----------------------------------------------------------------------------------") + MESSAGE(STATUS "") + MESSAGE(STATUS " As KDE VERSION is minor than 4.2.70, rekonq will use KNetworkAccessManager ") + MESSAGE(STATUS " classes, instead of newly KIO::AccessManager. ") + MESSAGE(STATUS "") + +endif(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + # ================================================================================================== # Log messages @@ -90,10 +105,27 @@ ELSE(KDEWEBKIT_FOUND) MESSAGE(STATUS " KDE Webkit library found.............. NO") MESSAGE(STATUS "") MESSAGE(SEND_ERROR " rekonq needs, from version 0.2, KDEWEBKIT to be compiled. Please install it and try compiling again.") - MESSAGE(STATUS " You can actually retrieve it from playground/libs/webkitkde KDE svn") + MESSAGE(STATUS " You can actually retrieve it from playground/libs/webkitkde/kdewebkit KDE svn") MESSAGE(STATUS "") ENDIF(KDEWEBKIT_FOUND) +# --------------- KNetworkAccessManager +if(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") +else(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") +MESSAGE(STATUS "") +IF(KDENETWORK_FOUND) + MESSAGE(STATUS " KDE Network library found............. YES") +ELSE(KDENETWORK_FOUND) + MESSAGE(STATUS " KDE Network library found............. NO") + MESSAGE(STATUS "") + MESSAGE(SEND_ERROR " rekonq needs, from version 0.2, KDENETWORK if compiled with a KDE version minor than 4.2.69 ") + MESSAGE(STATUS " You can actually retrieve it from playground/libs/webkitkde/kdenetwork KDE svn") + MESSAGE(STATUS "") +ENDIF(KDENETWORK_FOUND) + +endif(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + MESSAGE(STATUS "") MESSAGE(STATUS "----------------------------------------------------------------------------------") MESSAGE(STATUS "") @@ -101,13 +133,29 @@ MESSAGE(STATUS "") ##### FINAL RESULTS ##### -IF(QT_FOUND AND KDE4_FOUND AND KDEWEBKIT_FOUND) - MESSAGE(STATUS " rekonq will be compiled............... YES") - SET(REKONQ_CAN_BE_COMPILED true) -ELSE(QT_FOUND AND KDE4_FOUND AND KDEWEBKIT_FOUND) - MESSAGE(FATAL_ERROR " rekonq will NOT be compiled!") - SET(REKONQ_CAN_BE_COMPILED false) -ENDIF(QT_FOUND AND KDE4_FOUND AND KDEWEBKIT_FOUND) +if(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + IF(QT_FOUND AND KDE4_FOUND AND KDEWEBKIT_FOUND) + MESSAGE(STATUS " rekonq will be compiled............... YES") + SET(REKONQ_CAN_BE_COMPILED true) + ELSE(QT_FOUND AND KDE4_FOUND AND KDEWEBKIT_FOUND) + MESSAGE(FATAL_ERROR " rekonq will NOT be compiled!") + SET(REKONQ_CAN_BE_COMPILED false) + ENDIF(QT_FOUND AND KDE4_FOUND AND KDEWEBKIT_FOUND) + +else(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + IF(QT_FOUND AND KDE4_FOUND AND KDEWEBKIT_FOUND AND KDENETWORK_FOUND) + MESSAGE(STATUS " rekonq will be compiled............... YES") + SET(REKONQ_CAN_BE_COMPILED true) + ELSE(QT_FOUND AND KDE4_FOUND AND KDEWEBKIT_FOUND AND KDENETWORK_FOUND) + MESSAGE(FATAL_ERROR " rekonq will NOT be compiled!") + SET(REKONQ_CAN_BE_COMPILED false) + ENDIF(QT_FOUND AND KDE4_FOUND AND KDEWEBKIT_FOUND AND KDENETWORK_FOUND) + +endif(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + MESSAGE(STATUS "") MESSAGE(STATUS "----------------------------------------------------------------------------------") @@ -117,15 +165,6 @@ MESSAGE(STATUS "") IF(REKONQ_CAN_BE_COMPILED) - INCLUDE_DIRECTORIES ( ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ${KDE4_INCLUDES} - ${QT4_INCLUDES} - ${QT_QTNETWORK_INCLUDE_DIR} - ${QT_QTWEBKIT_INCLUDE_DIR} - ${KDEWEBKIT_INCLUDE_DIR} - ) - ADD_SUBDIRECTORY( src ) ADD_SUBDIRECTORY( icons ) ADD_SUBDIRECTORY( data ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2ddf1117..92fd9d53 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,17 @@ +### ------- SETTING REKONQ FILES.. + +if(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + +SET( rekonq_NAM networkmanager.cpp ) + +else(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + +SET( rekonq_NAM kaccessmanager.cpp ) + +endif(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + SET( rekonq_SRCS + ${rekonq_NAM} autosaver.cpp application.cpp mainwindow.cpp @@ -12,7 +25,6 @@ SET( rekonq_SRCS historymenu.cpp bookmarks.cpp modelmenu.cpp - networkaccessmanager.cpp urlbar.cpp findbar.cpp searchbar.cpp @@ -28,6 +40,7 @@ SET( rekonq_SRCS cookieexceptiondialog.cpp ) + KDE4_ADD_UI_FILES( rekonq_SRCS cookies.ui cookiesexceptions.ui @@ -43,26 +56,69 @@ KDE4_ADD_UI_FILES( rekonq_SRCS KDE4_ADD_KCFG_FILES( rekonq_SRCS rekonq.kcfgc ) -### ------------------------------------------ -ADD_DEFINITIONS( ${KDE4_DEFINITIONS} ${KDEWEBKIT_DEFINITIONS} ) + +### ------------- INCLUDING DIRECTORIES... + +INCLUDE_DIRECTORIES ( ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${KDE4_INCLUDES} + ${QT4_INCLUDES} + ${KDEWEBKIT_INCLUDE_DIR} +) + +if(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") +else(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + INCLUDE_DIRECTORIES( ${KDENETWORK_INCLUDE_DIR} ) + +endif(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + + +### -------------- ADDING DEFINITIONS... + +ADD_DEFINITIONS ( ${KDE4_DEFINITIONS} + ${KDEWEBKIT_DEFINITIONS} +) + +if(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") +else(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + ADD_DEFINITIONS ( ${KDENETWORK_DEFINITIONS} ) + +endif(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + + +### --------------- ADDING EXECUTABLE... KDE4_ADD_EXECUTABLE( rekonq ${rekonq_SRCS} ) -TARGET_LINK_LIBRARIES( rekonq - ${QT_LIBRARIES} - ${QT_QTNETWORK_LIBRARY} -# ${QT_QTWEBKIT_LIBRARY} -# ${QT_QTUITOOLS_LIBRARY} - ${KDE4_KUTILS_LIBS} - ${KDE4_KDEUI_LIBS} - ${KDE4_KIO_LIBS} - ${KDEWEBKIT_LIBRARIES} + + +### --------------- TARGETTING LINK LIBRARIES... + +TARGET_LINK_LIBRARIES ( rekonq + ${QT_LIBRARIES} + ${QT_QTNETWORK_LIBRARY} + ${KDE4_KUTILS_LIBS} + ${KDE4_KDEUI_LIBS} + ${KDE4_KIO_LIBS} + ${KDEWEBKIT_LIBRARIES} ) -INSTALL( TARGETS rekonq ${INSTALL_TARGETS_DEFAULT_ARGS} ) +if(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") +else(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + TARGET_LINK_LIBRARIES( ${KDENETWORK_LIBRARIES} ) -########### install files ############### +endif(${KDE_VERSION_MINOR} EQUAL "2" AND ${KDE_VERSION_RELEASE} GREATER "69") + + +### ------------ INSTALL FILES... + +INSTALL( TARGETS rekonq ${INSTALL_TARGETS_DEFAULT_ARGS} ) INSTALL( FILES rekonq.kcfg DESTINATION ${KCFG_INSTALL_DIR} ) INSTALL( FILES rekonqui.rc DESTINATION ${DATA_INSTALL_DIR}/rekonq ) diff --git a/src/networkaccessmanager.cpp b/src/kaccessmanager.cpp index 086ff165..c298ed88 100644 --- a/src/networkaccessmanager.cpp +++ b/src/kaccessmanager.cpp @@ -20,8 +20,8 @@ // Self Includes -#include "networkaccessmanager.h" -#include "networkaccessmanager.moc" +#include "kaccessmanager.h" +#include "kaccessmanager.moc" // Local Includes #include "application.h" @@ -53,7 +53,7 @@ NetworkAccessManager::NetworkAccessManager(QObject *parent) - : AccessManager(parent) + : KNetworkAccessManager(parent) { connect(this, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), SLOT(authenticationRequired(QNetworkReply*, QAuthenticator*))); diff --git a/src/kaccessmanager.h b/src/kaccessmanager.h new file mode 100644 index 00000000..8325c890 --- /dev/null +++ b/src/kaccessmanager.h @@ -0,0 +1,54 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved +* Copyright (C) 2008-2009 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 3, or (at your option) any later version. +* +* 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. +* +* ============================================================ */ + + +#ifndef KACCESSMANAGER_H +#define KACCESSMANAGER_H + +//KDE Network Includes +#include <kdenetwork/knetworkaccessmanager.h> +#include <kdenetwork/knetworkreply.h> + +// Forward Declarations +class QNetworkRequest; +class QIODevice; + + +class NetworkAccessManager : public KNetworkAccessManager +{ + Q_OBJECT + +public: + NetworkAccessManager(QObject *parent = 0); + +public slots: + void loadSettings(); + +private slots: + void authenticationRequired(QNetworkReply *reply, QAuthenticator *auth); + void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth); + +#ifndef QT_NO_OPENSSL + void slotSSLErrors(QNetworkReply *reply, const QList<QSslError> &error); +#endif + +}; + +#endif // KACCESSMANAGER_H diff --git a/src/networkaccessmanager.h b/src/networkaccessmanager.h index c6ac3233..eb3ee071 100644 --- a/src/networkaccessmanager.h +++ b/src/networkaccessmanager.h @@ -2,8 +2,7 @@ * * This file is a part of the rekonq project * -* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved -* Copyright (C) 2008-2009 by Andrea Diamantini <adjam7 at gmail dot com> +* Copyright (C) 2009 by Andrea Diamantini <adjam7 at gmail dot com> * * * This program is free software; you can redistribute it @@ -19,35 +18,10 @@ * ============================================================ */ -#ifndef NETWORKACCESSMANAGER_H -#define NETWORKACCESSMANAGER_H +#include <kdeversion.h> -// KDE Includes -#include <KIO/AccessManager> - -class QNetworkRequest; -class QIODevice; - -using namespace KIO; - -class NetworkAccessManager : public AccessManager -{ - Q_OBJECT - -public: - NetworkAccessManager(QObject *parent = 0); - -public slots: - void loadSettings(); - -private slots: - void authenticationRequired(QNetworkReply *reply, QAuthenticator *auth); - void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth); - -#ifndef QT_NO_OPENSSL - void slotSSLErrors(QNetworkReply *reply, const QList<QSslError> &error); +#if KDE_IS_VERSION(4,2,70) + #include "networkmanager.h" +#else + #include "kaccessmanager.h" #endif - -}; - -#endif // NETWORKACCESSMANAGER_H diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp new file mode 100644 index 00000000..bbe89816 --- /dev/null +++ b/src/networkmanager.cpp @@ -0,0 +1,180 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved +* Copyright (C) 2008-2009 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 3, or (at your option) any later version. +* +* 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. +* +* ============================================================ */ + + +// Self Includes +#include "networkmanager.h" +#include "networkmanager.moc" + +// Local Includes +#include "application.h" +#include "mainwindow.h" + +// Auto Includes +#include "rekonq.h" + +// Ui Includes +#include "ui_password.h" +#include "ui_proxy.h" + +// KDE Includes +#include <KMessageBox> +#include <KStandardDirs> + +// Qt Includes +#include <QtCore/QPointer> +#include <QtCore/QIODevice> + +#include <QtGui/QStyle> +#include <QtGui/QTextDocument> + +#include <QtNetwork/QAuthenticator> +#include <QtNetwork/QNetworkProxy> +#include <QtNetwork/QNetworkReply> +#include <QtNetwork/QNetworkRequest> +#include <QtNetwork/QSslError> + +#if KDE_IS_VERSION(4,2,70) +NetworkAccessManager::NetworkAccessManager(QObject *parent) + : KIO::AccessManager(parent) +#else +NetworkAccessManager::NetworkAccessManager(QObject *parent) + : KNetworkAccessManager(parent) +#endif +{ + connect(this, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), + SLOT(authenticationRequired(QNetworkReply*, QAuthenticator*))); + connect(this, SIGNAL(proxyAuthenticationRequired(const QNetworkProxy&, QAuthenticator*)), + SLOT(proxyAuthenticationRequired(const QNetworkProxy&, QAuthenticator*))); + +#ifndef QT_NO_OPENSSL + connect(this, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)), + SLOT(slotSSLErrors(QNetworkReply*, const QList<QSslError>&))); +#endif + + loadSettings(); + + QNetworkDiskCache *diskCache = new QNetworkDiskCache(this); + QString location = KStandardDirs::locateLocal("cache", "", true); + diskCache->setCacheDirectory(location); + setCache(diskCache); +} + + +void NetworkAccessManager::loadSettings() +{ + if (ReKonfig::isProxyEnabled()) + { + QNetworkProxy proxy; + if (ReKonfig::proxyType() == 0) + { + proxy.setType(QNetworkProxy::Socks5Proxy); + } + else + { + proxy.setType(QNetworkProxy::HttpProxy); + } + proxy.setHostName(ReKonfig::proxyHostName()); + proxy.setPort(ReKonfig::proxyPort()); + proxy.setUser(ReKonfig::proxyUserName()); + proxy.setPassword(ReKonfig::proxyPassword()); + + setProxy(proxy); + } +} + + + +void NetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *auth) +{ + MainWindow *mainWindow = Application::instance()->mainWindow(); + + QPointer<KDialog> dialog = new KDialog(mainWindow, Qt::Sheet); + dialog->setButtons(KDialog::Ok | KDialog::Cancel); + + Ui::passwordWidget passwordWidget; + QWidget widget; + passwordWidget.setupUi(&widget); + + dialog->setMainWidget(&widget); + + passwordWidget.iconLabel->setText(QString()); + passwordWidget.iconLabel->setPixmap(mainWindow->style()->standardIcon(QStyle::SP_MessageBoxQuestion, 0, mainWindow).pixmap(32, 32)); + + QString introMessage = i18n("<qt>Enter username and password for %1 at %2</qt>", + Qt::escape(reply->url().toString()), + Qt::escape(reply->url().toString()) ); + passwordWidget.introLabel->setText(introMessage); + passwordWidget.introLabel->setWordWrap(true); + + if (dialog->exec() == KDialog::Ok) + { + auth->setUser(passwordWidget.userNameLineEdit->text()); + auth->setPassword(passwordWidget.passwordLineEdit->text()); + } + delete dialog; +} + + +void NetworkAccessManager::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth) +{ + MainWindow *mainWindow = Application::instance()->mainWindow(); + + QPointer<KDialog> dialog = new KDialog(mainWindow, Qt::Sheet); + dialog->setButtons(KDialog::Ok | KDialog::Cancel); + + Ui::proxyWidget proxyWdg; + QWidget widget; + proxyWdg.setupUi(&widget); + + dialog->setMainWidget(&widget); + + proxyWdg.iconLabel->setText(QString()); + proxyWdg.iconLabel->setPixmap(mainWindow->style()->standardIcon(QStyle::SP_MessageBoxQuestion, 0, mainWindow).pixmap(32, 32)); + + QString introMessage = i18n("<qt>Connect to proxy %1 using:</qt>", Qt::escape(proxy.hostName()) ); + proxyWdg.introLabel->setText(introMessage); + proxyWdg.introLabel->setWordWrap(true); + + if (dialog->exec() == KDialog::Ok) + { + auth->setUser(proxyWdg.userNameLineEdit->text()); + auth->setPassword(proxyWdg.passwordLineEdit->text()); + } + delete dialog; +} + + +#ifndef QT_NO_OPENSSL +void NetworkAccessManager::slotSSLErrors(QNetworkReply *reply, const QList<QSslError> &error) +{ + MainWindow *mainWindow = Application::instance()->mainWindow(); + + QStringList errorStrings; + for (int i = 0; i < error.count(); ++i) + errorStrings += error.at(i).errorString(); + QString errors = errorStrings.join(QLatin1String("\n")); + int ret = KMessageBox::warningContinueCancel(mainWindow, + i18n("SSL Errors:\n\n") + reply->url().toString() + "\n\n" + QString(errors) + "\n\n"); + + if (ret == KMessageBox::Yes) + reply->ignoreSslErrors(); +} +#endif diff --git a/src/networkmanager.h b/src/networkmanager.h new file mode 100644 index 00000000..681d296a --- /dev/null +++ b/src/networkmanager.h @@ -0,0 +1,53 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved +* Copyright (C) 2008-2009 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 3, or (at your option) any later version. +* +* 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. +* +* ============================================================ */ + + +#ifndef NETWORKACCESSMANAGER_H +#define NETWORKACCESSMANAGER_H + +// KDE Includes +#include <KIO/AccessManager> + +// Forward Declarations +class QNetworkRequest; +class QIODevice; + + +class NetworkAccessManager : public KIO::AccessManager +{ + Q_OBJECT + +public: + NetworkAccessManager(QObject *parent = 0); + +public slots: + void loadSettings(); + +private slots: + void authenticationRequired(QNetworkReply *reply, QAuthenticator *auth); + void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth); + +#ifndef QT_NO_OPENSSL + void slotSSLErrors(QNetworkReply *reply, const QList<QSslError> &error); +#endif + +}; + +#endif // NETWORKACCESSMANAGER_H |