diff --git a/YACReaderLibrary/comic_vine/comic_vine_client.cpp b/YACReaderLibrary/comic_vine/comic_vine_client.cpp index a90ae585..86c1341a 100644 --- a/YACReaderLibrary/comic_vine/comic_vine_client.cpp +++ b/YACReaderLibrary/comic_vine/comic_vine_client.cpp @@ -115,7 +115,7 @@ void ComicVineClient::getComicId(const QString & id, int comicNumber) } //CV_COMIC_DETAIL -QByteArray ComicVineClient::getComicDetail(const QString & id) +QByteArray ComicVineClient::getComicDetail(const QString & id, bool & outError, bool & outTimeout) { HttpWorker * search = new HttpWorker(CV_COMIC_DETAIL.arg(id)); @@ -124,6 +124,8 @@ QByteArray ComicVineClient::getComicDetail(const QString & id) //connect(search,SIGNAL(finished()),search,SLOT(deleteLater())); search->get(); search->wait(); + outError = !(search->wasValid()); + outTimeout = search->wasTimeout(); QByteArray result = search->getResult(); delete search; diff --git a/YACReaderLibrary/comic_vine/comic_vine_client.h b/YACReaderLibrary/comic_vine/comic_vine_client.h index 7374efba..1b017e84 100644 --- a/YACReaderLibrary/comic_vine/comic_vine_client.h +++ b/YACReaderLibrary/comic_vine/comic_vine_client.h @@ -21,11 +21,11 @@ signals: void timeOut(); void finished(); public slots: - void search(const QString & query, int page = 0); + void search(const QString & query, int page = 1); void getSeriesDetail(const QString & id); void getSeriesCover(const QString & url); void getVolumeComicsInfo(const QString & idVolume); - QByteArray getComicDetail(const QString & id); + QByteArray getComicDetail(const QString & id, bool &outError, bool &outTimeout); void getComicCover(const QString & url); void getComicId(const QString & id, int comicNumber); diff --git a/YACReaderLibrary/comic_vine/comic_vine_dialog.cpp b/YACReaderLibrary/comic_vine/comic_vine_dialog.cpp index 0d4ab235..9fb12967 100644 --- a/YACReaderLibrary/comic_vine/comic_vine_dialog.cpp +++ b/YACReaderLibrary/comic_vine/comic_vine_dialog.cpp @@ -29,6 +29,8 @@ #include "db_helper.h" #include "response_parser.h" +#include "QsLog.h" + ComicVineDialog::ComicVineDialog(QWidget *parent) : @@ -201,17 +203,22 @@ void ComicVineDialog::show() currentIndex = 0; + seriesQuestionWidget->setYes(true); + searchSingleComicWidget->clean(); + searchVolumeWidget->clean(); + if(comics.length() == 1) { + status = AutoSearching; + mode = SingleComic; + ComicDB singleComic = comics[0]; QString title = singleComic.getTitleOrFileName(); titleHeader->setSubTitle(title); showLoading(tr("Looking for volume...")); - searchVolume(title); - status = AutoSearching; - mode = SingleComic; - + searchVolume(singleComic.getParentFolderName()); + QLOG_TRACE() << singleComic.getParentFolderName(); }else if(comics.length()>1) { titleHeader->setSubTitle(tr("%1 comics selected").arg(comics.length())); @@ -403,8 +410,11 @@ void ComicVineDialog::getComicsInfo(QList > & matchingIn //connect(comicVineClient,SIGNAL(searchResult(QString)),this,SLOT(debugClientResults(QString))); //connect(comicVineClient,SIGNAL(timeOut()),this,SLOT(queryTimeOut())); //connect(comicVineClient,SIGNAL(finished()),comicVineClient,SLOT(deleteLater())); - QByteArray result = comicVineClient->getComicDetail(p.second); //TODO check timeOut or Connection error - + bool error; + bool timeout; + QByteArray result = comicVineClient->getComicDetail(p.second,error,timeout); //TODO check timeOut or Connection error + if(error || timeout) + continue; //TODO comics.push_back(parseComicInfo(p.first,result,count,publisher)); //TODO check result error setLoadingMessage(tr("Retrieving tags for : %1").arg(p.first.getFileName())); @@ -429,7 +439,21 @@ void ComicVineDialog::getComicInfo(const QString &comicId, int count, const QStr { ComicVineClient * comicVineClient = new ComicVineClient; - QByteArray result = comicVineClient->getComicDetail(comicId); //TODO check timeOut or Connection error + bool error; + bool timeout; + QByteArray result = comicVineClient->getComicDetail(comicId,error,timeout); //TODO check timeOut or Connection error + if(error || timeout) + { + //TODO + if(mode == SingleComic || currentIndex == (comics.count()-1)) + { + close(); + emit accepted(); + } else + { + goToNextComic(); + } + } ComicDB comic = parseComicInfo(comics[currentIndex],result,count,publisher); //TODO check result error @@ -661,10 +685,10 @@ void ComicVineDialog::launchSearchComic() showLoading(tr("Looking for comic...")); QString volumeInfo = searchSingleComicWidget->getVolumeInfo(); - QString comicInfo = searchSingleComicWidget->getComicInfo(); - int comicNumber = searchSingleComicWidget->getComicNumber(); + //QString comicInfo = searchSingleComicWidget->getComicInfo(); + //int comicNumber = searchSingleComicWidget->getComicNumber(); - if(comicInfo.isEmpty() && comicNumber == -1) - searchVolume(volumeInfo); + //if(comicInfo.isEmpty() && comicNumber == -1) + searchVolume(volumeInfo); } diff --git a/YACReaderLibrary/comic_vine/search_single_comic.cpp b/YACReaderLibrary/comic_vine/search_single_comic.cpp index aac74b8e..431b048a 100644 --- a/YACReaderLibrary/comic_vine/search_single_comic.cpp +++ b/YACReaderLibrary/comic_vine/search_single_comic.cpp @@ -10,23 +10,24 @@ SearchSingleComic::SearchSingleComic(QWidget * parent) :QWidget(parent) { - QLabel * label = new QLabel(tr("Please provide some aditional information. At least one field is needed.")); + //QLabel * label = new QLabel(tr("Please provide some aditional information. At least one field is needed.")); + QLabel * label = new QLabel(tr("Please provide some aditional information.")); label->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}"); - titleEdit = new ScraperLineEdit(tr("Title:")); - numberEdit = new ScraperLineEdit(tr("Number:")); + //titleEdit = new ScraperLineEdit(tr("Title:")); + //numberEdit = new ScraperLineEdit(tr("Number:")); volumeEdit = new ScraperLineEdit(tr("Series:")); - numberEdit->setMaximumWidth(126); + //numberEdit->setMaximumWidth(126); QVBoxLayout * l = new QVBoxLayout; - QHBoxLayout * hl = new QHBoxLayout; - hl->addWidget(titleEdit); - hl->addWidget(numberEdit); + //QHBoxLayout * hl = new QHBoxLayout; + //hl->addWidget(titleEdit); + //hl->addWidget(numberEdit); l->addSpacing(35); l->addWidget(label); - l->addLayout(hl); + //l->addLayout(hl); l->addWidget(volumeEdit); l->addStretch(); @@ -42,13 +43,20 @@ QString SearchSingleComic::getVolumeInfo() QString SearchSingleComic::getComicInfo() { - return titleEdit->text(); + //return titleEdit->text(); + return ""; } int SearchSingleComic::getComicNumber() { - QString numberText = numberEdit->text(); - if(numberText.isEmpty()) - return -1; - return numberText.toInt(); + //QString numberText = numberEdit->text(); + //if(numberText.isEmpty()) + // return -1; + //return numberText.toInt(); + return 0; +} + +void SearchSingleComic::clean() +{ + volumeEdit->clear(); } diff --git a/YACReaderLibrary/comic_vine/search_single_comic.h b/YACReaderLibrary/comic_vine/search_single_comic.h index 7f76d94c..5045ee69 100644 --- a/YACReaderLibrary/comic_vine/search_single_comic.h +++ b/YACReaderLibrary/comic_vine/search_single_comic.h @@ -13,6 +13,7 @@ public: QString getVolumeInfo(); QString getComicInfo(); int getComicNumber(); + void clean(); private: ScraperLineEdit * titleEdit; ScraperLineEdit * numberEdit; diff --git a/YACReaderLibrary/comic_vine/search_volume.cpp b/YACReaderLibrary/comic_vine/search_volume.cpp index d98fc10e..cb779b6f 100644 --- a/YACReaderLibrary/comic_vine/search_volume.cpp +++ b/YACReaderLibrary/comic_vine/search_volume.cpp @@ -25,6 +25,11 @@ SearchVolume::SearchVolume(QWidget * parent) setContentsMargins(0,0,0,0); } +void SearchVolume::clean() +{ + volumeEdit->clear(); +} + QString SearchVolume::getVolumeInfo() { return volumeEdit->text(); diff --git a/YACReaderLibrary/comic_vine/search_volume.h b/YACReaderLibrary/comic_vine/search_volume.h index 06bf6ffb..627baebc 100644 --- a/YACReaderLibrary/comic_vine/search_volume.h +++ b/YACReaderLibrary/comic_vine/search_volume.h @@ -11,6 +11,7 @@ class SearchVolume : public QWidget Q_OBJECT public: SearchVolume(QWidget * parent = 0); + void clean(); public slots: QString getVolumeInfo(); private: diff --git a/YACReaderLibrary/comic_vine/series_question.cpp b/YACReaderLibrary/comic_vine/series_question.cpp index dc442798..1fb93cb8 100644 --- a/YACReaderLibrary/comic_vine/series_question.cpp +++ b/YACReaderLibrary/comic_vine/series_question.cpp @@ -39,3 +39,8 @@ bool SeriesQuestion::getYes() { return yes->isChecked(); } + +void SeriesQuestion::setYes(bool y) +{ + yes->setChecked(y); +} diff --git a/YACReaderLibrary/comic_vine/series_question.h b/YACReaderLibrary/comic_vine/series_question.h index 8f46f12e..c6620ecd 100644 --- a/YACReaderLibrary/comic_vine/series_question.h +++ b/YACReaderLibrary/comic_vine/series_question.h @@ -12,6 +12,7 @@ class SeriesQuestion : public QWidget public: SeriesQuestion(QWidget * parent = 0); bool getYes(); + void setYes(bool yes = true); private: QRadioButton * yes; diff --git a/common/http_worker.cpp b/common/http_worker.cpp index 1717c653..eabdcc6c 100644 --- a/common/http_worker.cpp +++ b/common/http_worker.cpp @@ -13,7 +13,7 @@ #define PREVIOUS_VERSION "6.0.0" HttpWorker::HttpWorker(const QString & urlString) - :QThread(),url(urlString) + :QThread(),url(urlString),_error(false),_timeout(false) { } @@ -28,6 +28,16 @@ QByteArray HttpWorker::getResult() return result; } +bool HttpWorker::wasValid() +{ + return !_error; +} + +bool HttpWorker::wasTimeout() +{ + return _timeout; +} + void HttpWorker::run() { QNetworkAccessManager manager; @@ -44,10 +54,12 @@ void HttpWorker::run() if(tT.isActive()){ // download complete + _error = !(reply->error() == QNetworkReply::NoError); result = reply->readAll(); emit dataReady(result); tT.stop(); } else { + _timeout = true; emit timeout(); } } diff --git a/common/http_worker.h b/common/http_worker.h index 73ddd58c..10034717 100644 --- a/common/http_worker.h +++ b/common/http_worker.h @@ -15,11 +15,15 @@ public slots: void get(); QByteArray getResult(); + bool wasValid(); + bool wasTimeout(); private: void run(); QUrl url; int httpGetId; QByteArray result; + bool _error; + bool _timeout; signals: void dataReady(const QByteArray &); void timeout();