aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow/widgets')
-rw-r--r--src/mainwindow/widgets/searchform.cpp58
-rw-r--r--src/mainwindow/widgets/searchform.h35
-rw-r--r--src/mainwindow/widgets/searchform.ui51
3 files changed, 144 insertions, 0 deletions
diff --git a/src/mainwindow/widgets/searchform.cpp b/src/mainwindow/widgets/searchform.cpp
new file mode 100644
index 0000000..08d4470
--- /dev/null
+++ b/src/mainwindow/widgets/searchform.cpp
@@ -0,0 +1,58 @@
+/*
+ * 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 "src/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<std::string>("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);
+}
diff --git a/src/mainwindow/widgets/searchform.h b/src/mainwindow/widgets/searchform.h
new file mode 100644
index 0000000..94cc2a9
--- /dev/null
+++ b/src/mainwindow/widgets/searchform.h
@@ -0,0 +1,35 @@
+/*
+ * 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
+ */
+
+#ifndef SEARCHFORM_H
+#define SEARCHFORM_H
+
+#include <QWidget>
+
+namespace Ui
+{
+class SearchForm;
+}
+
+class MainWindow;
+class SearchForm : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit SearchForm(MainWindow *parentWindow, QWidget *parent = nullptr);
+ ~SearchForm() override;
+
+protected:
+ void focusInEvent(QFocusEvent *e) override;
+
+private:
+ Ui::SearchForm *ui;
+};
+
+#endif // SEARCHFORM_H
diff --git a/src/mainwindow/widgets/searchform.ui b/src/mainwindow/widgets/searchform.ui
new file mode 100644
index 0000000..9d1d108
--- /dev/null
+++ b/src/mainwindow/widgets/searchform.ui
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SearchForm</class>
+ <widget class="QWidget" name="SearchForm">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>600</width>
+ <height>32</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLineEdit" name="lineEdit"/>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="caseSensitivity_checkBox">
+ <property name="text">
+ <string>Case Sensitive</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="reverseSearch_checkBox">
+ <property name="text">
+ <string>Search Backwards</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="result_label">
+ <property name="text">
+ <string>No Results found</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>