23 #include "servertooltip.h"
25 #include "configuration/doomseekerconfig.h"
26 #include "pathfinder/pathfinder.h"
27 #include "pathfinder/wadpathfinder.h"
28 #include "serverapi/playerslist.h"
29 #include "serverapi/server.h"
31 #include "serverapi/tooltips/tooltipgenerator.h"
33 namespace ServerTooltip
35 QString FONT_COLOR_MISSING =
"#ff0000";
36 QString FONT_COLOR_WARNING =
"#ff9f00";
37 QString FONT_COLOR_FOUND =
"#009f00";
40 QString ServerTooltip::createIwadToolTip(ServerPtr server)
42 if (!server->isKnown())
47 bool bFindIwad = gConfig.doomseeker.bTellMeWhereAreTheWADsWhenIHoverCursorOverWADSColumn;
50 static const QString FORMAT_TEMPLATE =
"<font color=\"%1\">%2</font>";
55 QString msg = path.path().toHtmlEscaped();
58 msg +=
" " + L10n::tr(
"(alias of: %1)").arg(server->iwad().toHtmlEscaped());
60 return FORMAT_TEMPLATE.arg(FONT_COLOR_FOUND, msg);
64 return FORMAT_TEMPLATE.arg(FONT_COLOR_MISSING, L10n::tr(
"MISSING"));
71 QString ServerTooltip::createPlayersToolTip(
const TooltipRenderHint &renderHint, ServerCPtr server)
73 if (server ==
nullptr || !server->isKnown())
79 tooltipGenerator->setRenderHint(renderHint);
82 ret =
"<div style='white-space: pre'>";
84 if (server->players().numClients() != 0)
90 delete tooltipGenerator;
94 QString ServerTooltip::createPortToolTip(ServerCPtr server)
96 if (server ==
nullptr || !server->isKnown())
100 if (server->isLocked())
101 ret +=
"Password protected\n";
102 if (server->isLockedInGame())
103 ret +=
"Password protected in-game\n";
104 if (server->isSecure())
105 ret +=
"Enforces master bans\n";
106 return ret.trimmed();
109 QString ServerTooltip::createPwadsToolTip(ServerPtr server)
111 if (server ==
nullptr || !server->isKnown() || server->numWads() == 0)
117 static const QString toolTip =
"<div style='white-space: pre'>%1</div>";
120 const QList<PWad> &pwads = server->wads();
123 bool bFindWads = gConfig.doomseeker.bTellMeWhereAreTheWADsWhenIHoverCursorOverWADSColumn;
128 QStringList pwadsFormatted;
129 PathFinder pathFinder = server->wadPathFinder();
131 for (
const PWad &wad : pwads)
133 pwadsFormatted << createPwadToolTipInfo(wad, wadFinder);
136 content =
"<table cellspacing=1>";
137 content += pwadsFormatted.join(
"\n");
138 content +=
"</table>";
142 for (
const PWad &wad : pwads)
144 content += wad.name().toHtmlEscaped() +
"\n";
149 return toolTip.arg(content);
152 QString ServerTooltip::createPwadToolTipInfo(
const PWad &pwad,
WadPathFinder &wadFinder)
156 QString fontColor =
"#777777";
159 cells << pwad.
name().toHtmlEscaped();
160 if (findResult.isValid())
162 fontColor = FONT_COLOR_FOUND;
163 cells << findResult.path().toHtmlEscaped();
169 fontColor = FONT_COLOR_WARNING;
170 cells << L10n::tr(
"OPTIONAL");
174 fontColor = FONT_COLOR_MISSING;
175 cells << L10n::tr(
"MISSING");
178 if (findResult.isAlias())
180 cells << L10n::tr(
"ALIAS");
187 QString formattedStringBegin = QString(
"<tr style=\"color: %1;\">").arg(fontColor);
188 QString formattedStringMiddle;
190 for (
const QString &cell : cells)
192 formattedStringMiddle += QString(
"<td style=\"padding-right: 5;\">%1</td>").arg(cell);
195 return formattedStringBegin + formattedStringMiddle +
"</tr>";
198 QString ServerTooltip::createServerNameToolTip(ServerCPtr server)
200 if (server ==
nullptr)
210 if (!generalInfo.isEmpty())
212 ret =
"<div style='white-space: pre'>";
217 delete tooltipGenerator;