23 #include "configuration/doomseekerconfig.h"
24 #include "gui/helpers/playersdiagram.h"
25 #include "gui/mainwindow.h"
26 #include "gui/models/serverlistcolumn.h"
27 #include "gui/models/serverlistmodel.h"
28 #include "gui/models/serverlistrowhandler.h"
29 #include "gui/serverlist.h"
30 #include "gui/widgets/serverlistview.h"
32 #include "serverapi/server.h"
33 #include <QItemDelegate>
36 using namespace ServerListColumnId;
40 ServerListModel::ServerListModel(
ServerList *parent)
41 : QStandardItemModel(parent),
44 setSortRole(SLDT_SORT);
49 QList<QStandardItem *> columns = ServerListColumns::generateListOfCells();
55 QModelIndex index = indexFromItem(columns[0]);
57 if (parentHandler->getMainWindow()->isEffectivelyActiveWindow())
58 rowHandler.setCountryFlag();
60 return rowHandler.updateServer();
66 for (
int i = 0; i < rowCount(); ++i)
68 ServerPtr serverOnList = serverFromList(i);
69 CustomServerInfo serverOnListInfo = CustomServerInfo::fromServer(serverOnList.data());
78 if (server !=
nullptr)
80 for (
int i = 0; i < rowCount(); ++i)
82 ServerCPtr serverOnList = serverFromList(i);
83 if (server == serverOnList)
92 ServerPtr server = serverFromList(row);
104 void ServerListModel::redrawAll()
108 for (
int i = 0; i < rowCount(); ++i)
112 QList<ServerPtr> ServerListModel::customServers()
const
114 QList<ServerPtr> servers;
115 for (
int i = 0; i < rowCount(); ++i)
117 ServerPtr server = serverFromList(i);
118 if (server->isCustom())
124 QList<ServerPtr> ServerListModel::nonSpecialServers()
const
126 QList<ServerPtr> servers;
127 for (
int i = 0; i < rowCount(); ++i)
129 ServerPtr server = serverFromList(i);
130 if (!server->isCustom() && !server->isLan())
136 QList<ServerPtr> ServerListModel::servers()
const
138 QList<ServerPtr> servers;
139 for (
int i = 0; i < rowCount(); ++i)
140 servers << serverFromList(i);
144 QList<ServerPtr> ServerListModel::serversForPlugin(
const EnginePlugin *plugin)
const
146 QList<ServerPtr> servers;
147 for (
int i = 0; i < rowCount(); ++i)
149 ServerPtr server = serverFromList(i);
150 if (server->plugin() == plugin)
156 void ServerListModel::removeServer(
const ServerPtr &server)
163 ServerPtr ServerListModel::serverFromList(
int rowIndex)
const
165 return ServerListRowHandler::serverFromList(
this, rowIndex);
168 ServerPtr ServerListModel::serverFromList(
const QModelIndex &index)
const
170 return ServerListRowHandler::serverFromList(
this, index.row());
175 QStandardItem *qstdItem = item(row, COL_META);
179 void ServerListModel::setRefreshing(ServerPtr server)
185 rowHandler.setRefreshing();
189 void ServerListModel::prepareHeaders()
191 setHorizontalHeaderLabels(ServerListColumns::generateColumnHeaderLabels());
197 rowHandler.updateServer();
202 QVariant ServerListModel::columnSortData(
int row,
int column)
204 QStandardItem *it = item(row, column);
205 return it->data(SLDT_SORT);
210 ServerPtr server = serverFromList(row);
212 QStandardItem *itm = item(row, IDServerName);
214 if (force || itm->icon().isNull())
215 rowHandler.setCountryFlag();