aboutsummaryrefslogtreecommitdiff
path: root/src/forms/searchform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/forms/searchform.cpp')
-rw-r--r--src/forms/searchform.cpp56
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);
+}