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

/*! @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