diff options
author | Petr Mrázek <peterix@gmail.com> | 2018-02-05 01:40:38 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2018-02-05 01:40:38 +0100 |
commit | 83649b5d52c1e9e56cf1fc4e5f5ab42b7508ad77 (patch) | |
tree | 009ee24969b63eff98f040a068b3cf75056eb587 /application/pages/OtherLogsPage.cpp | |
parent | 595d1571802b7d7ec1128a92a653f2ed7bdabb3c (diff) | |
download | MultiMC-83649b5d52c1e9e56cf1fc4e5f5ab42b7508ad77.tar MultiMC-83649b5d52c1e9e56cf1fc4e5f5ab42b7508ad77.tar.gz MultiMC-83649b5d52c1e9e56cf1fc4e5f5ab42b7508ad77.tar.lz MultiMC-83649b5d52c1e9e56cf1fc4e5f5ab42b7508ad77.tar.xz MultiMC-83649b5d52c1e9e56cf1fc4e5f5ab42b7508ad77.zip |
NOISSUE implement basic search in Other Logs page
Diffstat (limited to 'application/pages/OtherLogsPage.cpp')
-rw-r--r-- | application/pages/OtherLogsPage.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/application/pages/OtherLogsPage.cpp b/application/pages/OtherLogsPage.cpp index 0fe7360b..40ba4108 100644 --- a/application/pages/OtherLogsPage.cpp +++ b/application/pages/OtherLogsPage.cpp @@ -22,6 +22,7 @@ #include "RecursiveFileSystemWatcher.h" #include <GZip.h> #include <FileSystem.h> +#include <QShortcut> OtherLogsPage::OtherLogsPage(QString path, IPathMatcher::Ptr fileFilter, QWidget *parent) : QWidget(parent), ui(new Ui::OtherLogsPage), m_path(path), m_fileFilter(fileFilter), @@ -35,6 +36,17 @@ OtherLogsPage::OtherLogsPage(QString path, IPathMatcher::Ptr fileFilter, QWidget connect(m_watcher, &RecursiveFileSystemWatcher::filesChanged, this, &OtherLogsPage::populateSelectLogBox); populateSelectLogBox(); + + auto findShortcut = new QShortcut(QKeySequence(QKeySequence::Find), this); + connect(findShortcut, &QShortcut::activated, this, &OtherLogsPage::findActivated); + + auto findNextShortcut = new QShortcut(QKeySequence(QKeySequence::FindNext), this); + connect(findNextShortcut, &QShortcut::activated, this, &OtherLogsPage::findNextActivated); + + auto findPreviousShortcut = new QShortcut(QKeySequence(QKeySequence::FindPrevious), this); + connect(findPreviousShortcut, &QShortcut::activated, this, &OtherLogsPage::findPreviousActivated); + + connect(ui->searchBar, &QLineEdit::returnPressed, this, &OtherLogsPage::on_findButton_clicked); } OtherLogsPage::~OtherLogsPage() @@ -253,3 +265,36 @@ void OtherLogsPage::setControlsEnabled(const bool enabled) ui->text->setEnabled(enabled); ui->btnClean->setEnabled(enabled); } + +// FIXME: HACK, use LogView instead? +static void findNext(QPlainTextEdit * _this, const QString& what, bool reverse) +{ + _this->find(what, reverse ? QTextDocument::FindFlag::FindBackward : QTextDocument::FindFlag(0)); +} + +void OtherLogsPage::on_findButton_clicked() +{ + auto modifiers = QApplication::keyboardModifiers(); + bool reverse = modifiers & Qt::ShiftModifier; + findNext(ui->text, ui->searchBar->text(), reverse); +} + +void OtherLogsPage::findNextActivated() +{ + findNext(ui->text, ui->searchBar->text(), false); +} + +void OtherLogsPage::findPreviousActivated() +{ + findNext(ui->text, ui->searchBar->text(), true); +} + +void OtherLogsPage::findActivated() +{ + // focus the search bar if it doesn't have focus + if (!ui->searchBar->hasFocus()) + { + ui->searchBar->setFocus(); + ui->searchBar->selectAll(); + } +} |