diff options
Diffstat (limited to 'gui/pages/LogPage.cpp')
-rw-r--r-- | gui/pages/LogPage.cpp | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/gui/pages/LogPage.cpp b/gui/pages/LogPage.cpp deleted file mode 100644 index 4e9e4f52..00000000 --- a/gui/pages/LogPage.cpp +++ /dev/null @@ -1,222 +0,0 @@ -#include "LogPage.h" -#include "ui_LogPage.h" - -#include "MultiMC.h" - -#include <QIcon> -#include <QScrollBar> -#include <QShortcut> - -#include "logic/BaseProcess.h" -#include "gui/GuiUtil.h" - -LogPage::LogPage(BaseProcess *proc, QWidget *parent) - : QWidget(parent), ui(new Ui::LogPage), m_process(proc) -{ - ui->setupUi(this); - ui->tabWidget->tabBar()->hide(); - 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()); - QString fontFamily = MMC->settings()->get("ConsoleFont").toString(); - bool conversionOk = false; - int fontSize = MMC->settings()->get("ConsoleFontSize").toInt(&conversionOk); - if(!conversionOk) - { - fontSize = 11; - } - defaultFormat->setFont(QFont(fontFamily, fontSize)); - - auto findShortcut = new QShortcut(QKeySequence(QKeySequence::Find), this); - connect(findShortcut, SIGNAL(activated()), SLOT(findActivated())); - auto findNextShortcut = new QShortcut(QKeySequence(QKeySequence::FindNext), this); - connect(findNextShortcut, SIGNAL(activated()), SLOT(findNextActivated())); - connect(ui->searchBar, SIGNAL(returnPressed()), SLOT(on_findButton_clicked())); - auto findPreviousShortcut = new QShortcut(QKeySequence(QKeySequence::FindPrevious), this); - connect(findPreviousShortcut, SIGNAL(activated()), SLOT(findPreviousActivated())); -} - -LogPage::~LogPage() -{ - delete ui; - delete defaultFormat; -} - -bool LogPage::apply() -{ - return true; -} - -bool LogPage::shouldDisplay() const -{ - return m_process->instance()->isRunning(); -} - -void LogPage::on_btnPaste_clicked() -{ - GuiUtil::uploadPaste(ui->text->toPlainText(), this); -} - -void LogPage::on_btnCopy_clicked() -{ - GuiUtil::setClipboardText(ui->text->toPlainText()); -} - -void LogPage::on_btnClear_clicked() -{ - ui->text->clear(); -} - -void LogPage::on_trackLogCheckbox_clicked(bool checked) -{ - m_write_active = checked; -} - -void LogPage::on_findButton_clicked() -{ - auto modifiers = QApplication::keyboardModifiers(); - if (modifiers & Qt::ShiftModifier) - { - findPreviousActivated(); - } - else - { - findNextActivated(); - } -} - -void LogPage::findActivated() -{ - // focus the search bar if it doesn't have focus - if (!ui->searchBar->hasFocus()) - { - auto searchForCursor = ui->text->textCursor(); - auto searchForString = searchForCursor.selectedText(); - if (searchForString.size()) - { - ui->searchBar->setText(searchForString); - } - ui->searchBar->setFocus(); - ui->searchBar->selectAll(); - } -} - -void LogPage::findNextActivated() -{ - auto toSearch = ui->searchBar->text(); - if (toSearch.size()) - { - ui->text->find(toSearch); - } -} - -void LogPage::findPreviousActivated() -{ - auto toSearch = ui->searchBar->text(); - if (toSearch.size()) - { - ui->text->find(toSearch, QTextDocument::FindBackward); - } -} - -void LogPage::write(QString data, MessageLevel::Enum mode) -{ - if (!m_write_active) - { - if (mode != MessageLevel::PrePost && mode != MessageLevel::MultiMC) - { - return; - } - } - - // save the cursor so it can be restored. - auto savedCursor = ui->text->cursor(); - - QScrollBar *bar = ui->text->verticalScrollBar(); - int max_bar = bar->maximum(); - int val_bar = bar->value(); - if (isVisible()) - { - if (m_scroll_active) - { - m_scroll_active = (max_bar - val_bar) <= 1; - } - else - { - m_scroll_active = val_bar == max_bar; - } - } - if (data.endsWith('\n')) - data = data.left(data.length() - 1); - QStringList paragraphs = data.split('\n'); - QStringList filtered; - for (QString ¶graph : paragraphs) - { - //TODO: implement filtering here. - filtered.append(paragraph); - } - QListIterator<QString> iter(filtered); - 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")); - break; - } - case MessageLevel::PrePost: - { - format.setForeground(QColor("grey")); - break; - } - 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) - { - bar->setValue(bar->maximum()); - } - m_last_scroll_value = bar->value(); - } - ui->text->setCursor(savedCursor); -} |