2696b802ddd0d799eb8fe366041354849dec3325
[dorian] / search.cpp
1 #include <QNetworkAccessManager>
2 #include <QNetworkReply>
3 #include <QNetworkRequest>
4
5 #include "search.h"
6 #include "platform.h"
7 #include "trace.h"
8
9 Search *inst = 0;
10
11 Search *Search::instance()
12 {
13     if (!inst) {
14         inst = new Search();
15     }
16     return inst;
17 }
18
19 void Search::close()
20 {
21     delete inst;
22     inst = 0;
23 }
24
25 Search::Search(): QObject(0), reply(0)
26 {
27     manager = new QNetworkAccessManager(this);
28 }
29
30 void Search::start(const Query &query)
31 {
32     Trace t("Search::start");
33
34     emit beginSearch();
35
36     QNetworkRequest request;
37     request.setUrl(QUrl("http://www.gutenberg.org/catalog/world/results"));
38     // request.setRawHeader("User-Agent", "Dorian " + Platform::version());
39     QByteArray data;
40     data = "title=" + QUrl::toPercentEncoding(query.title) + "&author=" +
41            QUrl::toPercentEncoding(query.author);
42     qDebug() << "Request:" << data;
43     reply = manager->post(request, data);
44     connect(reply, SIGNAL(finished()), this, SLOT(finished()));
45 }
46
47 QList<Search::Result> Search::results()
48 {
49     QList<Search::Result> ret;
50     return ret;
51 }
52
53 bool Search::download(const Search::Result &result, const QString &fileName)
54 {
55     Q_UNUSED(result);
56     Q_UNUSED(fileName);
57     emit beginDownload(0);
58     emit endDownload();
59     return false;
60 }
61
62 void Search::finished()
63 {
64     Trace t("Search::finished");
65     QByteArray data = reply->readAll();
66     qDebug() << data;
67     reply->deleteLater();
68     emit endSearch();
69 }