layoutTimer->setInterval(0);
layoutTimer->setSingleShot(false);
connect(layoutTimer, SIGNAL(timeout()), this, SLOT(layoutMsg()));
-
}
Client::~Client() {
void Client::connectToCore(const QVariantMap &conn) {
// TODO implement SSL
coreConnectionInfo = conn;
- if(isConnected() || socket != 0) {
+ if(isConnected()) {
emit coreConnectionError(tr("Already connected to Core!"));
return;
}
+ if(socket != 0) socket->deleteLater();
if(conn["Host"].toString().isEmpty()) {
clientMode = LocalCore;
socket = new QBuffer(this);
connectedToCore = false;
emit disconnected();
socket->deleteLater();
+ blockSize = 0;
/* Clear internal data. Hopefully nothing relies on it at this point. */
_bufferModel->clear();
layoutTimer->stop();
}
-void Client::coreSocketStateChanged(QAbstractSocket::SocketState state) { qDebug() << state;
+void Client::coreSocketStateChanged(QAbstractSocket::SocketState state) {
if(state == QAbstractSocket::UnconnectedState) coreSocketDisconnected();
}
syncToCore(state);
}
+// TODO: auth errors
void Client::syncToCore(const QVariant &coreState) {
if(!coreState.toMap().contains("SessionState")) {
emit coreConnectionError(tr("Invalid data received from core!"));
void Client::coreSocketError(QAbstractSocket::SocketError) {
emit coreConnectionError(socket->errorString());
+ socket->deleteLater();
}
void Client::coreHasData() {
}
void Client::recvMessage(const Message &msg) {
- Buffer *b = buffer(msg.buffer);
+ Buffer *b = buffer(msg.buffer());
Buffer::ActivityLevel level = Buffer::OtherActivity;
- if(msg.type == Message::Plain || msg.type == Message::Notice){
+ if(msg.type() == Message::Plain || msg.type() == Message::Notice){
level |= Buffer::NewMessage;
}
- if(msg.flags & Message::Highlight){
+ if(msg.flags() & Message::Highlight){
level |= Buffer::Highlight;
}
emit bufferActivity(level, b);