Implements a Proxy detection (WPAD) interface for Linux, Mac OSX and Windows. Offers a GUI for manual proxy settings and automatic WPAD detection. The GUI is based on QT.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.1 KiB
108 lines
3.1 KiB
/*! @file |
|
|
|
@id $Id$ |
|
*/ |
|
// 1 2 3 4 5 6 7 8 |
|
// 45678901234567890123456789012345678901234567890123456789012345678901234567890 |
|
|
|
#ifndef PROXY_HXX |
|
#define PROXY_HXX |
|
|
|
#include <autoproxy.hxx> |
|
#include <ui_proxy.h> |
|
#include <QtGui/QDialog> |
|
#include <QtGui/QPushButton> |
|
#include <QtNetwork/QNetworkProxy> |
|
#include <QtCore/QUrl> |
|
#include <QtCore/QSettings> |
|
|
|
#include <QtCore/QDebug> |
|
|
|
class Proxy: public QDialog, private Ui::Proxy { |
|
|
|
Q_OBJECT |
|
|
|
public: |
|
|
|
Proxy(QString testUrl, QWidget* p=0): QDialog(p), _testUrl(testUrl){ |
|
setupUi(this); |
|
QSettings s("SwissSign", "ProxySettings"); |
|
_type->setCurrentIndex(s.value("default-type", 0).toInt()); |
|
_url->setText(s.value("default-server", QString()).toString()); |
|
_port->setValue(s.value("default-port", 80).toInt()); |
|
connect(&_auto, SIGNAL(proxyFound(const QUrl&, const QNetworkProxy&)), |
|
SLOT(proxyFound(const QUrl&, const QNetworkProxy&))); |
|
accept(); |
|
} |
|
|
|
public: |
|
|
|
void acceptValues() { |
|
QNetworkProxy::ProxyType type(QNetworkProxy::NoProxy); |
|
switch (_type->currentIndex()) { |
|
case 0: try { |
|
type=QNetworkProxy::NoProxy; |
|
_auto.proxy(_testUrl); |
|
} catch (...) {} break; |
|
case 1: type=QNetworkProxy::HttpProxy; break; |
|
case 2: type=QNetworkProxy::Socks5Proxy; break; |
|
} |
|
QNetworkProxy::setApplicationProxy |
|
(QNetworkProxy(type, _url->text(), _port->value())); |
|
qDebug()<<"Proxy:" |
|
<<(QNetworkProxy::applicationProxy().type() |
|
==QNetworkProxy::NoProxy |
|
?trUtf8("Kein Proxy") |
|
:QNetworkProxy::applicationProxy().type() |
|
==QNetworkProxy::HttpProxy |
|
?trUtf8("HTTP:") |
|
:QNetworkProxy::applicationProxy().type() |
|
==QNetworkProxy::Socks5Proxy |
|
?trUtf8("Socks5Proxy:") |
|
:trUtf8("System")) |
|
<<(QNetworkProxy::applicationProxy().type() |
|
==QNetworkProxy::NoProxy || |
|
QNetworkProxy::applicationProxy().type() |
|
==QNetworkProxy::DefaultProxy |
|
?QString() |
|
:trUtf8("%1:%2", "proxy host/port") |
|
.arg(QNetworkProxy::applicationProxy().hostName()) |
|
.arg(QNetworkProxy::applicationProxy().port())); |
|
} |
|
|
|
public Q_SLOTS: |
|
|
|
void proxyFound(const QUrl&, const QNetworkProxy& p) { |
|
QNetworkProxy::setApplicationProxy(p); |
|
} |
|
|
|
void on__save_clicked(bool=false) { |
|
QSettings s("SwissSign", "ProxySettings"); |
|
s.setValue("default-type", _type->currentIndex()); |
|
s.setValue("default-server", _url->text()); |
|
s.setValue("default-port", _port->value()); |
|
acceptValues(); |
|
} |
|
|
|
void on__clear_clicked(bool=false) { |
|
QSettings s("SwissSign", "ProxySettings"); |
|
s.clear(); |
|
_type->setCurrentIndex(0); |
|
_url->setText(""); |
|
_port->setValue(80); |
|
acceptValues(); |
|
} |
|
|
|
virtual void accept() { |
|
acceptValues(); |
|
QDialog::accept(); |
|
} |
|
|
|
private: |
|
|
|
proxy::Face _auto; |
|
QUrl _testUrl; |
|
|
|
}; |
|
|
|
#endif
|
|
|