QTfrontend/model/playerslistmodel.cpp
changeset 9727 e89ed65f62da
parent 9725 68b5d87cfdb0
child 10753 e56db5d988ef
equal deleted inserted replaced
9726:dfdde45181ec 9727:e89ed65f62da
    82     endRemoveRows();
    82     endRemoveRows();
    83 
    83 
    84     return true;
    84     return true;
    85 }
    85 }
    86 
    86 
       
    87 QModelIndex PlayersListModel::nicknameIndex(const QString & nickname)
       
    88 {
       
    89     QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
       
    90 
       
    91     if(mil.size() > 0)
       
    92         return mil[0];
       
    93     else
       
    94         return QModelIndex();
       
    95 }
    87 
    96 
    88 void PlayersListModel::addPlayer(const QString & nickname, bool notify)
    97 void PlayersListModel::addPlayer(const QString & nickname, bool notify)
    89 {
    98 {
    90     insertRow(rowCount());
    99     insertRow(rowCount());
    91 
   100 
   103     if(msg.isEmpty())
   112     if(msg.isEmpty())
   104         emit nickRemovedLobby(nickname);
   113         emit nickRemovedLobby(nickname);
   105     else
   114     else
   106         emit nickRemovedLobby(nickname, msg);
   115         emit nickRemovedLobby(nickname, msg);
   107 
   116 
   108     QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
   117     QModelIndex mi = nicknameIndex(nickname);
   109 
   118 
   110     if(mil.size())
   119     if(mi.isValid())
   111         removeRow(mil[0].row());
   120         removeRow(mi.row());
   112 }
   121 }
   113 
   122 
   114 
   123 
   115 void PlayersListModel::playerJoinedRoom(const QString & nickname, bool notify)
   124 void PlayersListModel::playerJoinedRoom(const QString & nickname, bool notify)
   116 {
   125 {
   117     QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
   126     QModelIndex mi = nicknameIndex(nickname);
   118 
   127 
   119     if(mil.size())
   128     if(mi.isValid())
   120     {
   129     {
   121         setData(mil[0], true, RoomFilterRole);
   130         setData(mi, true, RoomFilterRole);
   122         updateIcon(mil[0]);
   131         updateIcon(mi);
   123         updateSortData(mil[0]);
   132         updateSortData(mi);
   124     }
   133     }
   125 
   134 
   126     emit nickAdded(nickname, notify);
   135     emit nickAdded(nickname, notify);
   127 }
   136 }
   128 
   137 
   129 
   138 
   130 void PlayersListModel::playerLeftRoom(const QString & nickname)
   139 void PlayersListModel::playerLeftRoom(const QString & nickname)
   131 {
   140 {
   132     emit nickRemoved(nickname);
   141     emit nickRemoved(nickname);
   133 
   142 
   134     QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
   143     QModelIndex mi = nicknameIndex(nickname);
   135 
   144 
   136     if(mil.size())
   145     if(mi.isValid())
   137     {
   146     {
   138         setData(mil[0], false, RoomFilterRole);
   147         setData(mi, false, RoomFilterRole);
   139         setData(mil[0], false, RoomAdmin);
   148         setData(mi, false, RoomAdmin);
   140         setData(mil[0], false, Ready);
   149         setData(mi, false, Ready);
   141         setData(mil[0], false, InGame);
   150         setData(mi, false, InGame);
   142         updateIcon(mil[0]);
   151         updateIcon(mi);
   143     }
   152     }
   144 }
   153 }
   145 
   154 
   146 
   155 
   147 void PlayersListModel::setFlag(const QString &nickname, StateFlag flagType, bool isSet)
   156 void PlayersListModel::setFlag(const QString &nickname, StateFlag flagType, bool isSet)
   163             m_ignoredSet.remove(nickname.toLower());
   172             m_ignoredSet.remove(nickname.toLower());
   164 
   173 
   165         saveSet(m_ignoredSet, "ignore");
   174         saveSet(m_ignoredSet, "ignore");
   166     }
   175     }
   167 
   176 
   168     QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
   177     QModelIndex mi = nicknameIndex(nickname);
   169 
   178 
   170     if(mil.size())
   179     if(mi.isValid())
   171     {
   180     {
   172         setData(mil[0], isSet, flagType);
   181         setData(mi, isSet, flagType);
   173 
   182 
   174         if(flagType == Friend || flagType == ServerAdmin
   183         if(flagType == Friend || flagType == ServerAdmin
   175                 || flagType == Ignore || flagType == RoomAdmin)
   184                 || flagType == Ignore || flagType == RoomAdmin)
   176             updateSortData(mil[0]);
   185             updateSortData(mi);
   177 
   186 
   178         updateIcon(mil[0]);
   187         updateIcon(mi);
   179     }
   188     }
   180 }
   189 }
   181 
   190 
   182 
   191 
   183 bool PlayersListModel::isFlagSet(const QString & nickname, StateFlag flagType)
   192 bool PlayersListModel::isFlagSet(const QString & nickname, StateFlag flagType)
   184 {
   193 {
   185     QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
   194     QModelIndex mi = nicknameIndex(nickname);
   186 
   195 
   187     if(mil.size())
   196     if(mi.isValid())
   188         return mil[0].data(flagType).toBool();
   197         return mi.data(flagType).toBool();
   189     else if(flagType == Friend)
   198     else if(flagType == Friend)
   190         return isFriend(nickname);
   199         return isFriend(nickname);
   191     else if(flagType == Ignore)
   200     else if(flagType == Ignore)
   192         return isIgnored(nickname);
   201         return isIgnored(nickname);
   193     else
   202     else