diff options
Diffstat (limited to 'src/forms/searchform.cpp')
-rw-r--r-- | src/forms/searchform.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/forms/searchform.cpp b/src/forms/searchform.cpp new file mode 100644 index 0000000..0e5161f --- /dev/null +++ b/src/forms/searchform.cpp @@ -0,0 +1,56 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: git://neueland.iserlohn-fortress.net/smolbote.git + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#include "searchform.h" +#include "ui_searchform.h" +#include "../mainwindow.h" + +#include <QFlags> +#include <settings/configuration.h> + +SearchForm::SearchForm(MainWindow *parentWindow, QWidget *parent) : + QWidget(parent), + ui(new Ui::SearchForm) +{ + Q_CHECK_PTR(parentWindow); + + ui->setupUi(this); + ui->lineEdit->setPlaceholderText(tr("Search")); + ui->lineEdit->setClearButtonEnabled(true); + + // show/hide action + QAction *toggleSearchBox = new QAction(this); + toggleSearchBox->setShortcut(QKeySequence(QString::fromStdString(parentWindow->m_config->value<std::string>("browser.shortcuts.toggleSearchBox").value()))); + connect(toggleSearchBox, &QAction::triggered, this, [this]() { + if(isVisible()) { + setVisible(false); + } else { + setVisible(true); + setFocus(); + } + }); + parentWindow->addAction(toggleSearchBox); + + connect(ui->lineEdit, &QLineEdit::returnPressed, this, [this, parentWindow]() { + QWebEnginePage::FindFlags searchFlags; + searchFlags.setFlag(QWebEnginePage::FindCaseSensitively, ui->caseSensitivity_checkBox->isChecked()); + searchFlags.setFlag(QWebEnginePage::FindBackward, ui->reverseSearch_checkBox->isChecked()); + parentWindow->m_currentView->findText(ui->lineEdit->text(), searchFlags); + }); +} + +SearchForm::~SearchForm() +{ + delete ui; +} + +void SearchForm::focusInEvent(QFocusEvent *e) +{ + ui->lineEdit->setFocus(); + QWidget::focusInEvent(e); +} |