QTfrontend/model/playerslistmodel.cpp
changeset 7744 75e1d0c0ba72
parent 7737 ff63da8a3202
child 7764 28613382e3f3
equal deleted inserted replaced
7743:dc41e9222d2c 7744:75e1d0c0ba72
    89     insertRow(rowCount());
    89     insertRow(rowCount());
    90 
    90 
    91     QModelIndex mi = index(rowCount() - 1);
    91     QModelIndex mi = index(rowCount() - 1);
    92     setData(mi, nickname);
    92     setData(mi, nickname);
    93 
    93 
    94     updateSortData(mi);
       
    95     checkFriendIgnore(mi);
    94     checkFriendIgnore(mi);
    96 }
    95 }
    97 
    96 
    98 
    97 
    99 void PlayersListModel::removePlayer(const QString & nickname)
    98 void PlayersListModel::removePlayer(const QString & nickname)
   266 }
   265 }
   267 
   266 
   268 
   267 
   269 void PlayersListModel::updateSortData(const QModelIndex & index)
   268 void PlayersListModel::updateSortData(const QModelIndex & index)
   270 {
   269 {
   271     QString result = QString("%1%2%3%4%5")
   270     QString result = QString("%1%2%3%4%5%6")
       
   271             // room admins go first, then server admins, then friends
   272             .arg(1 - index.data(RoomAdmin).toInt())
   272             .arg(1 - index.data(RoomAdmin).toInt())
   273             .arg(1 - index.data(ServerAdmin).toInt())
   273             .arg(1 - index.data(ServerAdmin).toInt())
   274             .arg(1 - index.data(Friend).toInt())
   274             .arg(1 - index.data(Friend).toInt())
       
   275             // ignored at bottom
   275             .arg(index.data(Ignore).toInt())
   276             .arg(index.data(Ignore).toInt())
       
   277             // keep nicknames starting from non-letter character at bottom within group
       
   278             // assume there are no empty nicks in list
       
   279             .arg(index.data(Qt::DisplayRole).toString().at(0).isLetter() ? 0 : 1)
       
   280             // sort ignoring case
   276             .arg(index.data(Qt::DisplayRole).toString().toLower())
   281             .arg(index.data(Qt::DisplayRole).toString().toLower())
   277             ;
   282             ;
   278 
   283 
   279     setData(index, result, SortRole);
   284     setData(index, result, SortRole);
   280 }
   285 }
   296 {
   301 {
   297     setData(mi, m_friendsSet.contains(mi.data().toString().toLower()), Friend);
   302     setData(mi, m_friendsSet.contains(mi.data().toString().toLower()), Friend);
   298     setData(mi, m_ignoredSet.contains(mi.data().toString().toLower()), Ignore);
   303     setData(mi, m_ignoredSet.contains(mi.data().toString().toLower()), Ignore);
   299 
   304 
   300     updateIcon(mi);
   305     updateIcon(mi);
       
   306     updateSortData(mi);
   301 }
   307 }
   302 
   308 
   303 void PlayersListModel::loadSet(QSet<QString> & set, const QString & suffix)
   309 void PlayersListModel::loadSet(QSet<QString> & set, const QString & suffix)
   304 {
   310 {
   305     set.clear();
   311     set.clear();