Proxy settings loading for global access network manager for web browsers.

This commit is contained in:
Martin Rotter 2013-07-18 17:44:23 +02:00
parent beb8ba41d9
commit d779e74557
9 changed files with 69 additions and 9 deletions

View File

@ -181,6 +181,7 @@ set(APP_SOURCES
src/core/localization.cpp
src/core/dynamicshortcuts.cpp
src/core/basenetworkaccessmanager.cpp
src/core/webBrowsernetworkaccessmanager.cpp
# Basic application sources.
src/main.cpp
@ -212,6 +213,7 @@ set(APP_HEADERS
# CORE headers.
src/core/basenetworkaccessmanager.h
src/core/webBrowsernetworkaccessmanager.h
)
# Add form files.

View File

@ -10,10 +10,36 @@ BaseNetworkAccessManager::BaseNetworkAccessManager(QObject *parent)
loadSettings();
}
BaseNetworkAccessManager::~BaseNetworkAccessManager() {
qDebug("Destroying BaseNetworkAccessManager instance.");
}
void BaseNetworkAccessManager::loadSettings() {
QNetworkProxy new_proxy;
// TODO: Continue here.
// Load proxy values from settings.
QNetworkProxy::ProxyType selected_proxy_type = static_cast<QNetworkProxy::ProxyType>(Settings::getInstance()->value(APP_CFG_PROXY,
"proxy_type",
QNetworkProxy::NoProxy).toInt());
if (selected_proxy_type == QNetworkProxy::NoProxy) {
// No extra setting is needed, set new proxy and exit this method.
setProxy(QNetworkProxy::NoProxy);
return;
}
// Custom proxy is selected, set it up.
new_proxy.setType(selected_proxy_type);
new_proxy.setHostName(Settings::getInstance()->value(APP_CFG_PROXY,
"host").toString());
new_proxy.setPort(Settings::getInstance()->value(APP_CFG_PROXY,
"port", 80).toInt());
new_proxy.setUser(Settings::getInstance()->value(APP_CFG_PROXY,
"username").toString());
new_proxy.setPassword(Settings::getInstance()->value(APP_CFG_PROXY,
"password").toString());
setProxy(new_proxy);
qDebug("Settings of BaseNetworkAccessManager changed.");
}
QNetworkReply *BaseNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op,

View File

@ -8,9 +8,10 @@ class BaseNetworkAccessManager : public QNetworkAccessManager {
Q_OBJECT
public:
explicit BaseNetworkAccessManager(QObject *parent = 0);
virtual ~BaseNetworkAccessManager();
public slots:
void loadSettings();
virtual void loadSettings();
protected:
QNetworkReply *createRequest(Operation op,

View File

@ -0,0 +1,9 @@
#include "core/webbrowsernetworkaccessmanager.h"
WebBrowserNetworkAccessManager::WebBrowserNetworkAccessManager(QObject *parent)
: BaseNetworkAccessManager(parent) {
}
WebBrowserNetworkAccessManager::~WebBrowserNetworkAccessManager() {
}

View File

@ -0,0 +1,15 @@
#ifndef WEBBROWSERNETWORKACCESSMANAGER_H
#define WEBBROWSERNETWORKACCESSMANAGER_H
#include "core/basenetworkaccessmanager.h"
class WebBrowserNetworkAccessManager : public BaseNetworkAccessManager {
Q_OBJECT
public:
explicit WebBrowserNetworkAccessManager(QObject *parent = 0);
virtual ~WebBrowserNetworkAccessManager();
};
#endif // WEBBROWSERNETWORKACCESSMANAGER_H

View File

@ -1,4 +1,4 @@
#include "core/basenetworkaccessmanager.h"
#include "core/webbrowsernetworkaccessmanager.h"
#include "gui/basewebpage.h"
#include "gui/webbrowser.h"

View File

@ -11,6 +11,7 @@
#include "core/localization.h"
#include "core/systemfactory.h"
#include "core/dynamicshortcuts.h"
#include "core/webbrowsernetworkaccessmanager.h"
FormSettings::FormSettings(QWidget *parent) : QDialog(parent), m_ui(new Ui::FormSettings) {
@ -116,6 +117,9 @@ void FormSettings::saveProxy() {
m_ui->m_txtProxyPassword->text());
Settings::getInstance()->setValue(APP_CFG_PROXY, "port",
m_ui->m_spinProxyPort->value());
// Reload settings for all network access managers.
WebBrowser::globalNetworkManager()->loadSettings();
}
void FormSettings::loadLanguage() {

View File

@ -2,10 +2,12 @@
#include <QToolBar>
#include <QAction>
#include <QPointer>
#include <QApplication>
#include <QMessageBox>
#include "core/basenetworkaccessmanager.h"
#include "core/webbrowsernetworkaccessmanager.h"
#include "gui/basewebview.h"
#include "gui/basewebpage.h"
#include "gui/webbrowser.h"
@ -13,7 +15,7 @@
#include "gui/themefactory.h"
QPointer<BaseNetworkAccessManager> WebBrowser::m_networkManager;
QPointer<WebBrowserNetworkAccessManager> WebBrowser::m_networkManager;
QList<WebBrowser*> WebBrowser::m_runningWebBrowsers;
WebBrowser::WebBrowser(QWidget *parent)
@ -112,9 +114,10 @@ QList<WebBrowser *> WebBrowser::runningWebBrowsers() {
return m_runningWebBrowsers;
}
BaseNetworkAccessManager *WebBrowser::globalNetworkManager() {
WebBrowserNetworkAccessManager *WebBrowser::globalNetworkManager() {
if (m_networkManager.isNull()) {
m_networkManager = new BaseNetworkAccessManager();
// TODO: Not sure if qApp is needed here.
m_networkManager = new WebBrowserNetworkAccessManager(qApp);
}
return m_networkManager;

View File

@ -8,7 +8,7 @@ class QToolBar;
class QVBoxLayout;
class LocationLineEdit;
class BaseWebView;
class BaseNetworkAccessManager;
class WebBrowserNetworkAccessManager;
class WebBrowser : public QWidget {
Q_OBJECT
@ -19,7 +19,7 @@ class WebBrowser : public QWidget {
void setupIcons();
static BaseNetworkAccessManager *globalNetworkManager();
static WebBrowserNetworkAccessManager *globalNetworkManager();
static QList<WebBrowser*> runningWebBrowsers();
protected:
@ -40,7 +40,7 @@ class WebBrowser : public QWidget {
QAction *m_actionReload;
QAction *m_actionStop;
static QPointer<BaseNetworkAccessManager> m_networkManager;
static QPointer<WebBrowserNetworkAccessManager> m_networkManager;
static QList<WebBrowser*> m_runningWebBrowsers;
};