23 #include "configuration/doomseekerconfig.h"
24 #include "gui/widgets/memorylineedit.h"
25 #include "serverconsole.h"
26 #include "strings.hpp"
27 #include "ui_serverconsole.h"
29 #include <QRegularExpression>
41 static const int BUFFER_FLUSH_GRACE_MSECS = 100;
43 DClass<ServerConsole> :
public Ui::ServerConsole
48 QTimer bufferFlushTimer;
58 layout()->addWidget(d->consoleInput);
60 connect(d->consoleInput, &QLineEdit::returnPressed,
61 this, &ServerConsole::forwardMessage);
62 connect(&d->bufferFlushTimer, &QTimer::timeout,
63 this, &ServerConsole::flushBuffer);
64 d->bufferFlushTimer.setSingleShot(
true);
67 ServerConsole::~ServerConsole() =
default;
69 void ServerConsole::appendMessage(
const QString &message)
71 QString appendMessage = QString(message).toHtmlEscaped();
72 if (!appendMessage.endsWith(
'\n'))
73 appendMessage +=
'\n';
74 appendMessage.replace(
'\n',
"<br>");
77 if (gConfig.doomseeker.bColorizeServerConsole)
81 static const QRegularExpression colorCode(
"\034(\\[[a-zA-Z0-9]*\\]|[a-v+\\-!*])");
82 appendMessage.remove(colorCode);
85 d->buffer += appendMessage;
86 if (!d->bufferFlushTimer.isActive())
88 d->bufferFlushTimer.start(BUFFER_FLUSH_GRACE_MSECS);
92 void ServerConsole::flushBuffer()
95 d->consoleOutput->moveCursor(QTextCursor::End);
96 d->consoleOutput->insertHtml(d->buffer);
97 d->consoleOutput->moveCursor(QTextCursor::End);
101 void ServerConsole::forwardMessage()
103 QString msg = d->consoleInput->text();
105 msg.replace(0, 1,
"say ");
107 emit messageSent(msg);
108 d->consoleInput->setText(
"");
113 d->consoleInput->setFocus();