summaryrefslogtreecommitdiffstats
path: root/gui/pages/LogPage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/pages/LogPage.cpp')
-rw-r--r--gui/pages/LogPage.cpp101
1 files changed, 60 insertions, 41 deletions
diff --git a/gui/pages/LogPage.cpp b/gui/pages/LogPage.cpp
index 636d2695..f16e3477 100644
--- a/gui/pages/LogPage.cpp
+++ b/gui/pages/LogPage.cpp
@@ -16,6 +16,14 @@ LogPage::LogPage(MinecraftProcess *proc, QWidget *parent)
connect(m_process, SIGNAL(log(QString, MessageLevel::Enum)), this,
SLOT(write(QString, MessageLevel::Enum)));
+ // create the format and set its font
+ defaultFormat = new QTextCharFormat(ui->text->currentCharFormat());
+ QFont font;
+ font.setFamily("Courier");
+ font.setStyleHint(QFont::Monospace);
+ font.setFixedPitch(true);
+ defaultFormat->setFont(font);
+
auto findShortcut = new QShortcut(QKeySequence(QKeySequence::Find), this);
connect(findShortcut, SIGNAL(activated()), SLOT(findActivated()));
auto findNextShortcut = new QShortcut(QKeySequence(QKeySequence::FindNext), this);
@@ -28,6 +36,7 @@ LogPage::LogPage(MinecraftProcess *proc, QWidget *parent)
LogPage::~LogPage()
{
delete ui;
+ delete defaultFormat;
}
bool LogPage::apply()
@@ -107,24 +116,6 @@ void LogPage::findPreviousActivated()
}
}
-void LogPage::writeColor(QString text, const char *color, const char *background)
-{
- // append a paragraph
- QString newtext;
- newtext += "<span style=\"";
- {
- if (color)
- newtext += QString("color:") + color + ";";
- if (background)
- newtext += QString("background-color:") + background + ";";
- newtext += "font-family: monospace;";
- }
- newtext += "\">";
- newtext += text.toHtmlEscaped();
- newtext += "</span>";
- ui->text->appendHtml(newtext);
-}
-
void LogPage::write(QString data, MessageLevel::Enum mode)
{
if (!m_write_active)
@@ -159,31 +150,59 @@ void LogPage::write(QString data, MessageLevel::Enum mode)
for (QString &paragraph : paragraphs)
{
//TODO: implement filtering here.
- filtered.append(paragraph.trimmed());
+ filtered.append(paragraph);
}
QListIterator<QString> iter(filtered);
- if (mode == MessageLevel::MultiMC)
- while (iter.hasNext())
- writeColor(iter.next(), "blue", 0);
- else if (mode == MessageLevel::Error)
- while (iter.hasNext())
- writeColor(iter.next(), "red", 0);
- else if (mode == MessageLevel::Warning)
- while (iter.hasNext())
- writeColor(iter.next(), "orange", 0);
- else if (mode == MessageLevel::Fatal)
- while (iter.hasNext())
- writeColor(iter.next(), "red", "black");
- else if (mode == MessageLevel::Debug)
- while (iter.hasNext())
- writeColor(iter.next(), "green", 0);
- else if (mode == MessageLevel::PrePost)
- while (iter.hasNext())
- writeColor(iter.next(), "grey", 0);
- // TODO: implement other MessageLevels
- else
- while (iter.hasNext())
- writeColor(iter.next(), 0, 0);
+ QTextCharFormat format(*defaultFormat);
+
+ switch(mode)
+ {
+ case MessageLevel::MultiMC:
+ {
+ format.setForeground(QColor("blue"));
+ break;
+ }
+ case MessageLevel::Debug:
+ {
+ format.setForeground(QColor("green"));
+ break;
+ }
+ case MessageLevel::Warning:
+ {
+ format.setForeground(QColor("orange"));
+ break;
+ }
+ case MessageLevel::Error:
+ {
+ format.setForeground(QColor("red"));
+ break;
+ }
+ case MessageLevel::Fatal:
+ {
+ format.setForeground(QColor("red"));
+ format.setBackground(QColor("black"));
+ }
+ case MessageLevel::PrePost:
+ {
+ format.setForeground(QColor("grey"));
+ }
+ case MessageLevel::Info:
+ case MessageLevel::Message:
+ default:
+ {
+ // do nothing, keep original
+ }
+ }
+
+ while (iter.hasNext())
+ {
+ // append a paragraph/line
+ auto workCursor = ui->text->textCursor();
+ workCursor.movePosition(QTextCursor::End);
+ workCursor.insertText(iter.next(), format);
+ workCursor.insertBlock();
+ }
+
if (isVisible())
{
if (m_scroll_active)