summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2009-06-09 12:09:10 +0200
committerAndrea Diamantini <adjam7@gmail.com>2009-06-09 12:09:10 +0200
commitd8605c14cb57442fa0a892a2d39b67a6ccfef7a9 (patch)
treedf6f22a24d8faaf442f3a94ce635a439daa173df /src
parentfixuifiles (diff)
downloadrekonq-d8605c14cb57442fa0a892a2d39b67a6ccfef7a9.tar.xz
KDE 4.2 support. Not easy as expected..
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt84
-rw-r--r--src/kaccessmanager.cpp (renamed from src/networkaccessmanager.cpp)6
-rw-r--r--src/kaccessmanager.h54
-rw-r--r--src/networkaccessmanager.h38
-rw-r--r--src/networkmanager.cpp180
-rw-r--r--src/networkmanager.h53
6 files changed, 366 insertions, 49 deletions
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