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
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;

View File

@ -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);

View File

@ -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<QPair<ComicDB, QString> > & 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);
}

View File

@ -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();
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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();
}
}

View File

@ -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();