QTfrontend/model/roomslistmodel.cpp
author S.D.
Tue, 27 Sep 2022 14:59:03 +0300
changeset 15878 fc3cb23fd26f
parent 12474 42da9d8d82ab
child 15879 4c58b320056c
permissions -rw-r--r--
Allow to see rooms of incompatible versions in the lobby For the new clients the room version is shown in a separate column. There is also a hack for previous versions clients: the room vesion specifier is prepended to the room names for rooms of incompatible versions, and the server shows 'incompatible version' error if the client tries to join them.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6966
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
     1
/*
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
     2
 * Hedgewars, a free turn based strategy game
11046
47a8c19ecb60 more copyright fixes
sheepluva
parents: 10745
diff changeset
     3
 * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
6966
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
     4
 *
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
     8
 *
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    12
 * GNU General Public License for more details.
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    13
 *
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    14
 * You should have received a copy of the GNU General Public License
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    15
 * along with this program; if not, write to the Free Software
10108
c68cf030eded update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents: 9998
diff changeset
    16
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
6966
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    17
 */
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    18
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    19
/**
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    20
 * @file
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    21
 * @brief RoomsListModel class implementation
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    22
 */
eda4f63bec41 add missing copyright headers to roomslistmodel
sheepluva
parents: 6757
diff changeset
    23
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
    24
#include <QBrush>
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
    25
#include <QColor>
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
    26
#include <QIcon>
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
    27
7258
722e8a0d89dc - Move colorsModel to appropriate place
unc0rr
parents: 6995
diff changeset
    28
#include "roomslistmodel.h"
722e8a0d89dc - Move colorsModel to appropriate place
unc0rr
parents: 6995
diff changeset
    29
#include "MapModel.h"
15878
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    30
#include "hwconsts.h"
7258
722e8a0d89dc - Move colorsModel to appropriate place
unc0rr
parents: 6995
diff changeset
    31
6732
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    32
RoomsListModel::RoomsListModel(QObject *parent) :
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
    33
    QAbstractTableModel(parent),
15878
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    34
    c_nColumns(10)
6732
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    35
{
12474
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    36
    m_headerData = QStringList();
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    37
    m_headerData << tr("In progress");
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    38
    m_headerData << tr("Room Name");
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    39
    //: Caption of the column for the number of connected clients in the list of rooms
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    40
    m_headerData << tr("C");
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    41
    //: Caption of the column for the number of teams in the list of rooms
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    42
    m_headerData << tr("T");
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    43
    m_headerData << tr("Owner");
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    44
    m_headerData << tr("Map");
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    45
    m_headerData << tr("Script");
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    46
    m_headerData << tr("Rules");
42da9d8d82ab Provide translator context for a few less obvious engine strings
Wuzzy <almikes@aol.com>
parents: 11752
diff changeset
    47
    m_headerData << tr("Weapons");
15878
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    48
    m_headerData << tr("Version");
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
    49
8377
869f80966a77 GCI2012: Improve Game Configuration Widget
dag10
parents: 7258
diff changeset
    50
    m_staticMapModel = DataManager::instance().staticMapModel();
869f80966a77 GCI2012: Improve Game Configuration Widget
dag10
parents: 7258
diff changeset
    51
    m_missionMapModel = DataManager::instance().missionMapModel();
6732
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    52
}
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    53
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
    54
6732
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    55
QVariant RoomsListModel::headerData(int section, Qt::Orientation orientation, int role) const
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    56
{
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    57
    if(orientation == Qt::Vertical || role != Qt::DisplayRole)
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    58
        return QVariant();
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    59
    else
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    60
        return QVariant(m_headerData.at(section));
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    61
}
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    62
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
    63
6732
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    64
int RoomsListModel::rowCount(const QModelIndex & parent) const
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    65
{
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    66
    if(parent.isValid())
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    67
        return 0;
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    68
    else
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    69
        return m_data.size();
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    70
}
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    71
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
    72
6732
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    73
int RoomsListModel::columnCount(const QModelIndex & parent) const
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    74
{
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    75
    if(parent.isValid())
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    76
        return 0;
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    77
    else
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
    78
        return c_nColumns;
6732
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    79
}
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
    80
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
    81
15878
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    82
QString RoomsListModel::protoToVersion(const QString & proto)
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    83
{
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    84
    bool ok;
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    85
    uint protoNum = proto.toUInt(&ok);
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    86
    if (!ok)
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    87
        return "Unknown";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    88
    switch (protoNum) {
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    89
    case 17: return "0.9.7-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    90
    case 19: return "0.9.7";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    91
    case 20: return "0.9.8-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    92
    case 21: return "0.9.8";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    93
    case 22: return "0.9.9-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    94
    case 23: return "0.9.9";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    95
    case 24: return "0.9.10-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    96
    case 25: return "0.9.10";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    97
    case 26: return "0.9.11-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    98
    case 27: return "0.9.11";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
    99
    case 28: return "0.9.12-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   100
    case 29: return "0.9.12";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   101
    case 30: return "0.9.13-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   102
    case 31: return "0.9.13";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   103
    case 32: return "0.9.14-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   104
    case 33: return "0.9.14";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   105
    case 34: return "0.9.15-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   106
    case 35: return "0.9.14.1";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   107
    case 37: return "0.9.15";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   108
    case 38: return "0.9.16-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   109
    case 39: return "0.9.16";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   110
    case 40: return "0.9.17-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   111
    case 41: return "0.9.17";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   112
    case 42: return "0.9.18-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   113
    case 43: return "0.9.18";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   114
    case 44: return "0.9.19-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   115
    case 45: return "0.9.19";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   116
    case 46: return "0.9.20-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   117
    case 47: return "0.9.20";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   118
    case 48: return "0.9.21-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   119
    case 49: return "0.9.21";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   120
    case 50: return "0.9.22-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   121
    case 51: return "0.9.22";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   122
    case 52: return "0.9.23-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   123
    case 53: return "0.9.23";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   124
    case 54: return "0.9.24-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   125
    case 55: return "0.9.24";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   126
    case 56: return "0.9.25-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   127
    case 57: return "0.9.25";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   128
    case 58: return "1.0.0-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   129
    case 59: return "1.0.0";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   130
    case 60: return "1.0.1-dev";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   131
    default: return "Unknown";
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   132
    }
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   133
}
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   134
6732
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
   135
QVariant RoomsListModel::data(const QModelIndex &index, int role) const
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
   136
{
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   137
    int column = index.column();
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   138
    int row = index.row();
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   139
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   140
    // invalid index
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   141
    if (!index.isValid())
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   142
        return QVariant();
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   143
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   144
    // invalid row
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   145
    if ((row < 0) || (row >= m_data.size()))
6732
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
   146
        return QVariant();
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
   147
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   148
    // invalid column
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   149
    if ((column < 0) || (column >= c_nColumns))
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   150
        return QVariant();
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   151
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   152
    // not a role we have data for
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   153
    if (role != Qt::DisplayRole)
6987
e34415c77342 allow custom sorting of roomslist (by clicking on header sections)
sheepluva
parents: 6983
diff changeset
   154
        // only custom-align counters
6993
47830cf50574 room list: replace magic table column indexes with enum. makes future changes to the room list format way easier.
sheepluva
parents: 6987
diff changeset
   155
        if ((role != Qt::TextAlignmentRole)
47830cf50574 room list: replace magic table column indexes with enum. makes future changes to the room list format way easier.
sheepluva
parents: 6987
diff changeset
   156
            || ((column != PlayerCountColumn) && (column != TeamCountColumn)))
47830cf50574 room list: replace magic table column indexes with enum. makes future changes to the room list format way easier.
sheepluva
parents: 6987
diff changeset
   157
                // only decorate name column
47830cf50574 room list: replace magic table column indexes with enum. makes future changes to the room list format way easier.
sheepluva
parents: 6987
diff changeset
   158
                if ((role != Qt::DecorationRole) || (column != NameColumn))
15878
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   159
                    if ((role != Qt::ForegroundRole))
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   160
                        // UserRole is used for version column filtering
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   161
                        if ((role != Qt::UserRole))
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   162
                            return QVariant();
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   163
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   164
    // decorate room name based on room state
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   165
    if (role == Qt::DecorationRole)
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   166
    {
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   167
        const QIcon roomBusyIcon(":/res/iconDamage.png");
10739
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   168
        const QIcon roomBusyIconGreen(":/res/iconDamageLockG.png");
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   169
        const QIcon roomBusyIconRed(":/res/iconDamageLockR.png");
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   170
        const QIcon roomWaitingIcon(":/res/iconTime.png");
10739
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   171
        const QIcon roomWaitingIconGreen(":/res/iconTimeLockG.png");
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   172
        const QIcon roomWaitingIconRed(":/res/iconTimeLockR.png");
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   173
10745
fab746a3597e premature optimisation bit me again.
nemo
parents: 10741
diff changeset
   174
        QString flags = m_data.at(row).at(StateColumn);
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   175
10739
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   176
        if (flags.contains("g"))
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   177
        {
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   178
            if (flags.contains("j"))
10741
nemo
parents: 10739
diff changeset
   179
                return QVariant(roomBusyIconRed);
nemo
parents: 10739
diff changeset
   180
            else if (flags.contains("p"))
nemo
parents: 10739
diff changeset
   181
                return QVariant(roomBusyIconGreen);
nemo
parents: 10739
diff changeset
   182
            else
nemo
parents: 10739
diff changeset
   183
                return QVariant(roomBusyIcon);
nemo
parents: 10739
diff changeset
   184
        }
nemo
parents: 10739
diff changeset
   185
        else
nemo
parents: 10739
diff changeset
   186
        {
nemo
parents: 10739
diff changeset
   187
            if (flags.contains("j"))
10739
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   188
                return QVariant(roomWaitingIconRed);
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   189
            else if (flags.contains("p"))
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   190
                return QVariant(roomWaitingIconGreen);
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   191
            else
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   192
                return QVariant(roomWaitingIcon);
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   193
        }
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   194
    }
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   195
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   196
    QString content = m_data.at(row).at(column);
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   197
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   198
    if (role == Qt::DisplayRole)
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   199
    {
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   200
        // display room names
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   201
        if (column == 5)
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   202
        {
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   203
            // special names
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   204
            if (content[0] == '+')
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   205
            {
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   206
                if (content == "+rnd+") return tr("Random Map");
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   207
                if (content == "+maze+") return tr("Random Maze");
10391
ce3ccc45d790 Add separate option for perlin gen
unc0rr
parents: 10108
diff changeset
   208
                if (content == "+perlin+") return tr("Random Perlin");
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   209
                if (content == "+drawn+") return tr("Hand-drawn");
11744
ac58a063d26a Added "Forts" to map type selection. This makes the mode easier selectable/discoverable. Also the slider can be used to adjust the distance between forts.
sheepluva
parents: 11046
diff changeset
   210
                if (content == "+forts+") return tr("Forts");
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   211
            }
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   212
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   213
            // prefix ? if map not available
8377
869f80966a77 GCI2012: Improve Game Configuration Widget
dag10
parents: 7258
diff changeset
   214
            if (!m_staticMapModel->mapExists(content) &&
869f80966a77 GCI2012: Improve Game Configuration Widget
dag10
parents: 7258
diff changeset
   215
                !m_missionMapModel->mapExists(content))
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   216
                return QString ("? %1").arg(content);
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   217
        }
15878
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   218
        else if (column == VersionColumn)
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   219
        {
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   220
            return protoToVersion(content);
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   221
        }
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   222
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   223
        return content;
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   224
    }
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   225
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   226
    // dye map names red if map not available
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   227
    if (role == Qt::ForegroundRole)
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   228
    {
15878
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   229
        if (m_data[row][VersionColumn] != *cProtoVer)
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   230
            return QBrush(QColor("darkgrey"));
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   231
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   232
        if (column == MapColumn)
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   233
        {
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   234
            if (content == "+rnd+" ||
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   235
                content == "+maze+" ||
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   236
                content == "+perlin+" ||
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   237
                content == "+drawn+" ||
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   238
                content == "+forts+" ||
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   239
                m_staticMapModel->mapExists(content) ||
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   240
                m_missionMapModel->mapExists(content))
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   241
                return QVariant();
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   242
            else
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   243
                return QBrush(QColor("darkred"));
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   244
        }
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   245
        return QVariant();
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   246
    }
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   247
6987
e34415c77342 allow custom sorting of roomslist (by clicking on header sections)
sheepluva
parents: 6983
diff changeset
   248
    if (role == Qt::TextAlignmentRole)
e34415c77342 allow custom sorting of roomslist (by clicking on header sections)
sheepluva
parents: 6983
diff changeset
   249
    {
e34415c77342 allow custom sorting of roomslist (by clicking on header sections)
sheepluva
parents: 6983
diff changeset
   250
        return (int)(Qt::AlignHCenter | Qt::AlignVCenter);
e34415c77342 allow custom sorting of roomslist (by clicking on header sections)
sheepluva
parents: 6983
diff changeset
   251
    }
e34415c77342 allow custom sorting of roomslist (by clicking on header sections)
sheepluva
parents: 6983
diff changeset
   252
15878
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   253
    if (role == Qt::UserRole && column == VersionColumn)
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   254
        return content;
fc3cb23fd26f Allow to see rooms of incompatible versions in the lobby
S.D.
parents: 12474
diff changeset
   255
6983
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   256
    Q_ASSERT(false);
ede55af89e78 roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
sheepluva
parents: 6973
diff changeset
   257
    return QVariant();
6732
c906dc78091f Start switching to rooms list model. To be continued.
unc0rr
parents:
diff changeset
   258
}
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   259
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   260
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   261
void RoomsListModel::setRoomsList(const QStringList & rooms)
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   262
{
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   263
    beginResetModel();
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   264
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   265
    m_data.clear();
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   266
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   267
    int nRooms = rooms.size();
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   268
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   269
    for (int i = 0; i < nRooms; i += c_nColumns)
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   270
    {
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   271
        QStringList l;
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   272
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   273
#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   274
        l.reserve(c_nColumns);  // small optimisation not supported in old Qt
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   275
#endif
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   276
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   277
        for (int t = 0; t < c_nColumns; t++)
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   278
        {
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   279
            l.append(rooms[i + t]);
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   280
        }
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   281
10739
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   282
        m_data.append(l);
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   283
    }
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   284
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   285
    endResetModel();
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   286
}
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   287
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   288
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   289
void RoomsListModel::addRoom(const QStringList & info)
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   290
{
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   291
    beginInsertRows(QModelIndex(), 0, 0);
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   292
10739
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   293
    m_data.prepend(info);
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   294
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   295
    endInsertRows();
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   296
}
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   297
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   298
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   299
int RoomsListModel::rowOfRoom(const QString & name)
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   300
{
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   301
    int size = m_data.size();
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   302
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   303
    if (size < 1)
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   304
        return -1;
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   305
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   306
    int i = 0;
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   307
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   308
    // search for record with matching room name
6993
47830cf50574 room list: replace magic table column indexes with enum. makes future changes to the room list format way easier.
sheepluva
parents: 6987
diff changeset
   309
    while(m_data[i].at(NameColumn) != name)
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   310
    {
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   311
        i++;
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   312
        if(i >= size)
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   313
            return -1;
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   314
    }
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   315
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   316
    return i;
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   317
}
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   318
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   319
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   320
void RoomsListModel::removeRoom(const QString & name)
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   321
{
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   322
    int i = rowOfRoom(name);
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   323
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   324
    if (i < 0)
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   325
        return;
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   326
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   327
    beginRemoveRows(QModelIndex(), i, i);
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   328
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   329
    m_data.removeAt(i);
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   330
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   331
    endRemoveRows();
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   332
}
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   333
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   334
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   335
void RoomsListModel::updateRoom(const QString & name, const QStringList & info)
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   336
{
6973
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   337
    int i = rowOfRoom(name);
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   338
582ca7e8e338 RoomsListModel:
sheepluva
parents: 6966
diff changeset
   339
    if (i < 0)
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   340
        return;
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   341
10739
d886f319e7b3 Tired of not knowing which rooms I can't join
nemo
parents: 10511
diff changeset
   342
    m_data[i] = info;
6733
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   343
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   344
    emit dataChanged(index(i, 0), index(i, columnCount(QModelIndex()) - 1));
5abbc345a82f Handle ROOM* commands in rooms list model
unc0rr
parents: 6732
diff changeset
   345
}