-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathplayertablemodel.cpp
More file actions
75 lines (63 loc) · 2.1 KB
/
playertablemodel.cpp
File metadata and controls
75 lines (63 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "playertablemodel.h"
#include <parser/outputparser.h>
#include <utility>
PlayerTableModel::PlayerTableModel(QObject* parent)
: QAbstractTableModel(parent),
headers({tr("Name"), tr("Score"), tr("Ping")}) {
}
int PlayerTableModel::getPlayerCount() const {
return static_cast<int>(players.size());
}
std::vector<Player> PlayerTableModel::getPlayers() const {
return players;
}
void PlayerTableModel::setPlayers(std::vector<Player> players) {
emit layoutAboutToBeChanged();
this->players = std::move(players);
emit layoutChanged();
}
std::vector<QString> PlayerTableModel::getHeaders() const {
return headers;
}
void PlayerTableModel::setHeaders(std::vector<QString> headers) {
this->headers = std::move(headers);
}
int PlayerTableModel::rowCount(const QModelIndex&) const {
return static_cast<int>(players.size());
}
int PlayerTableModel::columnCount(const QModelIndex&) const {
return static_cast<int>(headers.size());
}
QVariant PlayerTableModel::data(const QModelIndex& index, int role) const {
if (!index.isValid())
return QVariant();
else if (role == Qt::DisplayRole) {
return getDataFromIndex(index);
} else {
return QVariant();
}
}
QVariant PlayerTableModel::headerData(int section,
Qt::Orientation orientation,
int role) const {
if (role == Qt::DisplayRole && orientation == Qt::Horizontal
&& section < static_cast<int>(headers.size())) {
return headers[static_cast<unsigned int>(section)];
} else {
return QVariant();
}
}
QVariant PlayerTableModel::getDataFromIndex(const QModelIndex& index) const {
QVariant data;
if (index.row() < static_cast<int>(players.size())) {
auto row = static_cast<unsigned int>(index.row());
if (index.column() == 0) {
data = players[row].getNameHtml();
} else if (index.column() == 1) {
data = players[row].getScore();
} else if (index.column() == 2) {
data = players[row].getPing();
}
}
return data;
}