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();
58 msg +=
" " + L10n::tr(
"(alias of: %1)").arg(server->iwad());
60 return FORMAT_TEMPLATE.arg(FONT_COLOR_FOUND, msg);
64 return FORMAT_TEMPLATE.arg(FONT_COLOR_MISSING, L10n::tr(
"MISSING"));
71 QString ServerTooltip::createPlayersToolTip(ServerCPtr server)
73 if (server ==
nullptr || !server->isKnown())
81 ret =
"<div style='white-space: pre'>";
83 if (server->players().numClients() != 0)
89 delete tooltipGenerator;
93 QString ServerTooltip::createPortToolTip(ServerCPtr server)
95 if (server ==
nullptr || !server->isKnown())
99 if (server->isLocked())
100 ret +=
"Password protected\n";
101 if (server->isLockedInGame())
102 ret +=
"Password protected in-game\n";
103 if (server->isSecure())
104 ret +=
"Enforces master bans\n";
105 return ret.trimmed();
108 QString ServerTooltip::createPwadsToolTip(ServerPtr server)
110 if (server ==
nullptr || !server->isKnown() || server->numWads() == 0)
116 static const QString toolTip =
"<div style='white-space: pre'>%1</div>";
119 const QList<PWad> &pwads = server->wads();
122 bool bFindWads = gConfig.doomseeker.bTellMeWhereAreTheWADsWhenIHoverCursorOverWADSColumn;
127 QStringList pwadsFormatted;
128 PathFinder pathFinder = server->wadPathFinder();
130 for (
const PWad &wad : pwads)
132 pwadsFormatted << createPwadToolTipInfo(wad, wadFinder);
135 content =
"<table cellspacing=1>";
136 content += pwadsFormatted.join(
"\n");
137 content +=
"</table>";
141 for (
const PWad &wad : pwads)
143 content += wad.name() +
"\n";
148 return toolTip.arg(content);
151 QString ServerTooltip::createPwadToolTipInfo(
const PWad &pwad,
WadPathFinder &wadFinder)
155 QString fontColor =
"#777777";
158 cells << pwad.
name();
159 if (findResult.isValid())
161 fontColor = FONT_COLOR_FOUND;
162 cells << findResult.path();
168 fontColor = FONT_COLOR_WARNING;
169 cells << L10n::tr(
"OPTIONAL");
173 fontColor = FONT_COLOR_MISSING;
174 cells << L10n::tr(
"MISSING");
177 if (findResult.isAlias())
179 cells << L10n::tr(
"ALIAS");
186 QString formattedStringBegin = QString(
"<tr style=\"color: %1;\">").arg(fontColor);
187 QString formattedStringMiddle;
189 for (
const QString &cell : cells)
191 formattedStringMiddle += QString(
"<td style=\"padding-right: 5;\">%1</td>").arg(cell);
194 return formattedStringBegin + formattedStringMiddle +
"</tr>";
197 QString ServerTooltip::createServerNameToolTip(ServerCPtr server)
199 if (server ==
nullptr)
209 if (!generalInfo.isEmpty())
211 ret =
"<div style='white-space: pre'>";
216 delete tooltipGenerator;