Commit 73309685 authored by Andrea Diamantini's avatar Andrea Diamantini
Browse files

Link custom rekonq QNAM to KDE proxy settings

This is a first attempt to link our needed QNAM to KDE proxy settings.
It will try to fix proxy problems when used.

Oh... I also added some new error strings in case of proxy problems :)

CCBUG: 304378
CCBUG: 315598
parent 99d2b6b5
......@@ -99,6 +99,7 @@ set(rekonq_KDEINIT_SRCS
webtab/networkaccessmanager.cpp
webtab/previewselectorbar.cpp
webtab/protocolhandler.cpp
webtab/knetworkaccessmanager.cpp
webtab/searchenginebar.cpp
webtab/sslinfodialog.cpp
webtab/walletbar.cpp
......
......@@ -28,8 +28,10 @@
#include "icondownloader.h"
#include "icondownloader.moc"
// Local Includes
#include "knetworkaccessmanager.h"
// Qt Includes
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QFile>
......@@ -41,7 +43,7 @@ IconDownloader::IconDownloader(const KUrl &srcUrl, const KUrl &destUrl, QObject
, m_srcUrl(srcUrl)
, m_destUrl(destUrl)
{
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
KNetworkAccessManager *manager = new KNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(srcUrl));
}
......
/* ============================================================
*
* This file is a part of the rekonq project
*
* Copyright (C) 2013 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 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* ============================================================ */
// Self Includes
#include "knetworkaccessmanager.h"
#include "knetworkaccessmanager.moc"
// KDE Includes
#include <KConfig>
#include <KConfigGroup>
// Qt Includes
#include <QNetworkProxy>
KNetworkAccessManager::KNetworkAccessManager(QObject *parent)
: QNetworkAccessManager(parent)
{
// Proxy
QNetworkProxy proxy;
KConfig config("kioslaverc", KConfig::NoGlobals);
KConfigGroup proxyGroup(&config, QL1S("Proxy Settings"));
int proxyType = proxyGroup.readEntry( QL1S("ProxyType"), 0);
kDebug() << "PROXY TYPE: " << proxyType;
if (proxyType == 0)
proxy.setType(QNetworkProxy::NoProxy);
else
proxy.setType(QNetworkProxy::Socks5Proxy);
QString proxyHost = proxyGroup.readEntry( QL1S("socksProxy"), QString("") );
QStringList proxyInfoList = proxyHost.split(QL1C(' '));
kDebug() << proxyInfoList;
if (proxyInfoList.isEmpty())
return;
proxy.setHostName(proxyInfoList.at(0));
if (proxyInfoList.count() == 2)
proxy.setPort(proxyInfoList.at(1).toInt());
// proxy.setUser("username");
// proxy.setPassword("password");
//
setProxy(proxy);
}
/* ============================================================
*
* This file is a part of the rekonq project
*
* Copyright (C) 2013 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 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* ============================================================ */
#ifndef K_NETWORK_ACCESS_MANAGER_H
#define K_NETWORK_ACCESS_MANAGER_H
// Rekonq Includes
#include "rekonq_defines.h"
// Qt Includes
#include <QNetworkAccessManager>
class REKONQ_TESTS_EXPORT KNetworkAccessManager : public QNetworkAccessManager
{
Q_OBJECT
public:
explicit KNetworkAccessManager(QObject *parent = 0);
};
#endif // K_NETWORK_ACCESS_MANAGER_H
......@@ -32,6 +32,7 @@
// Local Includes
#include "adblockmanager.h"
#include "knetworkaccessmanager.h"
// KDE Includes
#include <KLocale>
......@@ -113,7 +114,7 @@ QNetworkAccessManager *NetworkAccessManager::privateAccessManager()
{
if (s_privateAccessManager == 0)
{
s_privateAccessManager = new QNetworkAccessManager();
s_privateAccessManager = new KNetworkAccessManager();
}
return s_privateAccessManager;
......
......@@ -726,7 +726,39 @@ QString WebPage::errorPage(QNetworkReply *reply)
return html;
}
QString errString = reply->errorString().toLower();
if (errString.contains(QL1S("proxy")))
{
msg += QL1S("<h2>") + i18n("Oops... Proxy problems!") + QL1S("</h2>");
QString faceIconPath = QString("file://") + KIconLoader::global()->iconPath("face-surprise" , -KIconLoader::SizeHuge, false);
msg += QL1S("<table>");
msg += QL1S("<tr><td width=\"100px\">");
msg += QL1S("<img style=\"margin: 0 auto;\" src=\"") + faceIconPath + QL1S("\" />");
msg += QL1S("</td><td>");
msg += QL1S("<p><em>") + reply->errorString() + QL1S("</em></p>");
msg += QL1S("<p>");
msg += i18n("It seems you are having problems with your <a href=\"%1\">proxy settings</a>. Try checking them, <br /><br />then <a href=\"%4\">try again</a>.<br />", QL1S("rekonq:settings/proxy"), urlString);
msg += QL1S("</p>");
msg += QL1S("</td></tr></table>");
// done. Replace variables and show it
QString html = QL1S(file.readAll());
html.replace(QL1S("$DEFAULT_PATH"), dataPath);
html.replace(QL1S("$PAGE_TITLE"), title);
html.replace(QL1S("$MAIN_CONTENT"), msg);
html.replace(QL1S("$GENERAL_FONT"), QWebSettings::globalSettings()->fontFamily(QWebSettings::StandardFont));
return html;
}
// general error page
msg += QL1S("<h2>") + i18n("Oops! Cannot load <em>%1</em>", urlString) + QL1S("</h1>");
QString faceIconPath = QString("file://") + KIconLoader::global()->iconPath("face-surprise" , -KIconLoader::SizeHuge, false);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment