X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcore%2Fnetworkconnection.cpp;h=0a2604c0964b04e7afb505ff677533bdf5c806c2;hb=a2d4978097260c8af1f51ade497071793db2a0c0;hp=651a1bea9dc0875d88d88822a4bdcb2a95f621c1;hpb=da3aa4136fe01e142238f0f42fe1273481037b9d;p=quassel.git diff --git a/src/core/networkconnection.cpp b/src/core/networkconnection.cpp index 651a1bea..0a2604c0 100644 --- a/src/core/networkconnection.cpp +++ b/src/core/networkconnection.cpp @@ -46,7 +46,13 @@ NetworkConnection::NetworkConnection(Network *network, CoreSession *session) : Q _autoReconnectCount(0) { _autoReconnectTimer.setSingleShot(true); + + // TODO make configurable + _whoTimer.setInterval(60 * 1000); + _whoTimer.setSingleShot(false); + connect(&_autoReconnectTimer, SIGNAL(timeout()), this, SLOT(doAutoReconnect())); + connect(&_whoTimer, SIGNAL(timeout()), this, SLOT(sendWho())); connect(network, SIGNAL(currentServerSet(const QString &)), this, SLOT(networkInitialized(const QString &))); connect(network, SIGNAL(useAutoReconnectSet(bool)), this, SLOT(autoReconnectSettingsChanged())); @@ -204,7 +210,8 @@ void NetworkConnection::networkInitialized(const QString ¤tServer) { setConnectionState(Network::Initialized); network()->setConnected(true); emit connected(networkId()); - + sendWho(); + _whoTimer.start(); } void NetworkConnection::sendPerform() { @@ -228,7 +235,8 @@ void NetworkConnection::sendPerform() { channels.append(chan); } } - userInputHandler()->handleJoin(statusBuf, QString("%1 %2").arg(channels.join(",")).arg(keys.join(","))); + QString joinString = QString("%1 %2").arg(channels.join(",")).arg(keys.join(",")).trimmed(); + if(!joinString.isEmpty()) userInputHandler()->handleJoin(statusBuf, joinString); } void NetworkConnection::disconnectFromIrc() { @@ -257,6 +265,8 @@ void NetworkConnection::socketError(QAbstractSocket::SocketError) { setConnectionState(Network::Disconnected); socketDisconnected(); } + //qDebug() << "exiting..."; + //exit(1); } void NetworkConnection::socketConnected() { @@ -294,6 +304,7 @@ void NetworkConnection::socketStateChanged(QAbstractSocket::SocketState socketSt } void NetworkConnection::socketDisconnected() { + _whoTimer.stop(); network()->setConnected(false); emit disconnected(networkId()); if(_autoReconnectCount == 0) emit quitRequested(networkId()); @@ -338,6 +349,12 @@ void NetworkConnection::putCmd(const QString &cmd, const QVariantList ¶ms, c putRawLine(msg); } +void NetworkConnection::sendWho() { + foreach(QString chan, network()->channels()) { + putRawLine("WHO " + serverEncode(chan)); + } +} + void NetworkConnection::addChannelKey(const QString &channel, const QString &key) { if(key.isEmpty()) removeChannelKey(channel); else _channelKeys[channel] = key;