]> git.sur5r.net Git - minitube/blob - src/autocomplete.h
Merge tag 'upstream/2.3'
[minitube] / src / autocomplete.h
1 /* $BEGIN_LICENSE
2
3 This file is part of Minitube.
4 Copyright 2009, Flavio Tordini <flavio.tordini@gmail.com>
5
6 Minitube is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 Minitube is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with Minitube.  If not, see <http://www.gnu.org/licenses/>.
18
19 $END_LICENSE */
20 #ifndef AUTOCOMPLETE_H
21 #define AUTOCOMPLETE_H
22
23 #include <QtGui>
24
25 class Suggester;
26 class Suggestion;
27 class SearchLineEdit;
28
29 class AutoComplete : public QObject {
30
31     Q_OBJECT
32
33 public:
34     AutoComplete(SearchLineEdit *buddy, QLineEdit *lineEdit);
35     void setSuggester(Suggester* suggester);
36     QListWidget* getPopup() { return popup; }
37     void preventSuggest();
38     void enableSuggest();
39
40 signals:
41     void suggestionAccepted(Suggestion *suggestion);
42     void suggestionAccepted(const QString &value);
43
44 protected:
45     bool eventFilter(QObject *obj, QEvent *ev);
46
47 private slots:
48     void acceptSuggestion();
49     void suggest();
50     void itemEntered(QListWidgetItem *item);
51     void currentItemChanged(QListWidgetItem *item);
52     void suggestionsReady(const QList<Suggestion*> &suggestions);
53     void adjustPosition();
54     void enableItemHovering();
55
56 private:
57     void showSuggestions(const QList<Suggestion*> &suggestions);
58     void hideSuggestions();
59
60     SearchLineEdit *buddy;
61     QLineEdit *lineEdit;
62     QString originalText;
63     QListWidget *popup;
64     QTimer *timer;
65     bool enabled;
66     Suggester *suggester;
67     QList<Suggestion*> suggestions;
68     bool itemHovering;
69 };
70
71 #endif // AUTOCOMPLETE_H