1
0
Fork 0
forked from suyu/suyu

Merge pull request #12852 from Calinou/multiplayer-color-player-counts

Color player counts in the multiplayer public lobby list
This commit is contained in:
liamwhite 2024-02-03 11:10:00 -05:00 committed by GitHub
commit a3c8bb251d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -193,13 +193,30 @@ public:
} }
QVariant data(int role) const override { QVariant data(int role) const override {
if (role != Qt::DisplayRole) { switch (role) {
return LobbyItem::data(role); case Qt::DisplayRole: {
}
auto members = data(MemberListRole).toList(); auto members = data(MemberListRole).toList();
return QStringLiteral("%1 / %2 ") return QStringLiteral("%1 / %2 ")
.arg(QString::number(members.size()), data(MaxPlayerRole).toString()); .arg(QString::number(members.size()), data(MaxPlayerRole).toString());
} }
case Qt::ForegroundRole: {
auto members = data(MemberListRole).toList();
auto max_players = data(MaxPlayerRole).toInt();
if (members.size() >= max_players) {
return QBrush(QColor(255, 48, 32));
} else if (members.size() == (max_players - 1)) {
return QBrush(QColor(255, 140, 32));
} else if (members.size() == 0) {
return QBrush(QColor(128, 128, 128));
}
// FIXME: How to return a value that tells Qt not to modify the
// text color from the default (as if Qt::ForegroundRole wasn't overridden)?
return QBrush(nullptr);
}
default:
return LobbyItem::data(role);
}
}
bool operator<(const QStandardItem& other) const override { bool operator<(const QStandardItem& other) const override {
// sort by rooms that have the most players // sort by rooms that have the most players