From bbbe82faba06890e7bcc739582e2527fcf671096 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Mon, 3 Aug 2009 23:52:55 +0200 Subject: Hopefully last fix for KDE 4.2.x with x minor than 70.. --- src/CMakeLists.txt | 2 +- src/networkaccessmanager.cpp | 208 +++++++++++++++++++++++++++++++++++++++++++ src/networkaccessmanager.h | 45 ++++++++-- src/networkmanager.cpp | 208 ------------------------------------------- src/networkmanager.h | 60 ------------- 5 files changed, 248 insertions(+), 275 deletions(-) create mode 100644 src/networkaccessmanager.cpp delete mode 100644 src/networkmanager.cpp delete mode 100644 src/networkmanager.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e8c39158..a0bcbfb1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,7 @@ ### ------- SETTING REKONQ FILES.. SET( rekonq_SRCS - networkmanager.cpp + networkaccessmanager.cpp autosaver.cpp application.cpp mainwindow.cpp diff --git a/src/networkaccessmanager.cpp b/src/networkaccessmanager.cpp new file mode 100644 index 00000000..3d4091bb --- /dev/null +++ b/src/networkaccessmanager.cpp @@ -0,0 +1,208 @@ +/* ============================================================ +* +* 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 +#include + + +NetworkAccessManager::NetworkAccessManager(QObject *parent) + : QNetworkAccessManager(parent) + , m_diskCache(0) +{ + 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 + + // load AccessManager Settings + loadSettings(); + + // resetting disk cache + resetDiskCache(); +} + + +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::resetDiskCache() +{ + if(!m_diskCache) + { + m_diskCache = new QNetworkDiskCache(this); + QString location = KStandardDirs::locateLocal("cache", "", true); + kDebug() << location; + + m_diskCache->setCacheDirectory(location); + setCache(m_diskCache); + } + else + { + QString location = m_diskCache->cacheDirectory(); +// setCache(0); +// delete m_diskCache; + + QDir cacheDir(location + QString("/http") ); + QStringList fileList = cacheDir.entryList(); + foreach(QString str, fileList) + { + QFile file(str); + file.remove(); + } + +// m_diskCache = new QNetworkDiskCache(this); +// m_diskCache->setCacheDirectory(location); +// setCache(m_diskCache); + } +} + + +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 eb3ee071..3bfa7eff 100644 --- a/src/networkaccessmanager.h +++ b/src/networkaccessmanager.h @@ -2,7 +2,8 @@ * * This file is a part of the rekonq project * -* Copyright (C) 2009 by Andrea Diamantini +* 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 @@ -18,10 +19,42 @@ * ============================================================ */ -#include +#ifndef NETWORKMANAGER_H +#define NETWORKMANAGER_H -#if KDE_IS_VERSION(4,2,70) - #include "networkmanager.h" -#else - #include "kaccessmanager.h" +// KDE Includes +// #include + +#include + +// Forward Declarations +class QNetworkDiskCache; + +// using namespace KIO; + +class NetworkAccessManager : public QNetworkAccessManager +{ + Q_OBJECT + +public: + NetworkAccessManager(QObject *parent = 0); + + void resetDiskCache(); + +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 + +private: + QNetworkDiskCache *m_diskCache; + +}; + +#endif // NETWORKMANAGER_H diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp deleted file mode 100644 index 3d4091bb..00000000 --- a/src/networkmanager.cpp +++ /dev/null @@ -1,208 +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 "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 -#include - - -NetworkAccessManager::NetworkAccessManager(QObject *parent) - : QNetworkAccessManager(parent) - , m_diskCache(0) -{ - 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 - - // load AccessManager Settings - loadSettings(); - - // resetting disk cache - resetDiskCache(); -} - - -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::resetDiskCache() -{ - if(!m_diskCache) - { - m_diskCache = new QNetworkDiskCache(this); - QString location = KStandardDirs::locateLocal("cache", "", true); - kDebug() << location; - - m_diskCache->setCacheDirectory(location); - setCache(m_diskCache); - } - else - { - QString location = m_diskCache->cacheDirectory(); -// setCache(0); -// delete m_diskCache; - - QDir cacheDir(location + QString("/http") ); - QStringList fileList = cacheDir.entryList(); - foreach(QString str, fileList) - { - QFile file(str); - file.remove(); - } - -// m_diskCache = new QNetworkDiskCache(this); -// m_diskCache->setCacheDirectory(location); -// setCache(m_diskCache); - } -} - - -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 deleted file mode 100644 index 3bfa7eff..00000000 --- a/src/networkmanager.h +++ /dev/null @@ -1,60 +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. -* -* ============================================================ */ - - -#ifndef NETWORKMANAGER_H -#define NETWORKMANAGER_H - -// KDE Includes -// #include - -#include - -// Forward Declarations -class QNetworkDiskCache; - -// using namespace KIO; - -class NetworkAccessManager : public QNetworkAccessManager -{ - Q_OBJECT - -public: - NetworkAccessManager(QObject *parent = 0); - - void resetDiskCache(); - -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 - -private: - QNetworkDiskCache *m_diskCache; - -}; - -#endif // NETWORKMANAGER_H -- cgit v1.2.1