/** * This file is part of the KDE project * Copyright (C) 2009 Kevin Ottens * Copyright (C) 2009 Fabrizio Montesi * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include using namespace Jolie; class MainWindow : public QWidget { Q_OBJECT public: MainWindow() { setEnabled(false); setLayout(new QVBoxLayout()); m_lineEdit = new QLineEdit(this); m_browser = new QTextBrowser(this); m_browser->setOpenExternalLinks(true); layout()->addWidget(m_lineEdit); layout()->addWidget(m_browser); m_meta.start(); QTimer::singleShot(1000, this, SLOT(delayedInit())); } ~MainWindow() { m_meta.stop(); delete m_client; } private slots: void delayedInit() { Value aliases; aliases.children("webSearch") << Value("webSearch?appid=%{applicationId}&query=%{query}"); Value inProtocol("http"); inProtocol.children("format") << Value("rest"); inProtocol.children("aliases") << aliases; Value outProtocol("sodep"); m_resourcePath = m_meta.addRedirection( QString::fromUtf8("YahooWebSearch"), QString::fromUtf8("socket://search.yahooapis.com:80/WebSearchService/V1/"), inProtocol, outProtocol ); m_client = new Client(QString::fromUtf8("localhost"), 9000); connect(m_lineEdit, SIGNAL(returnPressed()), this, SLOT(onReturnPressed())); setEnabled(true); m_lineEdit->setFocus(); } void onReturnPressed() { Message request((QString::fromUtf8("/")+m_resourcePath).toUtf8(), "webSearch"); Value requestData; requestData.children("applicationId") << Value("UrlfFCDV34F.d8xYpsswjaA7P.unhHJ6ELvrhhIb.ybJeUHh.POHIkSf_YO0Fw--"); requestData.children("query") << Value(m_lineEdit->text().toUtf8()); request.setData(requestData); Message response = m_client->call(request); m_browser->clear(); QString html = QString::fromUtf8(""); foreach (const Value &value, response.data().children("Result")) { QString url = QString::fromUtf8(value.children("Url").first().toByteArray()); QString title = QString::fromUtf8(value.children("Title").first().toByteArray()); QString summary = QString::fromUtf8(value.children("Summary").first().toByteArray()); html+= QString::fromUtf8( "" "
%3

" ).arg(url).arg(title).arg(summary); } html+= QString::fromUtf8(""); m_browser->setHtml(html); } private: MetaService m_meta; QLineEdit *m_lineEdit; QTextBrowser *m_browser; Client *m_client; QString m_resourcePath; }; int main(int argc, char **argv) { QApplication app(argc, argv); MainWindow w; w.show(); return app.exec(); } #include "trivialyahooclient.moc"