23 #include "gameinfotip.h"
24 #include "serverapi/playerslist.h"
25 #include "serverapi/server.h"
36 const QString
GameInfoTip::UNLIMITED = QObject::tr("Unlimited");
43 GameInfoTip::~GameInfoTip()
47 QString GameInfoTip::generateHTML()
49 static const QString css =
"<style>"
50 ".game-info-table th {"
55 QString table = R
"(<table class="game-info-table">)";
56 table += timelimitHTML();
57 table += scorelimitHTML();
58 table += teamScoresHTML();
59 table += playersHTML();
65 QString GameInfoTip::playersHTML()
67 const QString PLAYERS = tr(
"Players");
70 const int canJoin = qMax(0, d->server->numFreeJoinSlots());
71 return QString(
"<tr><th>%1: </th><td>").arg(PLAYERS)
72 + tr(
"%1 / %2 (%3 can join)").arg(players.
numClients()).arg(d->server->maxClients()).arg(canJoin)
76 QString GameInfoTip::limitHTML(QString limitName, QString valueArgsTemplate,
int value)
78 QString row = QString(
"<tr><th>%1: </th><td>%2</td></tr>")
79 .arg(limitName.toHtmlEscaped())
80 .arg(valueArgsTemplate);
84 row = row.arg(UNLIMITED);
94 QString GameInfoTip::scorelimitHTML()
96 const QString SCORELIMIT = tr(
"Scorelimit");
97 QString row = limitHTML(SCORELIMIT,
"%1", d->server->scoreLimit());
102 QString GameInfoTip::teamScoresHTML()
105 if (d->server->gameMode().isTeamGame())
107 teamScores =
"<tr><td colspan=\"2\">%1</td></tr>";
109 bool bPrependBar =
false;
110 for (
int i = 0; i < MAX_TEAMS; ++i)
112 if (d->server->players().numPlayersOnTeam(i) != 0)
118 teams += d->server->teamName(i).toHtmlEscaped()
119 +
": " + QString::number(d->server->score(i));
123 teamScores = teamScores.arg(teams);
129 QString GameInfoTip::timelimitHTML()
131 const QString TIMELIMIT = tr(
"Timelimit");
132 int timeLimit = d->server->timeLimit();
133 QString row = limitHTML(TIMELIMIT,
"%1 %2", timeLimit);
135 QString timeLeft =
"";
138 timeLeft = tr(
"(%1 left)").arg(d->server->timeLeft());
140 row = row.arg(timeLeft);