/* * 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: https://neueland.iserlohn-fortress.net/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #include "searchform.h" #include "mainwindow/mainwindow.h" #include "ui_searchform.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); ui->result_label->setVisible(false); // show/hide action auto *toggleSearchBox = new QAction(this); toggleSearchBox->setShortcut(QKeySequence(QString::fromStdString(parentWindow->m_config->value("browser.shortcuts.toggleSearchBox").value()))); connect(toggleSearchBox, &QAction::triggered, this, [this, parentWindow]() { if(isVisible()) { setVisible(false); // remove highlighting by passing an empty string parentWindow->m_currentView->findText(""); } 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, [this](bool found) { ui->result_label->setVisible(!found); }); }); } SearchForm::~SearchForm() { delete ui; } void SearchForm::focusInEvent(QFocusEvent *e) { ui->lineEdit->setFocus(); QWidget::focusInEvent(e); }