From d8605c14cb57442fa0a892a2d39b67a6ccfef7a9 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Tue, 9 Jun 2009 12:09:10 +0200 Subject: KDE 4.2 support. Not easy as expected.. --- src/CMakeLists.txt | 84 ++++++++++++++++---- src/kaccessmanager.cpp | 176 ++++++++++++++++++++++++++++++++++++++++++ src/kaccessmanager.h | 54 +++++++++++++ src/networkaccessmanager.cpp | 176 ------------------------------------------ src/networkaccessmanager.h | 38 ++------- src/networkmanager.cpp | 180 +++++++++++++++++++++++++++++++++++++++++++ src/networkmanager.h | 53 +++++++++++++ 7 files changed, 539 insertions(+), 222 deletions(-) create mode 100644 src/kaccessmanager.cpp create mode 100644 src/kaccessmanager.h delete mode 100644 src/networkaccessmanager.cpp create mode 100644 src/networkmanager.cpp create mode 100644 src/networkmanager.h (limited to 'src') 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/kaccessmanager.cpp b/src/kaccessmanager.cpp new file mode 100644 index 00000000..c298ed88 --- /dev/null +++ b/src/kaccessmanager.cpp @@ -0,0 +1,176 @@ +/* ============================================================ +* +* 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 +* +* +* 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 "kaccessmanager.h" +#include "kaccessmanager.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 +#include + +// Qt Includes +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + + +NetworkAccessManager::NetworkAccessManager(QObject *parent) + : KNetworkAccessManager(parent) +{ + 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&)), + SLOT(slotSSLErrors(QNetworkReply*, const QList&))); +#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 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("Enter username and password for %1 at %2", + 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 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("Connect to proxy %1 using:", 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 &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/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 +* +* +* 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 +#include + +// 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 &error); +#endif + +}; + +#endif // KACCESSMANAGER_H diff --git a/src/networkaccessmanager.cpp b/src/networkaccessmanager.cpp deleted file mode 100644 index 086ff165..00000000 --- a/src/networkaccessmanager.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/* ============================================================ -* -* 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 -* -* -* 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 "networkaccessmanager.h" -#include "networkaccessmanager.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 -#include - -// Qt Includes -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - - -NetworkAccessManager::NetworkAccessManager(QObject *parent) - : AccessManager(parent) -{ - 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&)), - SLOT(slotSSLErrors(QNetworkReply*, const QList&))); -#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 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("Enter username and password for %1 at %2", - 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 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("Connect to proxy %1 using:", 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 &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/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 +* Copyright (C) 2009 by Andrea Diamantini * * * This program is free software; you can redistribute it @@ -19,35 +18,10 @@ * ============================================================ */ -#ifndef NETWORKACCESSMANAGER_H -#define NETWORKACCESSMANAGER_H +#include -// KDE Includes -#include - -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 &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 +* +* +* 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 +#include + +// Qt Includes +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#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&)), + SLOT(slotSSLErrors(QNetworkReply*, const QList&))); +#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 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("Enter username and password for %1 at %2", + 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 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("Connect to proxy %1 using:", 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 &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 +* +* +* 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 + +// 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 &error); +#endif + +}; + +#endif // NETWORKACCESSMANAGER_H -- cgit v1.2.1