X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcommon%2Fnetwork.cpp;h=fc8b508ded73c705ea188e681728408f0fe46346;hb=710edfe368ed1db79cc274164523d14afc1b2c9d;hp=df2a8376788417225175b6854ea61040be960cf0;hpb=a5dfcc8ecf8b81025d24b3c5c816169e3e030ea4;p=quassel.git diff --git a/src/common/network.cpp b/src/common/network.cpp index df2a8376..fc8b508d 100644 --- a/src/common/network.cpp +++ b/src/common/network.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel Project * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -22,26 +22,10 @@ #include #include -#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(serverMap); -} - // ==================== // Public: // ==================== @@ -94,7 +78,7 @@ NetworkInfo Network::networkInfo() const { info.codecForServer = codecForServer(); info.codecForEncoding = codecForEncoding(); info.codecForDecoding = codecForDecoding(); - info.serverList = variantServerList(); + info.serverList = serverList(); info.useRandomServer = useRandomServer(); info.perform = perform(); info.useAutoIdentify = useAutoIdentify(); @@ -115,7 +99,7 @@ void Network::setNetworkInfo(const NetworkInfo &info) { 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); @@ -152,16 +136,6 @@ QStringList Network::nicks() const { 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(); @@ -477,10 +451,7 @@ void Network::setIdentity(IdentityId id) { } void Network::setServerList(const QVariantList &serverList) { - _serverList.clear(); - foreach(QVariant variant, serverList) { - _serverList << Server::fromVariant(variant); - } + _serverList = fromVariantList(serverList); emit serverListSet(serverList); } @@ -614,12 +585,6 @@ void Network::initSetSupports(const QVariantMap &supports) { } } -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; @@ -729,7 +694,7 @@ QDataStream &operator<<(QDataStream &out, const NetworkInfo &info) { 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; @@ -753,7 +718,7 @@ QDataStream &operator>>(QDataStream &in, NetworkInfo &info) { info.codecForServer = i["CodecForServer"].toByteArray(); info.codecForEncoding = i["CodecForEncoding"].toByteArray(); info.codecForDecoding = i["CodecForDecoding"].toByteArray(); - info.serverList = i["ServerList"].toList(); + info.serverList = fromVariantList(i["ServerList"].toList()); info.useRandomServer = i["UseRandomServer"].toBool(); info.perform = i["Perform"].toStringList(); info.useAutoIdentify = i["UseAutoIdentify"].toBool(); @@ -769,11 +734,70 @@ QDataStream &operator>>(QDataStream &in, NetworkInfo &info) { 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(); }