blob: 24705f9713f661072e580f73f083d85155415b01 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
#include "searchbar.hpp"
#include "kristall.hpp"
#include <QKeyEvent>
#include <QCompleter>
SearchBar::SearchBar(QWidget *parent) : QLineEdit(parent)
{
QCompleter *completer = new QCompleter(this);
completer->setModel(&kristall::globals().favourites);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setCompletionRole(Qt::DisplayRole);
this->setCompleter(completer);
}
void SearchBar::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Escape) {
emit this->escapePressed();
} else {
QLineEdit::keyPressEvent(event);
}
}
void SearchBar::keyReleaseEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Escape) {
// Eat the event
} else {
QLineEdit::keyReleaseEvent(event);
}
}
void SearchBar::focusInEvent(QFocusEvent *event)
{
QLineEdit::focusInEvent(event);
// Allows only one "select all" on mouse release
// until next focus event.
this->selectall_flag = (event->reason() == Qt::MouseFocusReason);
emit this->focused();
}
void SearchBar::focusOutEvent(QFocusEvent *event)
{
QLineEdit::focusOutEvent(event);
emit this->blurred();
}
void SearchBar::mouseReleaseEvent(QMouseEvent *event)
{
QLineEdit::mouseReleaseEvent(event);
// Select all text if the bar was just focused and
// user did not select anything.
if (this->selectall_flag && selectionStart() == -1)
{
QLineEdit::selectAll();
}
this->selectall_flag = false;
}
|