QTfrontend/net/newnetclient.cpp
changeset 7728 664738870325
parent 7727 bd252cacabe8
child 7731 262228c64f15
equal deleted inserted replaced
7727:bd252cacabe8 7728:664738870325
    18  */
    18  */
    19 
    19 
    20 #include <QDebug>
    20 #include <QDebug>
    21 #include <QInputDialog>
    21 #include <QInputDialog>
    22 #include <QCryptographicHash>
    22 #include <QCryptographicHash>
       
    23 #include <QSortFilterProxyModel>
    23 
    24 
    24 #include "hwconsts.h"
    25 #include "hwconsts.h"
    25 #include "newnetclient.h"
    26 #include "newnetclient.h"
    26 #include "proto.h"
    27 #include "proto.h"
    27 #include "game.h"
    28 #include "game.h"
    35     m_game_connected(false),
    36     m_game_connected(false),
    36     loginStep(0),
    37     loginStep(0),
    37     netClientState(Disconnected)
    38     netClientState(Disconnected)
    38 {
    39 {
    39     m_roomsListModel = new RoomsListModel(this);
    40     m_roomsListModel = new RoomsListModel(this);
    40     m_lobbyPlayersModel = new PlayersListModel(this);
    41 
    41     m_roomPlayersModel = new PlayersListModel(this);
    42     m_playersModel = new PlayersListModel(this);
    42 // socket stuff
    43 
       
    44     m_lobbyPlayersModel = new QSortFilterProxyModel(this);
       
    45     m_lobbyPlayersModel->setSourceModel(m_playersModel);
       
    46     m_lobbyPlayersModel->setSortRole(PlayersListModel::SortRole);
       
    47     m_lobbyPlayersModel->setDynamicSortFilter(true);
       
    48     m_lobbyPlayersModel->sort(0);
       
    49 
       
    50     m_roomPlayersModel = new QSortFilterProxyModel(this);
       
    51     m_roomPlayersModel->setSourceModel(m_playersModel);
       
    52     m_roomPlayersModel->setSortRole(PlayersListModel::SortRole);
       
    53     m_roomPlayersModel->setDynamicSortFilter(true);
       
    54     m_roomPlayersModel->sort(0);
       
    55 
       
    56     // socket stuff
    43     connect(&NetSocket, SIGNAL(readyRead()), this, SLOT(ClientRead()));
    57     connect(&NetSocket, SIGNAL(readyRead()), this, SLOT(ClientRead()));
    44     connect(&NetSocket, SIGNAL(connected()), this, SLOT(OnConnect()));
    58     connect(&NetSocket, SIGNAL(connected()), this, SLOT(OnConnect()));
    45     connect(&NetSocket, SIGNAL(disconnected()), this, SLOT(OnDisconnect()));
    59     connect(&NetSocket, SIGNAL(disconnected()), this, SLOT(OnDisconnect()));
    46     connect(&NetSocket, SIGNAL(error(QAbstractSocket::SocketError)), this,
    60     connect(&NetSocket, SIGNAL(error(QAbstractSocket::SocketError)), this,
    47             SLOT(displayError(QAbstractSocket::SocketError)));
    61             SLOT(displayError(QAbstractSocket::SocketError)));
   377                             {
   391                             {
   378                                 if (isChief && !setFlag) ToggleReady();
   392                                 if (isChief && !setFlag) ToggleReady();
   379                                 else emit setMyReadyStatus(setFlag);
   393                                 else emit setMyReadyStatus(setFlag);
   380                             }
   394                             }
   381                             emit setReadyStatus(nick, setFlag);
   395                             emit setReadyStatus(nick, setFlag);
   382                             m_lobbyPlayersModel->setFlag(nick, PlayersListModel::Ready, setFlag);
   396                             m_playersModel->setFlag(nick, PlayersListModel::Ready, setFlag);
   383                         }
   397                         }
   384                         break;
   398                         break;
   385 
   399 
   386                 // flag indicating if a player is a registered user
   400                 // flag indicating if a player is a registered user
   387                 case 'u':
   401                 case 'u':
   388                         emit setRegisteredStatus(nicks, setFlag);
   402                         emit setRegisteredStatus(nicks, setFlag);
   389                         foreach(const QString & nick, nicks)
   403                         foreach(const QString & nick, nicks)
   390                             m_lobbyPlayersModel->setFlag(nick, PlayersListModel::Registered, setFlag);
   404                             m_playersModel->setFlag(nick, PlayersListModel::Registered, setFlag);
   391                         break;
   405                         break;
   392 
   406 
   393                 // flag indicating if a player is the host/master of the room
   407                 // flag indicating if a player is the host/master of the room
   394                 case 'h':
   408                 case 'h':
   395                         foreach (const QString & nick, nicks)
   409                         foreach (const QString & nick, nicks)
   399                                 isChief = setFlag;
   413                                 isChief = setFlag;
   400                                 emit roomMaster(isChief);
   414                                 emit roomMaster(isChief);
   401                             }
   415                             }
   402 
   416 
   403                             emit setRoomMasterStatus(nick, setFlag);
   417                             emit setRoomMasterStatus(nick, setFlag);
   404                             m_lobbyPlayersModel->setFlag(nick, PlayersListModel::RoomAdmin, setFlag);
   418                             m_playersModel->setFlag(nick, PlayersListModel::RoomAdmin, setFlag);
   405                         }
   419                         }
   406                         break;
   420                         break;
   407 
   421 
   408                 // flag indicating if a player is admin (if so -> worship them!)
   422                 // flag indicating if a player is admin (if so -> worship them!)
   409                 case 'a':
   423                 case 'a':
   411                         {
   425                         {
   412                             if (nick == mynick)
   426                             if (nick == mynick)
   413                                 emit adminAccess(setFlag);
   427                                 emit adminAccess(setFlag);
   414 
   428 
   415                             emit setAdminStatus(nick, setFlag);
   429                             emit setAdminStatus(nick, setFlag);
   416                             m_lobbyPlayersModel->setFlag(nick, PlayersListModel::ServerAdmin, setFlag);
   430                             m_playersModel->setFlag(nick, PlayersListModel::ServerAdmin, setFlag);
   417                         }
   431                         }
   418                         break;
   432                         break;
   419 
   433 
   420                 default:
   434                 default:
   421                         qWarning() << "Net: Unknown client-flag: " << c;
   435                         qWarning() << "Net: Unknown client-flag: " << c;
   450                 emit connected();
   464                 emit connected();
   451             }
   465             }
   452 
   466 
   453             emit nickAddedLobby(lst[i], false);
   467             emit nickAddedLobby(lst[i], false);
   454             emit chatStringLobby(lst[i], tr("%1 *** %2 has joined").arg('\x03').arg("|nick|"));
   468             emit chatStringLobby(lst[i], tr("%1 *** %2 has joined").arg('\x03').arg("|nick|"));
   455             m_lobbyPlayersModel->addPlayer(lst[i]);
   469             m_playersModel->addPlayer(lst[i]);
   456         }
   470         }
   457         return;
   471         return;
   458     }
   472     }
   459 
   473 
   460     if(lst[0] == "ROOM" && lst.size() == 10 && lst[1] == "ADD")
   474     if(lst[0] == "ROOM" && lst.size() == 10 && lst[1] == "ADD")
   500         if (lst.size() < 3)
   514         if (lst.size() < 3)
   501             emit chatStringLobby(tr("%1 *** %2 has left").arg('\x03').arg(lst[1]));
   515             emit chatStringLobby(tr("%1 *** %2 has left").arg('\x03').arg(lst[1]));
   502         else
   516         else
   503             emit chatStringLobby(lst[1], tr("%1 *** %2 has left (%3)").arg('\x03').arg("|nick|", lst[2]));
   517             emit chatStringLobby(lst[1], tr("%1 *** %2 has left (%3)").arg('\x03').arg("|nick|", lst[2]));
   504 
   518 
   505         m_lobbyPlayersModel->removePlayer(lst[1]);
   519         m_playersModel->removePlayer(lst[1]);
   506 
   520 
   507         return;
   521         return;
   508     }
   522     }
   509 
   523 
   510     if (lst[0] == "ASKPASSWORD")
   524     if (lst[0] == "ASKPASSWORD")
   931 RoomsListModel * HWNewNet::roomsListModel()
   945 RoomsListModel * HWNewNet::roomsListModel()
   932 {
   946 {
   933     return m_roomsListModel;
   947     return m_roomsListModel;
   934 }
   948 }
   935 
   949 
   936 PlayersListModel * HWNewNet::lobbyPlayersModel()
   950 QAbstractItemModel *HWNewNet::lobbyPlayersModel()
   937 {
   951 {
   938     return m_lobbyPlayersModel;
   952     return m_lobbyPlayersModel;
   939 }
   953 }
   940 
   954 
   941 PlayersListModel * HWNewNet::roomPlayersModel()
   955 QAbstractItemModel *HWNewNet::roomPlayersModel()
   942 {
   956 {
   943     return m_roomPlayersModel;
   957     return m_roomPlayersModel;
   944 }
   958 }