#include "core.h"
#include "coresession.h"
+#include "ircchannel.h"
#include "ircuser.h"
#include "network.h"
#include "identity.h"
}
QString NetworkConnection::serverDecode(const QByteArray &string) const {
- return network()->decodeString(string);
+ return network()->decodeServerString(string);
}
-QString NetworkConnection::bufferDecode(const QString &bufferName, const QByteArray &string) const {
- Q_UNUSED(bufferName);
- // TODO: Implement buffer-specific encodings
+QString NetworkConnection::channelDecode(const QString &bufferName, const QByteArray &string) const {
+ if(!bufferName.isEmpty()) {
+ IrcChannel *channel = network()->ircChannel(bufferName);
+ if(channel) return channel->decodeString(string);
+ }
return network()->decodeString(string);
}
}
QByteArray NetworkConnection::serverEncode(const QString &string) const {
- return network()->encodeString(string);
+ return network()->encodeServerString(string);
}
-QByteArray NetworkConnection::bufferEncode(const QString &bufferName, const QString &string) const {
- Q_UNUSED(bufferName);
- // TODO: Implement buffer-specific encodings
+QByteArray NetworkConnection::channelEncode(const QString &bufferName, const QString &string) const {
+ if(!bufferName.isEmpty()) {
+ IrcChannel *channel = network()->ircChannel(bufferName);
+ if(channel) return channel->encodeString(string);
+ }
return network()->encodeString(string);
}
if(chans.count() > 0) {
qDebug() << "autojoining" << chans;
QVariantList list;
- foreach(QString chan, chans) list << serverEncode(chan);
+ list << serverEncode(chans.join(",")); // TODO add channel passwords
putCmd("JOIN", list); // FIXME check for 512 byte limit!
}
// delete _previousState, we won't need it again
}
void NetworkConnection::disconnectFromIrc() {
- socket.disconnectFromHost();
+ if(socket.state() < QAbstractSocket::ConnectedState) {
+ setConnectionState(Network::Disconnected);
+ socketDisconnected();
+ } else socket.disconnectFromHost();
}
void NetworkConnection::socketHasData() {