23 #include "serverdetailsdock.h"
24 #include "ui_serverdetailsdock.h"
26 #include "serverapi/playerslist.h"
27 #include "serverapi/server.h"
30 #include "serverapi/tooltips/servertooltip.h"
31 #include "serverapi/tooltips/tooltipgenerator.h"
34 #include <QScopedPointer>
36 DClass<ServerDetailsDock> :
public Ui::ServerDetailsDock
39 QString bold(
const QString &inner)
const
41 return QString(
"<b>%1</b>").arg(inner);
44 QString div(
const QString &inner)
const
46 return QString(R
"(<div style="white-space: pre;">%1</div>)")
50 QString italic(const QString &inner)
const
52 return QString(
"<i>%1</i>").arg(inner);
61 this->toggleViewAction()->setIcon(QIcon(
":/icons/server_details.png"));
66 ServerDetailsDock::~ServerDetailsDock()
70 void ServerDetailsDock::clear()
72 d->lblServer->setText(d->italic(tr(
"No server selected.")));
73 d->generalArea->setText(
"");
74 d->playersArea->setText(
"");
75 d->dmflagsArea->setText(
"");
78 void ServerDetailsDock::displaySelection(QList<ServerPtr> &selectedServers)
80 ServerPtr server = selectServer(selectedServers);
81 if (server ==
nullptr)
87 d->lblServer->setText(server->name().toHtmlEscaped());
88 QScopedPointer<TooltipGenerator> tooltipGenerator(server->tooltipGenerator());
91 generalHtml += tooltipGenerator->generalInfoHTML();
92 generalHtml += tr(
"<b>Address:</b> %1\n").arg(server->addressWithPort());
93 const QString portInfo = ServerTooltip::createPortToolTip(server);
94 if (!portInfo.isEmpty())
95 generalHtml +=
"\n" + portInfo +
"\n";
96 generalHtml = d->div(generalHtml);
97 generalHtml += d->div(server->customDetails());
98 d->generalArea->setText(generalHtml);
101 playersHtml += d->div(tooltipGenerator->gameInfoTableHTML());
102 if (server->players().numClients() != 0)
103 playersHtml += d->div(tooltipGenerator->playerTableHTML());
105 playersHtml += d->bold(tr(
"No players on this server."));
107 d->playersArea->setText(playersHtml);
109 QString dmflagsHtml = tooltipGenerator->dmflagsHTML();
110 if (dmflagsHtml.isEmpty())
111 dmflagsHtml = d->bold(tr(
"DMFlags unknown or no DMFlags set."));
112 d->dmflagsArea->setText(dmflagsHtml);
115 ServerPtr ServerDetailsDock::selectServer(QList<ServerPtr> &selectedServers)
117 if (selectedServers.count() == 0)
119 if (!selectedServers[0]->isKnown())
121 return selectedServers[0];