X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=search.h;h=4908ac668d6d153877befa3ddd083805430c9f65;hb=c474162a11b6851413b67df35765ce727b89c278;hp=d11b7e5f07716b8ca14fb12ba260f142ee3580a2;hpb=539729f459b95168493510c024e4b581901618e3;p=dorian diff --git a/search.h b/search.h index d11b7e5..4908ac6 100644 --- a/search.h +++ b/search.h @@ -16,6 +16,7 @@ class Search: public QObject Q_OBJECT public: + /** Search query. */ struct Query { QString title; @@ -23,6 +24,7 @@ public: QStringList languages; }; + /** Search result. */ struct Result { QString id; @@ -31,6 +33,17 @@ public: QStringList authors; QString language; QImage cover; + bool operator ==(const Result &other) const { + return (source == other.source) && (id == other.id); + } + }; + + /** Download status. */ + enum + { + Ok, + DownloadError, + FileError, }; static Search *instance(); @@ -42,18 +55,25 @@ signals: void endSearch(); void beginDownload(int totalBlocks); void downloading(int blocks); - void endDownload(); + void endDownload(int status, const Search::Result &result, + const QString &fileName); public slots: void start(const Query &query); QList results(); - bool download(const Result &result, const QString &fileName); + void download(const Result &result, const QString &fileName); void finished(); + void downloadFinished(); -protected: +private: explicit Search(); QNetworkAccessManager *manager; + QNetworkAccessManager *downloadManager; QNetworkReply *reply; + QNetworkReply *downloadReply; + QList searchResults; + Search::Result downloadResult; + QString downloadFileName; }; #endif // SEARCH_H