diff options
| author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-01-20 14:29:59 +0100 | 
|---|---|---|
| committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-01-20 14:29:59 +0100 | 
| commit | 96a6749a4b66c1a59d51299216cb57336a1a4cbe (patch) | |
| tree | fb6810d4d25dbe870dccb3dfaaaff3260e24decb /src/mainwindow | |
| parent | Fixed repo location in license headers (diff) | |
| download | smolbote-96a6749a4b66c1a59d51299216cb57336a1a4cbe.tar.xz | |
Added result label to search form
Diffstat (limited to 'src/mainwindow')
| -rw-r--r-- | src/mainwindow/mainwindow.cpp | 2 | ||||
| -rw-r--r-- | src/mainwindow/widgets/searchform.cpp | 58 | ||||
| -rw-r--r-- | src/mainwindow/widgets/searchform.h | 35 | ||||
| -rw-r--r-- | src/mainwindow/widgets/searchform.ui | 51 | 
4 files changed, 145 insertions, 1 deletions
| diff --git a/src/mainwindow/mainwindow.cpp b/src/mainwindow/mainwindow.cpp index 94e9bce..a45c89e 100644 --- a/src/mainwindow/mainwindow.cpp +++ b/src/mainwindow/mainwindow.cpp @@ -8,7 +8,7 @@  #include "mainwindow.h"  #include "forms/aboutdialog.h" -#include "forms/searchform.h" +#include "src/mainwindow/widgets/searchform.h"  #include "ui_mainwindow.h"  #include "widgets/mainwindowmenubar.h"  #include <QDockWidget> 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> | 
