X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=searchresultsdialog.cpp;h=71381337b811c4034f52371d532dcd38d44f5384;hb=fb0f700559dc6ae38e4544b66101d44077244839;hp=02748228ad03c3701869cbe5b7ed91b109e79c87;hpb=4259b7276912249c515aae70995aa606ddf344a3;p=dorian diff --git a/searchresultsdialog.cpp b/searchresultsdialog.cpp index 0274822..7138133 100644 --- a/searchresultsdialog.cpp +++ b/searchresultsdialog.cpp @@ -1,14 +1,22 @@ +#include #include +#ifdef Q_WS_MAEMO_5 +#include +#endif + #include "listview.h" #include "searchresultsdialog.h" #include "searchresultinfodialog.h" #include "trace.h" +#include "progressdialog.h" +#include "library.h" +#include "platform.h" SearchResultsDialog::SearchResultsDialog(const QList results_, QWidget *parent): ListWindow(parent), results(results_) { - setWindowTitle(tr("Search results")); + setWindowTitle(tr("Search Results")); foreach (Search::Result result, results) { QString author; @@ -27,6 +35,14 @@ SearchResultsDialog::SearchResultsDialog(const QList results_, addItemAction(tr("Download book"), this, SLOT(onDownload())); connect(list, SIGNAL(activated(const QModelIndex &)), this, SLOT(onItemActivated(const QModelIndex &))); + Search *search = Search::instance(); + connect(search, SIGNAL(beginDownload(int)), this, SLOT(onBeginDownload(int))); + connect(search, + SIGNAL(endDownload(int, const Search::Result &, const QString &)), + this, + SLOT(onEndDownload(int, const Search::Result &, const QString &))); + + progress = new ProgressDialog(tr("Downloading Book"), this); } void SearchResultsDialog::onItemActivated(const QModelIndex &index) @@ -39,6 +55,9 @@ void SearchResultsDialog::onItemActivated(const QModelIndex &index) int ret = d->exec(); if (ret == QDialog::Accepted) { qDebug() << "Accepted -> Start download"; + QString fileName = downloadName(); + qDebug() << "Downloading to" << fileName; + Search::instance()->download(result, fileName); } } @@ -46,3 +65,47 @@ void SearchResultsDialog::onDownload() { onItemActivated(list->currentIndex()); } + +QString SearchResultsDialog::downloadName() const +{ + Trace t("SearchResultsDialog::downloadName"); + QString dir = Platform::downloadDir(); + QDir().mkpath(dir); // Not sure if this works. QDir API is quiet lame. + unsigned i = 0; + QString fileName; + do { + char tmp[9]; + snprintf(tmp, 8, "%8.8x", i++); + tmp[8] = '\0'; + fileName = QDir(dir).absoluteFilePath(QString(tmp) + ".epub"); + } while (QFile(fileName).exists()); + qDebug() << fileName; + return fileName; +} + +void SearchResultsDialog::onBeginDownload(int size) +{ + Q_UNUSED(size); + Trace t("SearchResultsDialog::onBeginDownload"); + progress->showWait(); +} + +void SearchResultsDialog::onEndDownload(int status, const Search::Result &result, + const QString &fileName) +{ + Q_UNUSED(result); + Trace t("SearchResultsDialog::onEndDownload"); + progress->reset(); + if (Search::Ok == status) { + Library::instance()->add(fileName); + int row = results.indexOf(result); + if (-1 != row) { + list->model()->removeRow(row); + } +#ifdef Q_WS_MAEMO_5 + QMaemo5InformationBox::information(this, + tr("Downloaded \"%1\"\nand added to the library").arg(result.title), + QMaemo5InformationBox::DefaultTimeout); +#endif + } +}