#include <QDebug>
#include <QTextCodec>
-#include "util.h"
-
QTextCodec *Network::_defaultCodecForServer = 0;
QTextCodec *Network::_defaultCodecForEncoding = 0;
QTextCodec *Network::_defaultCodecForDecoding = 0;
-Network::Server Network::Server::fromVariant(const QVariant &variant) {
- QVariantMap serverMap = variant.toMap();
- return Server(serverMap["Host"].toString(), serverMap["Port"].toUInt(), serverMap["Password"].toString(), serverMap["UseSSL"].toBool());
-}
-
-QVariant Network::Server::toVariant() const {
- QVariantMap serverMap;
- serverMap["Host"] = host;
- serverMap["Port"] = port;
- serverMap["Password"] = password;
- serverMap["UseSSL"] = useSsl;
- return QVariant::fromValue<QVariantMap>(serverMap);
-}
-
// ====================
// Public:
// ====================
info.codecForServer = codecForServer();
info.codecForEncoding = codecForEncoding();
info.codecForDecoding = codecForDecoding();
- info.serverList = variantServerList();
+ info.serverList = serverList();
info.useRandomServer = useRandomServer();
info.perform = perform();
info.useAutoIdentify = useAutoIdentify();
if(info.codecForServer != codecForServer()) setCodecForServer(QTextCodec::codecForName(info.codecForServer));
if(info.codecForEncoding != codecForEncoding()) setCodecForEncoding(QTextCodec::codecForName(info.codecForEncoding));
if(info.codecForDecoding != codecForDecoding()) setCodecForDecoding(QTextCodec::codecForName(info.codecForDecoding));
- if(info.serverList.count()) setServerList(info.serverList); // FIXME compare components
+ if(info.serverList.count()) setServerList(toVariantList(info.serverList)); // FIXME compare components
if(info.useRandomServer != useRandomServer()) setUseRandomServer(info.useRandomServer);
if(info.perform != perform()) setPerform(info.perform);
if(info.useAutoIdentify != useAutoIdentify()) setUseAutoIdentify(info.useAutoIdentify);
return nicks;
}
-QVariantList Network::variantServerList() const {
- QVariantList servers;
- ServerList::const_iterator serverIter = _serverList.constBegin();
- while(serverIter != _serverList.constEnd()) {
- servers << serverIter->toVariant();
- serverIter++;
- }
- return servers;
-}
-
QString Network::prefixes() {
if(_prefixes.isNull())
determinePrefixes();
}
void Network::setServerList(const QVariantList &serverList) {
- _serverList.clear();
- foreach(QVariant variant, serverList) {
- _serverList << Server::fromVariant(variant);
- }
+ _serverList = fromVariantList<Server>(serverList);
emit serverListSet(serverList);
}
}
}
-void Network::initSetServerList(const QVariantList &serverList) {
- foreach(QVariant variant, serverList) {
- _serverList << Server::fromVariant(variant);
- }
-}
-
IrcUser *Network::updateNickFromMask(const QString &mask) {
QString nick(nickFromMask(mask).toLower());
IrcUser *ircuser;
i["CodecForServer"] = info.codecForServer;
i["CodecForEncoding"] = info.codecForEncoding;
i["CodecForDecoding"] = info.codecForDecoding;
- i["ServerList"] = info.serverList;
+ i["ServerList"] = toVariantList(info.serverList);
i["UseRandomServer"] = info.useRandomServer;
i["Perform"] = info.perform;
i["UseAutoIdentify"] = info.useAutoIdentify;
info.codecForServer = i["CodecForServer"].toByteArray();
info.codecForEncoding = i["CodecForEncoding"].toByteArray();
info.codecForDecoding = i["CodecForDecoding"].toByteArray();
- info.serverList = i["ServerList"].toList();
+ info.serverList = fromVariantList<Network::Server>(i["ServerList"].toList());
info.useRandomServer = i["UseRandomServer"].toBool();
info.perform = i["Perform"].toStringList();
info.useAutoIdentify = i["UseAutoIdentify"].toBool();
QDebug operator<<(QDebug dbg, const NetworkInfo &i) {
dbg.nospace() << "(id = " << i.networkId << " name = " << i.networkName << " identity = " << i.identity
- << " codecForServer = " << i.codecForServer << " codecForEncoding = " << i.codecForEncoding << " codecForDecoding = " << i.codecForDecoding
- << " serverList = " << i.serverList << " useRandomServer = " << i.useRandomServer << " perform = " << i.perform
- << " useAutoIdentify = " << i.useAutoIdentify << " autoIdentifyService = " << i.autoIdentifyService << " autoIdentifyPassword = " << i.autoIdentifyPassword
- << " useAutoReconnect = " << i.useAutoReconnect << " autoReconnectInterval = " << i.autoReconnectInterval
- << " autoReconnectRetries = " << i.autoReconnectRetries << " unlimitedReconnectRetries = " << i.unlimitedReconnectRetries
- << " rejoinChannels = " << i.rejoinChannels << ")";
+ << " codecForServer = " << i.codecForServer << " codecForEncoding = " << i.codecForEncoding << " codecForDecoding = " << i.codecForDecoding
+ << " serverList = " << i.serverList << " useRandomServer = " << i.useRandomServer << " perform = " << i.perform
+ << " useAutoIdentify = " << i.useAutoIdentify << " autoIdentifyService = " << i.autoIdentifyService << " autoIdentifyPassword = " << i.autoIdentifyPassword
+ << " useAutoReconnect = " << i.useAutoReconnect << " autoReconnectInterval = " << i.autoReconnectInterval
+ << " autoReconnectRetries = " << i.autoReconnectRetries << " unlimitedReconnectRetries = " << i.unlimitedReconnectRetries
+ << " rejoinChannels = " << i.rejoinChannels << ")";
+ return dbg.space();
+}
+
+QDataStream &operator<<(QDataStream &out, const Network::Server &server) {
+ QVariantMap serverMap;
+ serverMap["Host"] = server.host;
+ serverMap["Port"] = server.port;
+ serverMap["Password"] = server.password;
+ serverMap["UseSSL"] = server.useSsl;
+ serverMap["sslVersion"] = server.sslVersion;
+ serverMap["UseProxy"] = server.useProxy;
+ serverMap["ProxyType"] = server.proxyType;
+ serverMap["ProxyHost"] = server.proxyHost;
+ serverMap["ProxyPort"] = server.proxyPort;
+ serverMap["ProxyUser"] = server.proxyUser;
+ serverMap["ProxyPass"] = server.proxyPass;
+ out << serverMap;
+ return out;
+}
+
+QDataStream &operator>>(QDataStream &in, Network::Server &server) {
+ QVariantMap serverMap;
+ in >> serverMap;
+ server.host = serverMap["Host"].toString();
+ server.port = serverMap["Port"].toUInt();
+ server.password = serverMap["Password"].toString();
+ server.useSsl = serverMap["UseSSL"].toBool();
+ server.sslVersion = serverMap["sslVersion"].toInt();
+ server.useProxy = serverMap["UseProxy"].toBool();
+ server.proxyType = serverMap["ProxyType"].toInt();
+ server.proxyHost = serverMap["ProxyHost"].toString();
+ server.proxyPort = serverMap["ProxyPort"].toUInt();
+ server.proxyUser = serverMap["ProxyUser"].toString();
+ server.proxyPass = serverMap["ProxyPass"].toString();
+ return in;
+}
+
+
+bool Network::Server::operator==(const Server &other) const {
+ if(host != other.host) return false;
+ if(port != other.port) return false;
+ if(password != other.password) return false;
+ if(useSsl != other.useSsl) return false;
+ if(sslVersion != other.sslVersion) return false;
+ if(useProxy != other.useProxy) return false;
+ if(proxyType != other.proxyType) return false;
+ if(proxyHost != other.proxyHost) return false;
+ if(proxyPort != other.proxyPort) return false;
+ if(proxyUser != other.proxyUser) return false;
+ if(proxyPass != other.proxyPass) return false;
+ return true;
+}
+
+bool Network::Server::operator!=(const Server &other) const {
+ return !(*this == other);
+}
+
+QDebug operator<<(QDebug dbg, const Network::Server &server) {
+ dbg.nospace() << "Server(host = " << server.host << ":" << server.port << ", useSsl = " << server.useSsl << ")";
return dbg.space();
}
#include <QString>
#include <QStringList>
#include <QList>
+#include <QNetworkProxy>
#include <QHash>
#include <QVariantMap>
#include <QPointer>
#include <QMutex>
#include "types.h"
+#include "util.h"
#include "syncableobject.h"
#include "signalproxy.h"
uint port;
QString password;
bool useSsl;
- Server() : port(0), useSsl(false) {}
- Server(const QString &host, uint port, const QString &password, bool useSsl)
- : host(host), port(port), password(password), useSsl(useSsl) {}
+ int sslVersion;
+
+ bool useProxy;
+ int proxyType;
+ QString proxyHost;
+ uint proxyPort;
+ QString proxyUser;
+ QString proxyPass;
- static Server fromVariant(const QVariant &variant);
- QVariant toVariant() const;
+ Server() : port(6667), useSsl(false), sslVersion(0), useProxy(false), proxyType(QNetworkProxy::Socks5Proxy), proxyHost("localhost"), proxyPort(8080) {}
+ Server(const QString &host, uint port, const QString &password, bool useSsl)
+ : host(host), port(port), password(password), useSsl(useSsl), sslVersion(0),
+ useProxy(false), proxyType(QNetworkProxy::Socks5Proxy), proxyHost("localhost"), proxyPort(8080) {}
+ bool operator==(const Server &other) const;
+ bool operator!=(const Server &other) const;
};
typedef QList<Server> ServerList;
QStringList nicks() const;
inline QStringList channels() const { return _ircChannels.keys(); }
inline const ServerList &serverList() const { return _serverList; }
- QVariantList variantServerList() const;
inline bool useRandomServer() const { return _useRandomServer; }
inline const QStringList &perform() const { return _perform; }
inline bool useAutoIdentify() const { return _useAutoIdentify; }
//init geters
QVariantMap initSupports() const;
- inline QVariantList initServerList() const { return variantServerList(); }
+ inline QVariantList initServerList() const { return toVariantList(serverList()); }
virtual QVariantMap initIrcUsersAndChannels() const;
//init seters
void initSetSupports(const QVariantMap &supports);
- void initSetServerList(const QVariantList &serverList);
+ inline void initSetServerList(const QVariantList &serverList) { _serverList = fromVariantList<Server>(serverList); }
virtual void initSetIrcUsersAndChannels(const QVariantMap &usersAndChannels);
IrcUser *updateNickFromMask(const QString &mask);
QByteArray codecForDecoding;
// Server entry: QString "Host", uint "Port", QString "Password", bool "UseSSL"
- QVariantList serverList;
+ Network::ServerList serverList;
bool useRandomServer;
QStringList perform;
QDataStream &operator<<(QDataStream &out, const NetworkInfo &info);
QDataStream &operator>>(QDataStream &in, NetworkInfo &info);
QDebug operator<<(QDebug dbg, const NetworkInfo &i);
-
Q_DECLARE_METATYPE(NetworkInfo)
+QDataStream &operator<<(QDataStream &out, const Network::Server &server);
+QDataStream &operator>>(QDataStream &in, Network::Server &server);
+QDebug operator<<(QDebug dbg, const Network::Server &server);
+Q_DECLARE_METATYPE(Network::Server)
+
#endif
qRegisterMetaType<Message>("Message");
qRegisterMetaType<BufferInfo>("BufferInfo");
qRegisterMetaType<NetworkInfo>("NetworkInfo");
+ qRegisterMetaType<Network::Server>("Network::Server");
qRegisterMetaType<Identity>("Identity");
qRegisterMetaType<Network::ConnectionState>("Network::ConnectionState");
qRegisterMetaTypeStreamOperators<Message>("Message");
qRegisterMetaTypeStreamOperators<BufferInfo>("BufferInfo");
qRegisterMetaTypeStreamOperators<NetworkInfo>("NetworkInfo");
+ qRegisterMetaTypeStreamOperators<Network::Server>("Network::Server");
qRegisterMetaTypeStreamOperators<Identity>("Identity");
qRegisterMetaTypeStreamOperators<qint8>("Network::ConnectionState");
void loadTranslation(const QLocale &locale);
+template<typename T>
+QVariantList toVariantList(const QList<T> &list) {
+ QVariantList variants;
+ for(int i = 0; i < list.count(); i++) {
+ variants << QVariant::fromValue<T>(list[i]);
+ }
+ return variants;
+}
+
+template<typename T>
+QList<T> fromVariantList(const QVariantList &variants) {
+ QList<T> list;
+ for(int i = 0; i < variants.count(); i++) {
+ list << variants[i].value<T>();
+ }
+ return list;
+}
+
#endif
connect(this, SIGNAL(connectRequested()), this, SLOT(connectToIrc()));
+ connect(&socket, SIGNAL(connected()), this, SLOT(socketInitialized()));
connect(&socket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(socketError(QAbstractSocket::SocketError)));
connect(&socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState)));
connect(&socket, SIGNAL(readyRead()), this, SLOT(socketHasData()));
#ifdef HAVE_SSL
- connect(&socket, SIGNAL(connected()), this, SLOT(sslSocketConnected()));
connect(&socket, SIGNAL(encrypted()), this, SLOT(socketInitialized()));
connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(sslErrors(const QList<QSslError> &)));
-#else
- connect(&socket, SIGNAL(connected()), this, SLOT(socketInitialized()));
#endif
}
Server server = usedServer();
displayStatusMsg(tr("Connecting to %1:%2...").arg(server.host).arg(server.port));
displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Connecting to %1:%2...").arg(server.host).arg(server.port));
+
+ if(server.useProxy) {
+ QNetworkProxy proxy((QNetworkProxy::ProxyType)server.proxyType, server.proxyHost, server.proxyPort, server.proxyUser, server.proxyPass);
+ socket.setProxy(proxy);
+ } else {
+ socket.setProxy(QNetworkProxy::NoProxy);
+ }
+
+#ifdef HAVE_SSL
+ socket.setProtocol((QSsl::SslProtocol)server.sslVersion);
+ if(server.useSsl)
+ socket.connectToHostEncrypted(server.host, server.port);
+ else
+ socket.connectToHost(server.host, server.port);
+#else
socket.connectToHost(server.host, server.port);
+#endif
}
void CoreNetwork::disconnectFromIrc(bool requested, const QString &reason) {
}
}
+void CoreNetwork::socketInitialized() {
+ Server server = usedServer();
#ifdef HAVE_SSL
-void CoreNetwork::sslSocketConnected() {
- if(!usedServer().useSsl)
- socketInitialized();
- else
- socket.startClientEncryption();
-}
+ if(server.useSsl && !socket.isEncrypted())
+ return;
#endif
-void CoreNetwork::socketInitialized() {
Identity *identity = identityPtr();
if(!identity) {
qCritical() << "Identity invalid!";
_tokenBucket = 5; // init with a full bucket
_tokenBucketTimer.start(_messagesPerSecond * 1000);
- QString passwd = usedServer().password;
- if(!passwd.isEmpty()) {
- putRawLine(serverEncode(QString("PASS %1").arg(passwd)));
+ if(!server.password.isEmpty()) {
+ putRawLine(serverEncode(QString("PASS %1").arg(server.password)));
}
putRawLine(serverEncode(QString("NICK :%1").arg(identity->nicks()[0])));
putRawLine(serverEncode(QString("USER %1 8 * :%2").arg(identity->ident(), identity->realName())));
void CoreNetwork::sslErrors(const QList<QSslError> &sslErrors) {
Q_UNUSED(sslErrors)
socket.ignoreSslErrors();
- /* TODO errorhandling
- QVariantMap errmsg;
- QVariantList errnums;
- foreach(QSslError err, errors) errnums << err.error();
- errmsg["SslErrors"] = errnums;
- errmsg["SslCert"] = socket.peerCertificate().toPem();
- errmsg["PeerAddress"] = socket.peerAddress().toString();
- errmsg["PeerPort"] = socket.peerPort();
- errmsg["PeerName"] = socket.peerName();
- emit sslErrors(errmsg);
- disconnectFromIrc();
- */
+ // TODO errorhandling
}
#endif // HAVE_SSL
_tokenBucket--;
}
+Network::Server CoreNetwork::usedServer() const {
+ if(_lastUsedServerIndex < serverList().count())
+ return serverList()[_lastUsedServerIndex];
+ else
+ return Network::Server();
+}
+
void CoreNetwork::requestConnect() const {
if(connectionState() != Disconnected) {
qWarning() << "Requesting connect while already being connected!";
}
void CoreNetwork::requestSetNetworkInfo(const NetworkInfo &info) {
+ Network::Server currentServer = usedServer();
setNetworkInfo(info);
Core::updateNetwork(coreSession()->user(), info);
+
+ // update _lastUsedServerIndex;
+ for(int i = 0; i < serverList().count(); i++) {
+ Network::Server server = serverList()[i];
+ if(server.host == currentServer.host && server.port == currentServer.port) {
+ _lastUsedServerIndex = i;
+ break;
+ }
+ }
}
bool setAutoWhoDone(const QString &channel);
- inline const Server &usedServer() const { return serverList()[_lastUsedServerIndex]; }
+ Server usedServer() const;
signals:
void recvRawServerMsg(QString);
void startAutoWhoCycle();
#ifdef HAVE_SSL
- void sslSocketConnected();
void sslErrors(const QList<QSslError> &errors);
#endif
QSqlQuery insertServersQuery(logDb());
insertServersQuery.prepare(queryString("insert_server"));
- foreach(QVariant server_, info.serverList) {
- QVariantMap server = server_.toMap();
- insertServersQuery.bindValue(":hostname", server["Host"]);
- insertServersQuery.bindValue(":port", server["Port"].toInt());
- insertServersQuery.bindValue(":password", server["Password"]);
- insertServersQuery.bindValue(":ssl", server["UseSSL"].toBool() ? 1 : 0);
+ foreach(Network::Server server, info.serverList) {
+ insertServersQuery.bindValue(":hostname", server.host);
+ insertServersQuery.bindValue(":port", server.port);
+ insertServersQuery.bindValue(":password", server.password);
+ insertServersQuery.bindValue(":ssl", server.useSsl ? 1 : 0);
insertServersQuery.bindValue(":userid", user.toInt());
insertServersQuery.bindValue(":networkid", info.networkId.toInt());
if(!watchQuery(serversQuery))
return nets;
- QVariantList servers;
+ Network::ServerList servers;
while(serversQuery.next()) {
- QVariantMap server;
- server["Host"] = serversQuery.value(0).toString();
- server["Port"] = serversQuery.value(1).toInt();
- server["Password"] = serversQuery.value(2).toString();
- server["UseSSL"] = serversQuery.value(3).toInt() == 1 ? true : false;
+ Network::Server server;
+ server.host = serversQuery.value(0).toString();
+ server.port = serversQuery.value(1).toUInt();
+ server.password = serversQuery.value(2).toString();
+ server.useSsl = serversQuery.value(3).toInt() == 1 ? true : false;
servers << server;
}
net.serverList = servers;
NetworkInfo info = networkInfos[id];
ui.identityList->setCurrentIndex(ui.identityList->findData(info.identity.toInt()));
ui.serverList->clear();
- foreach(QVariant v, info.serverList) {
- ui.serverList->addItem(QString("%1:%2").arg(v.toMap()["Host"].toString()).arg(v.toMap()["Port"].toUInt()));
+ foreach(Network::Server server, info.serverList) {
+ ui.serverList->addItem(QString("%1:%2").arg(server.host).arg(server.port));
}
//setItemState(id);
ui.randomServer->setChecked(info.useRandomServer);
void NetworksSettingsPage::on_addServer_clicked() {
if(currentId == 0) return;
- ServerEditDlg dlg(QVariantMap(), this);
+ ServerEditDlg dlg(Network::Server(), this);
if(dlg.exec() == QDialog::Accepted) {
networkInfos[currentId].serverList.append(dlg.serverData());
displayNetwork(currentId);
ui.serverList->setCurrentRow(ui.serverList->count()-1);
widgetHasChanged();
}
-
}
void NetworksSettingsPage::on_editServer_clicked() {
void NetworksSettingsPage::on_upServer_clicked() {
int cur = ui.serverList->currentRow();
- QVariant foo = networkInfos[currentId].serverList.takeAt(cur);
- networkInfos[currentId].serverList.insert(cur-1, foo);
+ Network::Server server = networkInfos[currentId].serverList.takeAt(cur);
+ networkInfos[currentId].serverList.insert(cur-1, server);
displayNetwork(currentId);
ui.serverList->setCurrentRow(cur-1);
widgetHasChanged();
void NetworksSettingsPage::on_downServer_clicked() {
int cur = ui.serverList->currentRow();
- QVariant foo = networkInfos[currentId].serverList.takeAt(cur);
- networkInfos[currentId].serverList.insert(cur+1, foo);
+ Network::Server server = networkInfos[currentId].serverList.takeAt(cur);
+ networkInfos[currentId].serverList.insert(cur+1, server);
displayNetwork(currentId);
ui.serverList->setCurrentRow(cur+1);
widgetHasChanged();
/**************************************************************************
* ServerEditDlg
*************************************************************************/
-
-ServerEditDlg::ServerEditDlg(const QVariant &_serverData, QWidget *parent) : QDialog(parent) {
+ServerEditDlg::ServerEditDlg(const Network::Server &server, QWidget *parent) : QDialog(parent) {
ui.setupUi(this);
ui.useSSL->setIcon(SmallIcon("document-encrypt"));
-
- QVariantMap serverData = _serverData.toMap();
- if(serverData.count()) {
- ui.host->setText(serverData["Host"].toString());
- ui.port->setValue(serverData["Port"].toUInt());
- ui.password->setText(serverData["Password"].toString());
- ui.useSSL->setChecked(serverData["UseSSL"].toBool());
- } else {
- ui.port->setValue(6667);
- }
+ ui.host->setText(server.host);
+ ui.port->setValue(server.port);
+ ui.password->setText(server.password);
+ ui.useSSL->setChecked(server.useSsl);
+ ui.sslVersion->setCurrentIndex(server.sslVersion);
+ ui.useProxy->setChecked(server.useProxy);
+ ui.proxyType->setCurrentIndex(server.proxyType == QNetworkProxy::Socks5Proxy ? 0 : 1);
+ ui.proxyHost->setText(server.proxyHost);
+ ui.proxyPort->setValue(server.proxyPort);
+ ui.proxyUsername->setText(server.proxyUser);
+ ui.proxyPassword->setText(server.proxyPass);
on_host_textChanged();
}
-QVariant ServerEditDlg::serverData() const {
- QVariantMap _serverData;
- _serverData["Host"] = ui.host->text().trimmed();
- _serverData["Port"] = ui.port->value();
- _serverData["Password"] = ui.password->text();
- _serverData["UseSSL"] = ui.useSSL->isChecked();
- return _serverData;
+Network::Server ServerEditDlg::serverData() const {
+ Network::Server server(ui.host->text().trimmed(), ui.port->value(), ui.password->text(), ui.useSSL->isChecked());
+ server.sslVersion = ui.sslVersion->currentIndex();
+ server.useProxy = ui.useProxy->isChecked();
+ server.proxyType = ui.proxyType->currentIndex() == 0 ? QNetworkProxy::Socks5Proxy : QNetworkProxy::HttpProxy;
+ server.proxyHost = ui.proxyHost->text();
+ server.proxyPort = ui.proxyPort->value();
+ server.proxyUser = ui.proxyUsername->text();
+ server.proxyPass = ui.proxyPassword->text();
+ return server;
}
void ServerEditDlg::on_host_textChanged() {
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#ifndef _NETWORKSSETTINGSPAGE_H_
-#define _NETWORKSSETTINGSPAGE_H_
+#ifndef NETWORKSSETTINGSPAGE_H
+#define NETWORKSSETTINGSPAGE_H
#include <QPixmap>
class ServerEditDlg : public QDialog {
Q_OBJECT
- public:
- ServerEditDlg(const QVariant &serverData = QVariant(), QWidget *parent = 0);
+public:
+ ServerEditDlg(const Network::Server &server = Network::Server(), QWidget *parent = 0);
- QVariant serverData() const;
+ Network::Server serverData() const;
- private slots:
- void on_host_textChanged();
+private slots:
+ void on_host_textChanged();
- private:
- Ui::ServerEditDlg ui;
+private:
+ Ui::ServerEditDlg ui;
};
<rect>
<x>0</x>
<y>0</y>
- <width>264</width>
- <height>167</height>
+ <width>386</width>
+ <height>346</height>
</rect>
</property>
<property name="windowTitle" >
<string>Dialog</string>
</property>
- <layout class="QVBoxLayout" >
+ <layout class="QVBoxLayout" name="verticalLayout_3" >
<item>
- <layout class="QGridLayout" >
- <item row="0" column="0" >
- <widget class="QLabel" name="label" >
- <property name="text" >
- <string>Server address:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1" >
- <widget class="QLabel" name="label_2" >
- <property name="text" >
- <string>Port:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <widget class="QLineEdit" name="host" />
- </item>
- <item row="1" column="1" >
- <widget class="QSpinBox" name="port" >
- <property name="minimum" >
- <number>1</number>
- </property>
- <property name="maximum" >
- <number>65535</number>
- </property>
- <property name="value" >
- <number>6667</number>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" >
- <item>
- <widget class="QLabel" name="passwordLabel" >
- <property name="text" >
- <string>Password:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLineEdit" name="password" >
- <property name="enabled" >
- <bool>true</bool>
- </property>
- <property name="echoMode" >
- <enum>QLineEdit::Password</enum>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QCheckBox" name="useSSL" >
- <property name="enabled" >
- <bool>true</bool>
+ <widget class="QTabWidget" name="tabWidget" >
+ <property name="toolTip" >
+ <string/>
</property>
- <property name="text" >
- <string>Use SSL</string>
+ <property name="currentIndex" >
+ <number>0</number>
</property>
- <property name="icon" >
- <iconset>
- <normaloff>:/16x16/actions/oxygen/16x16/actions/document-encrypt.png</normaloff>:/16x16/actions/oxygen/16x16/actions/document-encrypt.png</iconset>
+ <property name="usesScrollButtons" >
+ <bool>false</bool>
</property>
+ <widget class="QWidget" name="basic" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>356</width>
+ <height>243</height>
+ </rect>
+ </property>
+ <attribute name="title" >
+ <string>Server Info</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_4" >
+ <item>
+ <layout class="QGridLayout" name="gridLayout_2" >
+ <item row="0" column="0" >
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string>Server address:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QLabel" name="label_2" >
+ <property name="text" >
+ <string>Port:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLineEdit" name="host" />
+ </item>
+ <item row="1" column="1" >
+ <widget class="QSpinBox" name="port" >
+ <property name="minimum" >
+ <number>1</number>
+ </property>
+ <property name="maximum" >
+ <number>65535</number>
+ </property>
+ <property name="value" >
+ <number>6667</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" >
+ <item>
+ <widget class="QLabel" name="passwordLabel" >
+ <property name="text" >
+ <string>Password:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="password" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="echoMode" >
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="useSSL" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="text" >
+ <string>Use SSL</string>
+ </property>
+ <property name="icon" >
+ <iconset>
+ <normaloff>:/16x16/actions/oxygen/16x16/actions/document-encrypt.png</normaloff>:/16x16/actions/oxygen/16x16/actions/document-encrypt.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2" >
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="advanced" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>356</width>
+ <height>243</height>
+ </rect>
+ </property>
+ <attribute name="title" >
+ <string>Advanced</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_2" >
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout" >
+ <item>
+ <spacer name="horizontalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_3" >
+ <property name="text" >
+ <string>SSL Version:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="sslVersion" >
+ <property name="toolTip" >
+ <string>Do not change unless you're going to connect to a server not supporting SSLv3!</string>
+ </property>
+ <item>
+ <property name="text" >
+ <string>SSLv3 (default)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>SSLv2</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>TLSv1</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="useProxy" >
+ <property name="title" >
+ <string>Use a Proxy</string>
+ </property>
+ <property name="flat" >
+ <bool>false</bool>
+ </property>
+ <property name="checkable" >
+ <bool>true</bool>
+ </property>
+ <property name="checked" >
+ <bool>false</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout" >
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3" >
+ <item>
+ <widget class="QLabel" name="label_8" >
+ <property name="text" >
+ <string>Proxy Type:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="proxyType" >
+ <item>
+ <property name="text" >
+ <string>Socks 5</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>HTTP</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2" >
+ <item>
+ <widget class="QLabel" name="label_4" >
+ <property name="text" >
+ <string>Proxy Host:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="proxyHost" >
+ <property name="text" >
+ <string>localhost</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5" >
+ <property name="text" >
+ <string>Port:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="proxyPort" >
+ <property name="minimum" >
+ <number>1</number>
+ </property>
+ <property name="maximum" >
+ <number>65535</number>
+ </property>
+ <property name="value" >
+ <number>8080</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="gridLayout" >
+ <item row="0" column="0" >
+ <widget class="QLabel" name="label_6" >
+ <property name="text" >
+ <string>Proxy Username:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QLineEdit" name="proxyUsername" />
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="label_7" >
+ <property name="text" >
+ <string>Proxy Password:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" >
+ <widget class="QLineEdit" name="proxyPassword" >
+ <property name="echoMode" >
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
</widget>
</item>
<item>
- <spacer>
+ <spacer name="verticalSpacer" >
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0" >
<size>
<width>20</width>
- <height>40</height>
+ <height>17</height>
</size>
</property>
</spacer>
//! This is the fallback version number in case we can't autogenerate one
baseVersion = "0.3.1";
-protocolVersion = 7; //< Version of the client/core protocol
-coreNeedsProtocol = 7; //< Minimum protocol version the core needs
-clientNeedsProtocol = 7; //< Minimum protocol version the client needs
+protocolVersion = 8; //< Version of the client/core protocol
+coreNeedsProtocol = 8; //< Minimum protocol version the core needs
+clientNeedsProtocol = 8; //< Minimum protocol version the client needs
distCommittish = $Format:%H$
distCommitDate = $Format:%at$