X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetwork.cpp;h=1098b0a33c14e9294c14fd51e48d8662204d47ae;hp=ead100d8e5f208ac31620ba3c86a065bc58f9fb1;hb=1514aaae673660c7a3e2a82545b8c3947ea3f9b7;hpb=a33e42aee121185f479667b2104a15fc2033762e diff --git a/src/common/network.cpp b/src/common/network.cpp index ead100d8..1098b0a3 100644 --- a/src/common/network.cpp +++ b/src/common/network.cpp @@ -36,6 +36,7 @@ Network::Network(const NetworkId &networkid, QObject *parent) _networkId(networkid), _identity(0), _myNick(QString()), + _latency(0), _networkName(QString("")), _currentServer(QString()), _connected(false), @@ -208,7 +209,6 @@ void Network::ircUserDestroyed() { QHash::iterator ircUserIter = _ircUsers.begin(); while(ircUserIter != _ircUsers.end()) { if(ircUser == *ircUserIter) { - emit deletedIrcUserRemoved(ircUserIter.key()); ircUserIter = _ircUsers.erase(ircUserIter); break; } @@ -216,30 +216,6 @@ void Network::ircUserDestroyed() { } } -void Network::removeDeletedIrcUser(const QString &username) { - // DO NOT CALL THIS SLOT EVER!!! - - // this slots purpose is only to remove deleted users that haven't been synced yet. - // Reason: - // as a user parting a channel results in it's deletion if it is no longer in any known channel - // this action can only be communicated if the slaves are allready in sync. - // so if such a deleted user isn't synced in slave mode, we kill and remove it. - - Q_ASSERT(proxy()); - - if(!_ircUsers.contains(username)) - return; - - IrcUser *ircUser = _ircUsers[username]; - - if(ircUser->isInitialized()) - return; - - _ircUsers.remove(username); - emit ircUserRemoved(username); - emit ircUserRemoved(ircUser); -} - void Network::removeIrcUser(IrcUser *ircuser) { QString nick = _ircUsers.key(ircuser); if(nick.isNull()) @@ -454,6 +430,13 @@ void Network::setMyNick(const QString &nickname) { emit myNickSet(nickname); } +void Network::setLatency(int latency) { + if(_latency == latency) + return; + _latency = latency; + emit latencySet(latency); +} + void Network::setIdentity(IdentityId id) { _identity = id; emit identitySet(id); @@ -554,7 +537,7 @@ QVariantMap Network::initIrcUsersAndChannels() const { QHash::const_iterator channelIter = _ircChannels.constBegin(); QHash::const_iterator channelIterEnd = _ircChannels.constEnd(); while(channelIter != channelIterEnd) { - channels[channelIter.key()] = channelIter.value()->toVariantMap(); + channels[channelIter.value()->name()] = channelIter.value()->toVariantMap(); channelIter++; } usersAndChannels["channels"] = channels; @@ -564,7 +547,7 @@ QVariantMap Network::initIrcUsersAndChannels() const { void Network::initSetIrcUsersAndChannels(const QVariantMap &usersAndChannels) { Q_ASSERT(proxy()); - if(!_ircUsers.isEmpty() || !_ircChannels.isEmpty()) { + if(isInitialized()) { qWarning() << "Network" << networkId() << "received init data for users and channels allthough there allready are known users or channels!"; return; } @@ -701,18 +684,24 @@ void Network::emitConnectionError(const QString &errorMsg) { // ==================== void Network::determinePrefixes() { // seems like we have to construct them first - QString PREFIX = support("PREFIX"); + QString prefix = support("PREFIX"); - if(PREFIX.startsWith("(") && PREFIX.contains(")")) { - _prefixes = PREFIX.section(")", 1); - _prefixModes = PREFIX.mid(1).section(")", 0, 0); + if(prefix.startsWith("(") && prefix.contains(")")) { + _prefixes = prefix.section(")", 1); + _prefixModes = prefix.mid(1).section(")", 0, 0); } else { QString defaultPrefixes("~&@%+"); QString defaultPrefixModes("qaohv"); + if(prefix.isEmpty()) { + _prefixes = defaultPrefixes; + _prefixModes = defaultPrefixModes; + return; + } + // we just assume that in PREFIX are only prefix chars stored for(int i = 0; i < defaultPrefixes.size(); i++) { - if(PREFIX.contains(defaultPrefixes[i])) { + if(prefix.contains(defaultPrefixes[i])) { _prefixes += defaultPrefixes[i]; _prefixModes += defaultPrefixModes[i]; } @@ -724,7 +713,7 @@ void Network::determinePrefixes() { // well... our assumption was obviously wrong... // check if it's only prefix modes for(int i = 0; i < defaultPrefixes.size(); i++) { - if(PREFIX.contains(defaultPrefixModes[i])) { + if(prefix.contains(defaultPrefixModes[i])) { _prefixes += defaultPrefixes[i]; _prefixModes += defaultPrefixModes[i]; }