1 #include "searchlineedit.h"
2 #include "autocomplete.h"
3 #include "iconutils.h"
4 
SearchLineEdit(QWidget * parent)5 SearchLineEdit::SearchLineEdit(QWidget *parent) : QLineEdit(parent) {
6     setClearButtonEnabled(true);
7     setPlaceholderText(tr("Search"));
8 
9     QAction *searchAction = new QAction();
10     IconUtils::setIcon(searchAction, "edit-find");
11     addAction(searchAction, QLineEdit::LeadingPosition);
12 
13     // completion
14     autoComplete = new AutoComplete(this, this);
15     connect(autoComplete, SIGNAL(suggestionAccepted(Suggestion *)),
16             SIGNAL(suggestionAccepted(Suggestion *)));
17 
18     connect(this, SIGNAL(returnPressed()), SLOT(returnPressed()));
19 }
20 
menu() const21 QMenu *SearchLineEdit::menu() const {
22     return nullptr;
23 }
24 
setMenu(QMenu * menu)25 void SearchLineEdit::setMenu(QMenu *menu) {
26     Q_UNUSED(menu);
27 }
28 
enableSuggest()29 void SearchLineEdit::enableSuggest() {
30     autoComplete->enableSuggest();
31 }
32 
preventSuggest()33 void SearchLineEdit::preventSuggest() {
34     autoComplete->preventSuggest();
35 }
36 
setSuggester(Suggester * suggester)37 void SearchLineEdit::setSuggester(Suggester *suggester) {
38     autoComplete->setSuggester(suggester);
39 }
40 
getAutoComplete()41 AutoComplete *SearchLineEdit::getAutoComplete() {
42     return autoComplete;
43 }
44 
emitTextChanged(const QString & text)45 void SearchLineEdit::emitTextChanged(const QString &text) {
46     autoComplete->enableSuggest();
47     emit QLineEdit::textEdited(text);
48 }
49 
returnPressed()50 void SearchLineEdit::returnPressed() {
51     QString s = text().simplified();
52     if (!s.isEmpty()) {
53         autoComplete->preventSuggest();
54         emit search(s);
55     }
56 }
57 
getLineEdit()58 QLineEdit *SearchLineEdit::getLineEdit() {
59     return this;
60 }
61 
toWidget()62 QWidget *SearchLineEdit::toWidget() {
63     return this;
64 }
65