void SoundCloudService::setSearch(const QString &searchTerm) { if (searchTerm==currentSearch) { return; } clear(); currentSearch=searchTerm; if (currentSearch.isEmpty()) { return; } QUrl searchUrl(constUrl); #if QT_VERSION < 0x050000 QUrl &query=searchUrl; #else QUrlQuery query; #endif query.addQueryItem("client_id", constApiKey); query.addQueryItem("q", searchTerm); #if QT_VERSION >= 0x050000 searchUrl.setQuery(query); #endif QNetworkRequest req(searchUrl); req.setRawHeader("Accept", "application/json"); job=NetworkAccessManager::self()->get(req); connect(job, SIGNAL(finished()), this, SLOT(jobFinished())); emitUpdated(); setBusy(true); }
/*! Requests search results on the search engine, for a given \a searchTerm. The default implementation does nothing, to supply your own you need to create your own OpenSearchEngineDelegate subclass and supply it to the engine. Then the function will call the performSearchRequest() method of the delegate, which can then handle the request in a custom way. \sa requestSuggestions(), delegate() */ void OpenSearchEngine::requestSearchResults(const QString &searchTerm) { if (!m_delegate || searchTerm.isEmpty()) { return; } Q_ASSERT(m_requestMethods.contains(m_searchMethod)); QNetworkRequest request(QUrl(searchUrl(searchTerm))); QByteArray data; QNetworkAccessManager::Operation operation = m_requestMethods.value(m_searchMethod); if (operation == QNetworkAccessManager::PostOperation) { QStringList parameters; Parameters::const_iterator end = m_searchParameters.constEnd(); Parameters::const_iterator i = m_searchParameters.constBegin(); for (; i != end; ++i) { parameters.append(i->first + QLatin1String("=") + i->second); } data = parameters.join(QLatin1String("&")).toUtf8(); } m_delegate->performSearchRequest(request, operation, data); }
void PageDownloader::download(QString url) { qDebug() << QString("Downloading %1...").arg(url); if (!mNetworkManager) { mNetworkManager.reset(new QNetworkAccessManager); connect(mNetworkManager.data(), &QNetworkAccessManager::finished, this, &PageDownloader::onReplyFinished); } mUrlString = url; QUrl searchUrl(url); downloadUrl(searchUrl); }
void WebView::addSearchEngine() { QAction *action = qobject_cast<QAction*>(sender()); if (!action) return; QVariant variant = action->data(); if (!variant.canConvert<QWebElement>()) return; QWebElement element = qvariant_cast<QWebElement>(variant); QString elementName = element.attribute(QLatin1String("name")); QWebElement formElement = element; while (formElement.tagName().toLower() != QLatin1String("form")) formElement = formElement.parent(); if (formElement.isNull() || formElement.attribute(QLatin1String("action")).isEmpty()) return; QString method = formElement.attribute(QLatin1String("method"), QLatin1String("get")).toLower(); if (method != QLatin1String("get")) { QMessageBox::warning(this, tr("Method not supported"), tr("%1 method is not supported.").arg(method.toUpper())); return; } QUrl searchUrl(page()->mainFrame()->baseUrl().resolved(QUrl(formElement.attribute(QLatin1String("action"))))); QMap<QString, QString> searchEngines; QWebElementCollection inputFields = formElement.findAll(QLatin1String("input")); foreach (QWebElement inputField, inputFields) { QString type = inputField.attribute(QLatin1String("type"), QLatin1String("text")); QString name = inputField.attribute(QLatin1String("name")); QString value = inputField.evaluateJavaScript(QLatin1String("this.value")).toString(); if (type == QLatin1String("submit")) { searchEngines.insert(value, name); } else if (type == QLatin1String("text")) { if (inputField == element) value = QLatin1String("{searchTerms}"); searchUrl.addQueryItem(name, value); } else if (type == QLatin1String("checkbox") || type == QLatin1String("radio")) { if (inputField.evaluateJavaScript(QLatin1String("this.checked")).toBool()) { searchUrl.addQueryItem(name, value); } } else if (type == QLatin1String("hidden")) { searchUrl.addQueryItem(name, value); } }
void SoundCloudService::search(const QString &key, const QString &value) { Q_UNUSED(key); if (value==currentValue) { return; } clear(); cancel(); currentValue=value; if (currentValue.isEmpty()) { return; } QUrl searchUrl(constUrl); #if QT_VERSION < 0x050000 QUrl &query=searchUrl; #else QUrlQuery query; #endif query.addQueryItem("client_id", constApiKey); query.addQueryItem("q", currentValue); #if QT_VERSION >= 0x050000 searchUrl.setQuery(query); #endif QNetworkRequest req(searchUrl); req.setRawHeader("Accept", "application/json"); job=NetworkAccessManager::self()->get(req); connect(job, SIGNAL(finished()), this, SLOT(jobFinished())); emit searching(); emit dataChanged(QModelIndex(), QModelIndex()); }