blob: 7ddd40b1b085b7a3df5b394ea52b65afcfdb5888 [file] [log] [blame]
Zack Rusinf04cf8a2011-04-12 23:21:52 -04001#include "searchwidget.h"
2
3#include <QDebug>
4#include <QKeyEvent>
Zack Rusin2f15f4f2011-04-13 17:26:59 -04005#include <QKeySequence>
Zack Rusinf04cf8a2011-04-12 23:21:52 -04006
7SearchWidget::SearchWidget(QWidget *parent)
8 : QWidget(parent)
9{
10 m_ui.setupUi(this);
11
12 m_ui.notFoundLabel->hide();
13 m_origPalette = m_ui.lineEdit->palette();
14
15 connect(m_ui.nextButton, SIGNAL(clicked()),
16 SLOT(slotSearchNext()));
17 connect(m_ui.prevButton, SIGNAL(clicked()),
18 SLOT(slotSearchPrev()));
19 connect(m_ui.closeButton, SIGNAL(clicked()),
20 SLOT(slotCancel()));
21 connect(m_ui.lineEdit, SIGNAL(returnPressed()),
22 SLOT(slotSearchNext()));
23
Zack Rusin2f15f4f2011-04-13 17:26:59 -040024 m_ui.nextButton->setShortcut(
25 QKeySequence::FindNext);
26 m_ui.prevButton->setShortcut(
27 QKeySequence::FindPrevious);
28
Zack Rusinf04cf8a2011-04-12 23:21:52 -040029 installEventFilter(this);
30}
31
32void SearchWidget::slotSearchNext()
33{
34 QString txt = m_ui.lineEdit->text();
35 if (!txt.isEmpty())
Ruslan Kabatsayev75d69052019-02-20 13:41:18 +030036 emit searchNext(txt, caseSensitivity(), regexEnabled());
Zack Rusinf04cf8a2011-04-12 23:21:52 -040037}
38
39void SearchWidget::slotSearchPrev()
40{
41 QString txt = m_ui.lineEdit->text();
42 if (!txt.isEmpty())
Ruslan Kabatsayev75d69052019-02-20 13:41:18 +030043 emit searchPrev(txt, caseSensitivity(), regexEnabled());
Zack Rusinf04cf8a2011-04-12 23:21:52 -040044}
45
46void SearchWidget::slotCancel()
47{
48 hide();
49}
50
51void SearchWidget::showEvent(QShowEvent *event)
52{
Zack Rusinf04cf8a2011-04-12 23:21:52 -040053 return QWidget::showEvent(event);
54}
55
56Qt::CaseSensitivity SearchWidget::caseSensitivity() const
57{
58 if (m_ui.caseSensitiveBox->isChecked())
59 return Qt::CaseSensitive;
60 else
61 return Qt::CaseInsensitive;
62}
63
Ruslan Kabatsayev75d69052019-02-20 13:41:18 +030064bool SearchWidget::regexEnabled() const
65{
66 return m_ui.regexBox->isChecked();
67}
68
Zack Rusinf04cf8a2011-04-12 23:21:52 -040069bool SearchWidget::eventFilter(QObject *object, QEvent* event)
70{
71 if (event->type() == QEvent::KeyPress) {
72 if ((static_cast<QKeyEvent*>(event))->key() == Qt::Key_Escape) {
73 hide();
74 }
75 }
76 return QWidget::eventFilter(object, event);
77}
78
79void SearchWidget::setFound(bool found)
80{
81 QPalette pal = m_origPalette;
82 pal.setColor(QPalette::Active, QPalette::Base,
83 found ? Qt::white : QColor(255, 102, 102));
84 m_ui.lineEdit->setPalette(pal);
85 m_ui.notFoundLabel->setVisible(!found);
86}
87
Zack Rusinf54c4fc2011-04-12 23:39:13 -040088void SearchWidget::show()
89{
90 QWidget::show();
91 m_ui.lineEdit->selectAll();
92 m_ui.lineEdit->setFocus(Qt::ShortcutFocusReason);
93 m_ui.lineEdit->setPalette(m_origPalette);
94}
95
Zack Rusinf04cf8a2011-04-12 23:21:52 -040096#include "searchwidget.moc"