]> git.sur5r.net Git - minitube/blob - src/searchlineedit.h
Merge tag 'upstream/2.3'
[minitube] / src / searchlineedit.h
1 #ifndef SEARCHLINEEDIT_H
2 #define SEARCHLINEEDIT_H
3
4 #include "urllineedit.h"
5 #include "autocomplete.h"
6
7 #include <QLineEdit>
8 #include <QAbstractButton>
9
10 QT_BEGIN_NAMESPACE
11 class QMenu;
12 QT_END_NAMESPACE
13
14 class SearchButton;
15 class Suggester;
16
17 /*
18     Clear button on the right hand side of the search widget.
19     Hidden by default
20  */
21 class ClearButton : public QAbstractButton {
22
23     Q_OBJECT
24
25 public:
26     ClearButton(QWidget *parent = 0);
27     void paintEvent(QPaintEvent *e);
28
29 public slots:
30     void textChanged(const QString &text);
31
32 protected:
33     void enterEvent(QEvent *e);
34     void leaveEvent(QEvent *e);
35
36     void mousePressEvent(QEvent *e);
37     void mouseReleaseEvent(QEvent *e);
38
39 private:
40     bool hovered;
41     bool mousePressed;
42 };
43
44 class SearchLineEdit : public ExLineEdit {
45
46     Q_OBJECT
47
48 signals:
49     void textChanged(const QString &text);
50     void textEdited(const QString &text);
51     void search(const QString &text);
52     void suggestionAccepted(Suggestion *suggestion);
53
54 public:
55     SearchLineEdit(QWidget *parent = 0);
56
57     void setInactiveText(const QString &text);
58
59     QMenu *menu() const;
60     void setMenu(QMenu *menu);
61     void updateGeometries();
62     void enableSuggest();
63     void preventSuggest();
64     void selectAll() { lineEdit()->selectAll(); }
65     void setSuggester(Suggester *suggester) { autoComplete->setSuggester(suggester); }
66     void setText(const QString &text) { lineEdit()->setText(text); }
67
68 protected:
69     void resizeEvent(QResizeEvent *event);
70     void paintEvent(QPaintEvent *event);
71     void focusInEvent(QFocusEvent *event);
72
73 private slots:
74     void returnPressed();
75
76 private:
77     SearchButton *searchButton;
78     QString inactiveText;
79     AutoComplete *autoComplete;
80 };
81
82 #endif // SEARCHLINEEDIT_H
83