diff -r c906dc78091f -r 5abbc345a82f QTfrontend/net/newnetclient.cpp --- a/QTfrontend/net/newnetclient.cpp Thu Feb 23 00:46:03 2012 +0400 +++ b/QTfrontend/net/newnetclient.cpp Thu Feb 23 18:41:52 2012 +0400 @@ -257,7 +257,7 @@ } RawSendNet(QString("NICK%1%2").arg(delimeter).arg(mynick)); - RawSendNet(QString("PROTO%1%2").arg(delimeter).arg(*cProtoVer)); + RawSendNet(QString("PROTO%1%2").arg(delimeter).arg("41")); netClientState = Connected; m_game_connected = true; emit adminAccess(false); @@ -275,9 +275,14 @@ if (lst[0] == "ROOMS") { + if(lst.size() % 8 != 1) + { + qWarning("Net: Malformed ROOMS message"); + return; + } QStringList tmp = lst; tmp.removeFirst(); - emit roomsList(tmp); + m_roomsListModel->setRoomsList(tmp); return; } @@ -478,14 +483,30 @@ return; } - if(lst[0] == "ROOM") + if(lst[0] == "ROOM" && lst.size() == 10 && lst[1] == "ADD") + { + QStringList tmp = lst; + tmp.removeFirst(); + tmp.removeFirst(); + + m_roomsListModel->addRoom(tmp); + return; + } + + if(lst[0] == "ROOM" && lst.size() == 11 && lst[1] == "UPD") { - if(lst.size() < 2) - { - qWarning("Net: Bad ROOM message"); - return; - } - RawSendNet(QString("LIST")); + QStringList tmp = lst; + tmp.removeFirst(); + tmp.removeFirst(); + + QString roomName = tmp.takeFirst(); + m_roomsListModel->updateRoom(roomName, tmp); + return; + } + + if(lst[0] == "ROOM" && lst.size() == 3 && lst[1] == "DEL") + { + m_roomsListModel->removeRoom(lst[2]); return; }