File indexing completed on 2024-05-05 04:37:31

0001 /*
0002     SPDX-FileCopyrightText: 2010 Aleix Pol Gonzalez <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "documentationfindwidget.h"
0008 #include "ui_documentationfindwidget.h"
0009 
0010 using namespace KDevelop;
0011 
0012 DocumentationFindWidget::DocumentationFindWidget(QWidget* parent)
0013     : QWidget(parent)
0014 {
0015     m_ui = new Ui::FindWidget;
0016     m_ui->setupUi(this);
0017 
0018     connect(m_ui->findText, &QLineEdit::textEdited,
0019             this, &DocumentationFindWidget::emitDataChanged);
0020     connect(m_ui->matchCase, &QAbstractButton::toggled,
0021             this, &DocumentationFindWidget::emitDataChanged);
0022     connect(m_ui->findText, &QLineEdit::returnPressed,
0023             this, &DocumentationFindWidget::searchNext);
0024     connect(m_ui->nextButton, &QToolButton::clicked,
0025             this, &DocumentationFindWidget::searchNext);
0026     connect(m_ui->previousButton, &QToolButton::clicked,
0027             this, &DocumentationFindWidget::searchPrevious);
0028     // TODO: disable next/previous buttons if no (more) search hits, color coding in text field
0029 }
0030 
0031 DocumentationFindWidget::~DocumentationFindWidget()
0032 {
0033     delete m_ui;
0034 }
0035 
0036 void KDevelop::DocumentationFindWidget::searchNext()
0037 {
0038     FindOptions opts=Next;
0039     if (m_ui->matchCase->isChecked())
0040         opts |= MatchCase;
0041 
0042     emit searchRequested(m_ui->findText->text(), opts);
0043 }
0044 
0045 void KDevelop::DocumentationFindWidget::searchPrevious()
0046 {
0047     FindOptions opts=Previous;
0048     if (m_ui->matchCase->isChecked())
0049         opts |= MatchCase;
0050 
0051     emit searchRequested(m_ui->findText->text(), opts);
0052 }
0053 
0054 void KDevelop::DocumentationFindWidget::startSearch()
0055 {
0056     show();
0057     m_ui->findText->selectAll();
0058     m_ui->findText->setFocus();
0059 }
0060 
0061 void DocumentationFindWidget::emitDataChanged()
0062 {
0063     FindOptions opts;
0064     if (m_ui->matchCase->isChecked())
0065         opts |= MatchCase;
0066 
0067     emit searchDataChanged(m_ui->findText->text(), opts);
0068 }
0069 
0070 void KDevelop::DocumentationFindWidget::hideEvent(QHideEvent* event)
0071 {
0072     emit searchFinished();
0073     QWidget::hideEvent(event);
0074 }
0075 
0076 #include "moc_documentationfindwidget.cpp"