From ca366e3b1f3439b49c26cfe2358fe941c20041e9 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Mon, 8 Jun 2009 15:58:15 +0200 Subject: bookmark toolbar displaying ALL the bookmarks. This commit is based on patch from Matthieu Gicquel (many thanks). While I don't like this "super-filled" bm toolbar, this is probably the best solution, waiting for an akonadi based bookmarks model. --- src/application.cpp | 2 +- src/bookmarks.cpp | 56 +++++++++++++++++++++++++++++++++++++++-------------- src/bookmarks.h | 5 ++++- 3 files changed, 47 insertions(+), 16 deletions(-) diff --git a/src/application.cpp b/src/application.cpp index bd6e6d48..94821653 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -178,7 +178,7 @@ BookmarkProvider *Application::bookmarkProvider() { if (!s_bookmarkProvider) { - s_bookmarkProvider = new BookmarkProvider(); + s_bookmarkProvider = new BookmarkProvider(instance()->mainWindow()); } return s_bookmarkProvider; } diff --git a/src/bookmarks.cpp b/src/bookmarks.cpp index d280f376..ace45c2f 100644 --- a/src/bookmarks.cpp +++ b/src/bookmarks.cpp @@ -121,7 +121,12 @@ BookmarkMenu::~BookmarkMenu() KMenu *BookmarkMenu::viewContextMenu(QAction *action) { - return contextMenu(action); + // contextMenu() returns an invalid KMenu (seg fault) for the folders in the toolbar + KMenu *menu = contextMenu(action); + if(menu) + return menu; + + return 0; // new KMenu(); } @@ -145,10 +150,11 @@ void BookmarkMenu::slotAddBookmark() BookmarkProvider::BookmarkProvider(QWidget *parent) - : QWidget(parent) + : QObject(parent) + , m_parent(parent) , m_manager(0) , m_owner(0) - , m_menu(new KMenu(this)) + , m_menu(new KMenu(m_parent)) , m_actionCollection(new KActionCollection(this)) , m_bookmarkMenu(0) , m_bookmarkToolBar(0) @@ -197,7 +203,7 @@ BookmarkProvider::~BookmarkProvider() void BookmarkProvider::setupToolBar() { - m_bookmarkToolBar = new KToolBar(this); + m_bookmarkToolBar = new KToolBar(m_parent); m_bookmarkToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); m_bookmarkToolBar->setIconDimensions(16); m_bookmarkToolBar->setAcceptDrops(true); @@ -222,25 +228,18 @@ void BookmarkProvider::slotBookmarksChanged(const QString &group, const QString return; } - KActionCollection bookmarkCollection(this); - KBookmarkGroup toolBarGroup = m_manager->toolbar(); if (toolBarGroup.isNull()) return; + m_bookmarkToolBar->clear(); + KBookmark bookmark = toolBarGroup.first(); while (!bookmark.isNull()) { - if (!bookmark.isGroup()) - { - KAction *action = new KBookmarkAction(bookmark, m_owner, this); - QString text = bookmark.address(); - bookmarkCollection.addAction(text, action); - } + m_bookmarkToolBar->addAction(fillBookmarkBar(bookmark)); bookmark = toolBarGroup.next(bookmark); } - m_bookmarkToolBar->clear(); - m_bookmarkToolBar->addActions(bookmarkCollection.actions()); } @@ -282,3 +281,32 @@ KAction* BookmarkProvider::bookmarkToolBarAction() bookmarkToolBarAction->setShortcutConfigurable(false); return bookmarkToolBarAction; } + + +KAction *BookmarkProvider::fillBookmarkBar(const KBookmark &bookmark) +{ + if (bookmark.isGroup()) + { + KBookmarkGroup group = bookmark.toGroup(); + KBookmark bm = group.first(); + KActionMenu *menuAction = new KActionMenu(KIcon(bookmark.icon()), bookmark.text(), this); + menuAction->setDelayed(false); + while (!bm.isNull()) + { + menuAction->addAction(fillBookmarkBar(bm)); + bm = group.next(bm); + } + return menuAction; + } + + if(bookmark.isSeparator()) + { + KAction *a = new KAction(this); + a->setSeparator(true); + return a; + } + else + { + return new KBookmarkAction(bookmark, m_owner, this); + } +} diff --git a/src/bookmarks.h b/src/bookmarks.h index 1de181e3..4e2349ad 100644 --- a/src/bookmarks.h +++ b/src/bookmarks.h @@ -156,7 +156,7 @@ protected slots: * * */ -class BookmarkProvider : public QWidget +class BookmarkProvider : public QObject { Q_OBJECT @@ -221,8 +221,11 @@ public slots: void slotBookmarksChanged(const QString &group, const QString &caller); private: + KAction *fillBookmarkBar(const KBookmark &bookmark); void setupToolBar(); + QWidget *m_parent; + KBookmarkManager *m_manager; BookmarkOwner *m_owner; KMenu *m_menu; -- cgit v1.2.1 From 7ac537d5e38660c79e9da2ab730cb55ca48f6328 Mon Sep 17 00:00:00 2001 From: mlaurent Date: Mon, 8 Jun 2009 11:55:38 +0000 Subject: fixuifiles git-svn-id: svn+ssh://svn.kde.org/home/kde/trunk/playground/network/rekonq@978867 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- src/cookies.ui | 3 --- src/cookiesexceptions.ui | 3 --- src/history.ui | 3 --- 3 files changed, 9 deletions(-) diff --git a/src/cookies.ui b/src/cookies.ui index ae1c4a2b..992cd995 100644 --- a/src/cookies.ui +++ b/src/cookies.ui @@ -16,9 +16,6 @@ 0 - - Form - diff --git a/src/cookiesexceptions.ui b/src/cookiesexceptions.ui index 3e28b42a..0d8ae84f 100644 --- a/src/cookiesexceptions.ui +++ b/src/cookiesexceptions.ui @@ -10,9 +10,6 @@ 400 - - Form - diff --git a/src/history.ui b/src/history.ui index fb694f8f..1f3e1016 100644 --- a/src/history.ui +++ b/src/history.ui @@ -10,9 +10,6 @@ 381 - - Form - -- cgit v1.2.1 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.. --- CMakeLists.txt | 75 +++++++++++++----- 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 +++++++++++++ 8 files changed, 596 insertions(+), 240 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 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/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 From 79034d36716c6b4d9b3093ca81313503aab36624 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Tue, 9 Jun 2009 12:11:01 +0200 Subject: 0.1.4 version with KDE 4.2 support. --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index ef724a68..d21bb580 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -31,7 +31,7 @@ static const char description[] = I18N_NOOP("WebKit based Web Browser for KDE"); -static const char version[] = "0.1.3"; +static const char version[] = "0.1.4"; int main(int argc, char **argv) -- cgit v1.2.1