]> git.cworth.org Git - apitrace/blob - gui/searchwidget.cpp
Add a search widget and fix go to.
[apitrace] / gui / searchwidget.cpp
1 #include "searchwidget.h"
2
3 #include <QDebug>
4 #include <QKeyEvent>
5
6 SearchWidget::SearchWidget(QWidget *parent)
7     : QWidget(parent)
8 {
9     m_ui.setupUi(this);
10
11     m_ui.notFoundLabel->hide();
12     m_origPalette = m_ui.lineEdit->palette();
13
14     connect(m_ui.nextButton, SIGNAL(clicked()),
15             SLOT(slotSearchNext()));
16     connect(m_ui.prevButton, SIGNAL(clicked()),
17             SLOT(slotSearchPrev()));
18     connect(m_ui.closeButton, SIGNAL(clicked()),
19             SLOT(slotCancel()));
20     connect(m_ui.lineEdit, SIGNAL(returnPressed()),
21             SLOT(slotSearchNext()));
22
23     installEventFilter(this);
24 }
25
26 void SearchWidget::slotSearchNext()
27 {
28     QString txt = m_ui.lineEdit->text();
29     if (!txt.isEmpty())
30         emit searchNext(txt, caseSensitivity());
31 }
32
33 void SearchWidget::slotSearchPrev()
34 {
35     QString txt = m_ui.lineEdit->text();
36     if (!txt.isEmpty())
37         emit searchPrev(txt, caseSensitivity());
38 }
39
40 void SearchWidget::slotCancel()
41 {
42     hide();
43 }
44
45 void SearchWidget::showEvent(QShowEvent *event)
46 {
47     m_ui.lineEdit->selectAll();
48     m_ui.lineEdit->setFocus(Qt::ShortcutFocusReason);
49     m_ui.lineEdit->setPalette(m_origPalette);
50     return QWidget::showEvent(event);
51 }
52
53 Qt::CaseSensitivity SearchWidget::caseSensitivity() const
54 {
55     if (m_ui.caseSensitiveBox->isChecked())
56         return Qt::CaseSensitive;
57     else
58         return Qt::CaseInsensitive;
59 }
60
61 bool SearchWidget::eventFilter(QObject *object, QEvent* event)
62 {
63     if (event->type() == QEvent::KeyPress) {
64         if ((static_cast<QKeyEvent*>(event))->key() == Qt::Key_Escape) {
65             hide();
66         }
67     }
68     return QWidget::eventFilter(object, event);
69 }
70
71 void SearchWidget::setFound(bool found)
72 {
73     QPalette pal = m_origPalette;
74     pal.setColor(QPalette::Active, QPalette::Base,
75                  found ? Qt::white : QColor(255, 102, 102));
76     m_ui.lineEdit->setPalette(pal);
77     m_ui.notFoundLabel->setVisible(!found);
78 }
79
80 #include "searchwidget.moc"