]> git.sur5r.net Git - minitube/blobdiff - src/googlesuggest.cpp
Imported Upstream version 1.4.1
[minitube] / src / googlesuggest.cpp
diff --git a/src/googlesuggest.cpp b/src/googlesuggest.cpp
deleted file mode 100644 (file)
index 656c651..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-#include "googlesuggest.h"
-#include "networkaccess.h"
-
-#define GSUGGEST_URL "http://suggestqueries.google.com/complete/search?ds=yt&output=toolbar&hl=%1&q=%2"
-
-namespace The {
-    NetworkAccess* http();
-}
-
-GSuggestCompletion::GSuggestCompletion(QWidget *parent, QLineEdit *editor):
-        QObject(parent), buddy(parent), editor(editor) {
-
-    enabled = true;
-
-    popup = new QListWidget;
-    popup->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    popup->installEventFilter(this);
-    popup->setMouseTracking(true);
-    popup->setWindowOpacity(.9);
-
-    connect(popup, SIGNAL(itemClicked(QListWidgetItem*)),
-            SLOT(doneCompletion()));
-
-    // connect(popup, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
-    //    SLOT(currentItemChanged(QListWidgetItem *)));
-
-    // mouse hover
-    // connect(popup, SIGNAL(itemEntered(QListWidgetItem*)),
-    //    SLOT(currentItemChanged(QListWidgetItem *)));
-
-    popup->setWindowFlags(Qt::Popup);
-    popup->setFocusPolicy(Qt::NoFocus);
-    popup->setFocusProxy(parent);
-
-    timer = new QTimer(this);
-    timer->setSingleShot(true);
-    timer->setInterval(300);
-    connect(timer, SIGNAL(timeout()), SLOT(autoSuggest()));
-    connect(editor, SIGNAL(textEdited(QString)), timer, SLOT(start()));
-
-}
-
-GSuggestCompletion::~GSuggestCompletion() {
-    delete popup;
-}
-
-bool GSuggestCompletion::eventFilter(QObject *obj, QEvent *ev) {
-    if (obj != popup)
-        return false;
-
-    if (ev->type() == QEvent::MouseButtonPress) {
-        popup->hide();
-        editor->setFocus();
-        editor->setText(originalText);
-        return true;
-    }
-
-    if (ev->type() == QEvent::KeyPress) {
-
-        bool consumed = false;
-
-        QKeyEvent *keyEvent = static_cast<QKeyEvent*>(ev);
-        int key = keyEvent->key();
-        // qDebug() << keyEvent->text();
-        switch (key) {
-        case Qt::Key_Enter:
-        case Qt::Key_Return:
-            if (popup->currentItem()) {
-                doneCompletion();
-                consumed = true;
-            } else {
-                editor->setFocus();
-                editor->event(ev);
-                popup->hide();
-            }
-            break;
-
-        case Qt::Key_Escape:
-            editor->setFocus();
-            editor->setText(originalText);
-            popup->hide();
-            consumed = true;
-            break;
-
-        case Qt::Key_Up:
-        case Qt::Key_Down:
-        case Qt::Key_Home:
-        case Qt::Key_End:
-        case Qt::Key_PageUp:
-        case Qt::Key_PageDown:
-            break;
-
-        default:
-            // qDebug() << keyEvent->text();
-            editor->setFocus();
-            editor->event(ev);
-            popup->hide();
-            break;
-        }
-
-        return consumed;
-    }
-
-    return false;
-}
-
-void GSuggestCompletion::showCompletion(const QStringList &choices) {
-
-    if (choices.isEmpty())
-        return;
-
-    popup->setUpdatesEnabled(false);
-    popup->clear();
-    for (int i = 0; i < choices.count(); ++i) {
-        QListWidgetItem * item;
-        item = new QListWidgetItem(popup);
-        item->setText(choices[i]);
-    }
-    popup->setCurrentItem(0);
-    popup->adjustSize();
-    popup->setUpdatesEnabled(true);
-
-    int h = popup->sizeHintForRow(0) * choices.count() + 4;
-    popup->resize(buddy->width(), h);
-
-    popup->move(buddy->mapToGlobal(QPoint(0, buddy->height())));
-
-    popup->setFocus();
-    popup->show();
-}
-
-void GSuggestCompletion::doneCompletion() {
-    timer->stop();
-    popup->hide();
-    editor->setFocus();
-    QListWidgetItem *item = popup->currentItem();
-    if (item) {
-        editor->setText(item->text());
-        QKeyEvent *e;
-        e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier);
-        QApplication::postEvent(editor, e);
-        e = new QKeyEvent(QEvent::KeyRelease, Qt::Key_Enter, Qt::NoModifier);
-        QApplication::postEvent(editor, e);
-    }
-}
-
-void GSuggestCompletion::preventSuggest() {
-    // qDebug() << "preventSuggest";
-    timer->stop();
-    enabled = false;
-    popup->hide();
-}
-
-void GSuggestCompletion::enableSuggest() {
-    // qDebug() << "enableSuggest";
-    enabled = true;
-}
-
-void GSuggestCompletion::autoSuggest() {
-    if (!enabled) return;
-
-    QString query = editor->text();
-    originalText = query;
-    // qDebug() << "originalText" << originalText;
-    if (query.isEmpty()) return;
-
-    QString locale = QLocale::system().name().replace("_", "-");
-    // case for system locales such as "C"
-    if (locale.length() < 2) {
-        locale = "en-US";
-    }
-
-    QString url = QString(GSUGGEST_URL).arg(locale, query);
-
-    QObject *reply = The::http()->get(url);
-    connect(reply, SIGNAL(data(QByteArray)), SLOT(handleNetworkData(QByteArray)));
-}
-
-void GSuggestCompletion::handleNetworkData(QByteArray response) {
-    if (!enabled) return;
-
-    QStringList choices;
-
-    QXmlStreamReader xml(response);
-    while (!xml.atEnd()) {
-        xml.readNext();
-        if (xml.tokenType() == QXmlStreamReader::StartElement)
-            if (xml.name() == "suggestion") {
-            QStringRef str = xml.attributes().value("data");
-            choices << str.toString();
-        }
-    }
-
-    showCompletion(choices);
-
-}
-
-void GSuggestCompletion::currentItemChanged(QListWidgetItem *current) {
-    if (current) {
-        // qDebug() << "current" << current->text();
-        current->setSelected(true);
-        editor->setText(current->text());
-        editor->setSelection(originalText.length(), editor->text().length());
-    }
-}