fixed issues in comic vine dialog

This commit is contained in:
Luis Ángel San Martín 2013-11-16 00:00:55 +01:00
parent f75d0abef0
commit 9b3085f8d1
11 changed files with 91 additions and 28 deletions

View File

@ -115,7 +115,7 @@ void ComicVineClient::getComicId(const QString & id, int comicNumber)
} }
//CV_COMIC_DETAIL //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)); 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())); //connect(search,SIGNAL(finished()),search,SLOT(deleteLater()));
search->get(); search->get();
search->wait(); search->wait();
outError = !(search->wasValid());
outTimeout = search->wasTimeout();
QByteArray result = search->getResult(); QByteArray result = search->getResult();
delete search; delete search;

View File

@ -21,11 +21,11 @@ signals:
void timeOut(); void timeOut();
void finished(); void finished();
public slots: public slots:
void search(const QString & query, int page = 0); void search(const QString & query, int page = 1);
void getSeriesDetail(const QString & id); void getSeriesDetail(const QString & id);
void getSeriesCover(const QString & url); void getSeriesCover(const QString & url);
void getVolumeComicsInfo(const QString & idVolume); 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 getComicCover(const QString & url);
void getComicId(const QString & id, int comicNumber); void getComicId(const QString & id, int comicNumber);

View File

@ -29,6 +29,8 @@
#include "db_helper.h" #include "db_helper.h"
#include "response_parser.h" #include "response_parser.h"
#include "QsLog.h"
ComicVineDialog::ComicVineDialog(QWidget *parent) : ComicVineDialog::ComicVineDialog(QWidget *parent) :
@ -201,17 +203,22 @@ void ComicVineDialog::show()
currentIndex = 0; currentIndex = 0;
seriesQuestionWidget->setYes(true);
searchSingleComicWidget->clean();
searchVolumeWidget->clean();
if(comics.length() == 1) if(comics.length() == 1)
{ {
status = AutoSearching;
mode = SingleComic;
ComicDB singleComic = comics[0]; ComicDB singleComic = comics[0];
QString title = singleComic.getTitleOrFileName(); QString title = singleComic.getTitleOrFileName();
titleHeader->setSubTitle(title); titleHeader->setSubTitle(title);
showLoading(tr("Looking for volume...")); showLoading(tr("Looking for volume..."));
searchVolume(title); searchVolume(singleComic.getParentFolderName());
status = AutoSearching; QLOG_TRACE() << singleComic.getParentFolderName();
mode = SingleComic;
}else if(comics.length()>1) }else if(comics.length()>1)
{ {
titleHeader->setSubTitle(tr("%1 comics selected").arg(comics.length())); titleHeader->setSubTitle(tr("%1 comics selected").arg(comics.length()));
@ -403,8 +410,11 @@ void ComicVineDialog::getComicsInfo(QList<QPair<ComicDB, QString> > & matchingIn
//connect(comicVineClient,SIGNAL(searchResult(QString)),this,SLOT(debugClientResults(QString))); //connect(comicVineClient,SIGNAL(searchResult(QString)),this,SLOT(debugClientResults(QString)));
//connect(comicVineClient,SIGNAL(timeOut()),this,SLOT(queryTimeOut())); //connect(comicVineClient,SIGNAL(timeOut()),this,SLOT(queryTimeOut()));
//connect(comicVineClient,SIGNAL(finished()),comicVineClient,SLOT(deleteLater())); //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 comics.push_back(parseComicInfo(p.first,result,count,publisher)); //TODO check result error
setLoadingMessage(tr("Retrieving tags for : %1").arg(p.first.getFileName())); 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; 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 ComicDB comic = parseComicInfo(comics[currentIndex],result,count,publisher); //TODO check result error
@ -661,10 +685,10 @@ void ComicVineDialog::launchSearchComic()
showLoading(tr("Looking for comic...")); showLoading(tr("Looking for comic..."));
QString volumeInfo = searchSingleComicWidget->getVolumeInfo(); QString volumeInfo = searchSingleComicWidget->getVolumeInfo();
QString comicInfo = searchSingleComicWidget->getComicInfo(); //QString comicInfo = searchSingleComicWidget->getComicInfo();
int comicNumber = searchSingleComicWidget->getComicNumber(); //int comicNumber = searchSingleComicWidget->getComicNumber();
if(comicInfo.isEmpty() && comicNumber == -1) //if(comicInfo.isEmpty() && comicNumber == -1)
searchVolume(volumeInfo); searchVolume(volumeInfo);
} }

View File

@ -10,23 +10,24 @@ SearchSingleComic::SearchSingleComic(QWidget * parent)
: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;}"); label->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}");
titleEdit = new ScraperLineEdit(tr("Title:")); //titleEdit = new ScraperLineEdit(tr("Title:"));
numberEdit = new ScraperLineEdit(tr("Number:")); //numberEdit = new ScraperLineEdit(tr("Number:"));
volumeEdit = new ScraperLineEdit(tr("Series:")); volumeEdit = new ScraperLineEdit(tr("Series:"));
numberEdit->setMaximumWidth(126); //numberEdit->setMaximumWidth(126);
QVBoxLayout * l = new QVBoxLayout; QVBoxLayout * l = new QVBoxLayout;
QHBoxLayout * hl = new QHBoxLayout; //QHBoxLayout * hl = new QHBoxLayout;
hl->addWidget(titleEdit); //hl->addWidget(titleEdit);
hl->addWidget(numberEdit); //hl->addWidget(numberEdit);
l->addSpacing(35); l->addSpacing(35);
l->addWidget(label); l->addWidget(label);
l->addLayout(hl); //l->addLayout(hl);
l->addWidget(volumeEdit); l->addWidget(volumeEdit);
l->addStretch(); l->addStretch();
@ -42,13 +43,20 @@ QString SearchSingleComic::getVolumeInfo()
QString SearchSingleComic::getComicInfo() QString SearchSingleComic::getComicInfo()
{ {
return titleEdit->text(); //return titleEdit->text();
return "";
} }
int SearchSingleComic::getComicNumber() int SearchSingleComic::getComicNumber()
{ {
QString numberText = numberEdit->text(); //QString numberText = numberEdit->text();
if(numberText.isEmpty()) //if(numberText.isEmpty())
return -1; // return -1;
return numberText.toInt(); //return numberText.toInt();
return 0;
}
void SearchSingleComic::clean()
{
volumeEdit->clear();
} }

View File

@ -13,6 +13,7 @@ public:
QString getVolumeInfo(); QString getVolumeInfo();
QString getComicInfo(); QString getComicInfo();
int getComicNumber(); int getComicNumber();
void clean();
private: private:
ScraperLineEdit * titleEdit; ScraperLineEdit * titleEdit;
ScraperLineEdit * numberEdit; ScraperLineEdit * numberEdit;

View File

@ -25,6 +25,11 @@ SearchVolume::SearchVolume(QWidget * parent)
setContentsMargins(0,0,0,0); setContentsMargins(0,0,0,0);
} }
void SearchVolume::clean()
{
volumeEdit->clear();
}
QString SearchVolume::getVolumeInfo() QString SearchVolume::getVolumeInfo()
{ {
return volumeEdit->text(); return volumeEdit->text();

View File

@ -11,6 +11,7 @@ class SearchVolume : public QWidget
Q_OBJECT Q_OBJECT
public: public:
SearchVolume(QWidget * parent = 0); SearchVolume(QWidget * parent = 0);
void clean();
public slots: public slots:
QString getVolumeInfo(); QString getVolumeInfo();
private: private:

View File

@ -39,3 +39,8 @@ bool SeriesQuestion::getYes()
{ {
return yes->isChecked(); return yes->isChecked();
} }
void SeriesQuestion::setYes(bool y)
{
yes->setChecked(y);
}

View File

@ -12,6 +12,7 @@ class SeriesQuestion : public QWidget
public: public:
SeriesQuestion(QWidget * parent = 0); SeriesQuestion(QWidget * parent = 0);
bool getYes(); bool getYes();
void setYes(bool yes = true);
private: private:
QRadioButton * yes; QRadioButton * yes;

View File

@ -13,7 +13,7 @@
#define PREVIOUS_VERSION "6.0.0" #define PREVIOUS_VERSION "6.0.0"
HttpWorker::HttpWorker(const QString & urlString) HttpWorker::HttpWorker(const QString & urlString)
:QThread(),url(urlString) :QThread(),url(urlString),_error(false),_timeout(false)
{ {
} }
@ -28,6 +28,16 @@ QByteArray HttpWorker::getResult()
return result; return result;
} }
bool HttpWorker::wasValid()
{
return !_error;
}
bool HttpWorker::wasTimeout()
{
return _timeout;
}
void HttpWorker::run() void HttpWorker::run()
{ {
QNetworkAccessManager manager; QNetworkAccessManager manager;
@ -44,10 +54,12 @@ void HttpWorker::run()
if(tT.isActive()){ if(tT.isActive()){
// download complete // download complete
_error = !(reply->error() == QNetworkReply::NoError);
result = reply->readAll(); result = reply->readAll();
emit dataReady(result); emit dataReady(result);
tT.stop(); tT.stop();
} else { } else {
_timeout = true;
emit timeout(); emit timeout();
} }
} }

View File

@ -15,11 +15,15 @@
public slots: public slots:
void get(); void get();
QByteArray getResult(); QByteArray getResult();
bool wasValid();
bool wasTimeout();
private: private:
void run(); void run();
QUrl url; QUrl url;
int httpGetId; int httpGetId;
QByteArray result; QByteArray result;
bool _error;
bool _timeout;
signals: signals:
void dataReady(const QByteArray &); void dataReady(const QByteArray &);
void timeout(); void timeout();