]> git.sur5r.net Git - minitube/blobdiff - src/autocomplete.cpp
2.5.2
[minitube] / src / autocomplete.cpp
index 1cd6dd4ee678782605268e3e3276533e2f810a39..8ef4d317d7e910766abbd7b07edfc6ce12864896 100644 (file)
@@ -19,13 +19,16 @@ along with Minitube.  If not, see <http://www.gnu.org/licenses/>.
 $END_LICENSE */
 #include "autocomplete.h"
 #include "suggester.h"
-#ifdef APP_MAC
+#ifdef APP_MAC_SEARCHFIELD
 #include "searchlineedit_mac.h"
-#include "macutils.h"
 #else
 #include "searchlineedit.h"
 #endif
 
+#ifdef APP_MAC
+#include "macutils.h"
+#endif
+
 #include <QListWidget>
 
 #ifndef QT_NO_DEBUG_OUTPUT
@@ -43,14 +46,14 @@ QDebug operator<<(QDebug str, const QEvent * ev) {
 }
 #endif
 
-AutoComplete::AutoComplete(SearchLineEdit *buddy, QLineEdit *lineEdit):
-    QObject(buddy), buddy(buddy), lineEdit(lineEdit), enabled(true), suggester(0), itemHovering(false) {
+AutoComplete::AutoComplete(SearchWidget *buddy, QLineEdit *lineEdit):
+    QObject(lineEdit), buddy(buddy), lineEdit(lineEdit), enabled(true), suggester(0), itemHovering(false) {
 
     popup = new QListWidget();
     popup->setWindowFlags(Qt::Popup);
-    popup->setFocusProxy(buddy);
+    popup->setFocusProxy(buddy->toWidget());
     popup->installEventFilter(this);
-    buddy->window()->installEventFilter(this);
+    buddy->toWidget()->window()->installEventFilter(this);
     popup->setMouseTracking(true);
 
     // style
@@ -68,7 +71,7 @@ AutoComplete::AutoComplete(SearchLineEdit *buddy, QLineEdit *lineEdit):
     timer->setSingleShot(true);
     timer->setInterval(500);
     connect(timer, SIGNAL(timeout()), SLOT(suggest()));
-    connect(buddy, SIGNAL(textEdited(QString)), timer, SLOT(start()));
+    connect(buddy->toWidget(), SIGNAL(textEdited(QString)), timer, SLOT(start()));
 }
 
 bool AutoComplete::eventFilter(QObject *obj, QEvent *ev) {
@@ -125,7 +128,7 @@ bool AutoComplete::eventFilter(QObject *obj, QEvent *ev) {
                 popup->setCurrentItem(0);
                 popup->clearSelection();
                 buddy->setText(originalText);
-                buddy->setFocus();
+                buddy->toWidget()->setFocus();
                 consumed = true;
             }
             break;
@@ -170,13 +173,13 @@ void AutoComplete::showSuggestions(const QList<Suggestion *> &suggestions) {
     for (int i = 0; i < suggestions.count(); ++i)
         h += popup->sizeHintForRow(i);
 
-    popup->resize(buddy->width(), h);
+    popup->resize(buddy->toWidget()->width(), h);
     adjustPosition();
     popup->setUpdatesEnabled(true);
 
     if (popup->isHidden()) {
         itemHovering = false;
-        popup->show();
+        popup->showNormal();
         QTimer::singleShot(100, this, SLOT(enableItemHovering()));
     }
 }
@@ -228,12 +231,12 @@ void AutoComplete::suggestionsReady(const QList<Suggestion *> &suggestions) {
     qDeleteAll(this->suggestions);
     this->suggestions = suggestions;
     if (!enabled) return;
-    if (!buddy->hasFocus()) return;
+    if (!buddy->toWidget()->hasFocus() && buddy->toWidget()->isVisible()) return;
     showSuggestions(suggestions);
 }
 
 void AutoComplete::adjustPosition() {
-    popup->move(buddy->mapToGlobal(QPoint(0, buddy->height())));
+    popup->move(buddy->toWidget()->mapToGlobal(QPoint(0, buddy->toWidget()->height())));
 }
 
 void AutoComplete::enableItemHovering() {
@@ -242,7 +245,7 @@ void AutoComplete::enableItemHovering() {
 
 void AutoComplete::hideSuggestions() {
     itemHovering = false;
-#ifdef APP_MAC
+#ifdef APP_MAC_NO
     mac::fadeOutWindow(popup);
 #else
     popup->hide();
@@ -252,7 +255,7 @@ void AutoComplete::hideSuggestions() {
         buddy->setText(originalText);
         originalText.clear();
     }
-    buddy->setFocus();
+    buddy->toWidget()->setFocus();
     timer->stop();
 }