added comicVineID field to the data base, if the comic information has been scraped the properties dialog shows a link to the Comic Vine page with the comic information

This commit is contained in:
Luis Ángel San Martín 2014-06-05 18:50:07 +02:00
parent 498f71afb2
commit d6ace428ad
9 changed files with 82 additions and 22 deletions

View File

@ -418,7 +418,9 @@ void ComicVineDialog::getComicsInfo(QList<QPair<ComicDB, QString> > & matchingIn
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
ComicDB comic = parseComicInfo(p.first,result,count,publisher);//TODO check result error
comic.info.comicVineID = p.second;
comics.push_back(comic);
setLoadingMessage(tr("Retrieving tags for : %1").arg(p.first.getFileName()));
}
@ -459,7 +461,7 @@ void ComicVineDialog::getComicInfo(const QString &comicId, int count, const QStr
}
ComicDB comic = parseComicInfo(comics[currentIndex],result,count,publisher); //TODO check result error
comic.info.comicVineID = comicId;
setLoadingMessage(tr("Retrieving tags for : %1").arg(comics[currentIndex].getFileName()));
QSqlDatabase db = DataBaseManagement::loadDatabase(databasePath);

View File

@ -37,6 +37,8 @@ static QString fields = "title ,"
"characters,"
"notes,"
"comicVineID,"
"hash"
;
@ -179,8 +181,11 @@ bool DataBaseManagement::createTables(QSqlDatabase & database)
"bookmark3 INTEGER DEFAULT -1, "
"brightness INTEGER DEFAULT -1, "
"contrast INTEGER DEFAULT -1, "
"gamma INTEGER DEFAULT -1 "
")");
"gamma INTEGER DEFAULT -1, "
//new 7.1 fields
"comicVineID TEXT"
")");
success = success && queryComicInfo.exec();
//queryComicInfo.finish();
@ -304,7 +309,9 @@ bool DataBaseManagement::importComicsInfo(QString source, QString dest)
"characters = :characters,"
"notes = :notes,"
"edited = :edited"
"edited = :edited,"
"comicVineID = :comicVineID"
" WHERE hash = :hash ");
@ -337,6 +344,7 @@ bool DataBaseManagement::importComicsInfo(QString source, QString dest)
"notes,"
"read,"
"edited,"
"comicVineID,"
"hash)"
"VALUES (:title,"
@ -372,6 +380,7 @@ bool DataBaseManagement::importComicsInfo(QString source, QString dest)
":read,"
":edited,"
":comicVineID,"
":hash )");
@ -445,7 +454,7 @@ bool DataBaseManagement::importComicsInfo(QString source, QString dest)
return b;
}
//TODO fix these bindings
void DataBaseManagement::bindValuesFromRecord(const QSqlRecord & record, QSqlQuery & query)
{
bindString("title",record,query);
@ -481,7 +490,22 @@ void DataBaseManagement::bindValuesFromRecord(const QSqlRecord & record, QSqlQue
bindString("characters",record,query);
bindString("notes",record,query);
bindString("hash",record,query);
bindString("comicVineID",record,query);
bindString("hash",record,query);
}
bool DataBaseManagement::addColumns(const QString &tableName, const QStringList &columnDefs, const QSqlDatabase &db)
{
QString sql = "ALTER TABLE %1 ADD COLUMN %2";
foreach(QString columnDef, columnDefs)
{
QSqlQuery alterTableComicInfo(db);
alterTableComicInfo.prepare(sql.arg(tableName).arg(columnDef));
//alterTableComicInfo.bindValue(":column_def",columnDef);
alterTableComicInfo.exec();
return (alterTableComicInfo.numRowsAffected() > 0);
}
}
void DataBaseManagement::bindString(const QString & name, const QSqlRecord & record, QSqlQuery & query)
@ -552,8 +576,11 @@ int DataBaseManagement::compareVersions(const QString & v1, const QString v2)
bool DataBaseManagement::updateToCurrentVersion(const QString & fullPath)
{
bool pre7 = false;
bool pre7_1 = false;
if(compareVersions(DataBaseManagement::checkValidDB(fullPath),"7.0.0")<0)
pre7 = true;
if(compareVersions(DataBaseManagement::checkValidDB(fullPath),"7.0.3")<0)
pre7_1 = true;
QSqlDatabase db = loadDatabaseFromFile(fullPath);
bool returnValue = false;
@ -581,17 +608,17 @@ bool DataBaseManagement::updateToCurrentVersion(const QString & fullPath)
<< "brightness INTEGER DEFAULT -1"
<< "contrast INTEGER DEFAULT -1"
<< "gamma INTEGER DEFAULT -1";
QString sql = "ALTER TABLE comic_info ADD COLUMN %1";
foreach(QString columnDef, columnDefs)
{
QSqlQuery alterTableComicInfo(db);
alterTableComicInfo.prepare(sql.arg(columnDef));
//alterTableComicInfo.bindValue(":column_def",columnDef);
alterTableComicInfo.exec();
returnValue = returnValue && (alterTableComicInfo.numRowsAffected() > 0);
}
returnValue = returnValue && addColumns("comic_info", columnDefs, db);
}
//TODO update hasBeenOpened value
if(pre7_1)
{
QStringList columnDefs;
columnDefs << "comicVineID TEXT DEFAULT NULL";
returnValue = returnValue && addColumns("comic_info", columnDefs, db);
}
}
db.close();

View File

@ -37,6 +37,8 @@ private:
static void bindInt(const QString & name, const QSqlRecord & record, QSqlQuery & query);
static void bindValuesFromRecord(const QSqlRecord & record, QSqlQuery & query);
static bool addColumns(const QString & tableName, const QStringList & columnDefs, const QSqlDatabase & db);
public:
DataBaseManagement();
//TreeModel * newTreeModel(QString path);
@ -56,4 +58,4 @@ public:
static bool updateToCurrentVersion(const QString & path);
};
#endif
#endif

View File

@ -212,7 +212,10 @@ void DBHelper::update(ComicInfo * comicInfo, QSqlDatabase & db)
"brightness = :brightness,"
"contrast = :contrast, "
"gamma = :gamma,"
"rating = :rating"
"rating = :rating,"
//new 7.1 fields
"comicVineID = :comicVineID"
//--
" WHERE id = :id ");
@ -263,6 +266,8 @@ void DBHelper::update(ComicInfo * comicInfo, QSqlDatabase & db)
updateComicInfo.bindValue(":gamma", comicInfo->gamma);
updateComicInfo.bindValue(":rating", comicInfo->rating);
updateComicInfo.bindValue(":comicVineID", comicInfo->comicVineID);
updateComicInfo.exec();
}
@ -641,6 +646,8 @@ ComicInfo DBHelper::loadComicInfo(QString hash, QSqlDatabase & db)
comicInfo.characters = record.value("characters");
comicInfo.notes = record.value("notes");
comicInfo.comicVineID = record.value("comicVineID");
comicInfo.existOnDb = true;
}
else

View File

@ -181,7 +181,16 @@ void PropertiesDialog::createGeneralInfoBox()
generalInfoLayout->addRow(tr("Size:"), size = new QLabel("size"));
generalInfoBox->setLayout(generalInfoLayout);
//generalInfoLayout->addRow(tr("Comic Vine link:"), comicVineLink = new QLabel("..."));
//generalInfoLayout->addRow(bottom);
QVBoxLayout * main = new QVBoxLayout;
main->addLayout(generalInfoLayout);
main->addStretch();
main->addWidget(comicVineLink = new QLabel("Comic Vine link : ..."));
comicVineLink->setOpenExternalLinks(true);
generalInfoBox->setLayout(main);
}
void PropertiesDialog::createAuthorsBox()
@ -373,6 +382,13 @@ void PropertiesDialog::setComics(QList<ComicDB> comics)
if(!comic.info.title.isNull())
title->setText(comic.info.title.toString());
if(!comic.info.comicVineID.isNull())
{
comicVineLink->setHidden(false);
comicVineLink->setText(QString(tr("Comic Vine link: <a style='color: #FFCB00; text-decoration:none; font-weight:bold;' href=\"http://www.comicvine.com/comic/4000-%1/\"> view </a>").arg(comic.info.comicVineID.toString())));
}
else
comicVineLink->setHidden(true);
if(comics.length()==1 && !comic.info.coverPage.isNull())
{

View File

@ -39,6 +39,7 @@ class QToolButton;
YACReaderFieldEdit * title;
YACReaderFieldEdit * numPagesEdit;
QLabel * size;
QLabel * comicVineLink;
YACReaderFieldEdit * coverPageEdit;
QIntValidator coverPageValidator;

View File

@ -201,7 +201,7 @@ ComicInfo & ComicInfo::operator=(const ComicInfo & comicInfo)
synopsis = comicInfo.synopsis;
characters = comicInfo.characters;
notes = comicInfo.notes;
comicVineURL = comicInfo.comicVineURL;
comicVineID = comicInfo.comicVineID;
return *this;
}
@ -414,6 +414,9 @@ QDataStream &operator<<(QDataStream & stream, const ComicInfo & comicInfo)
stream << comicInfo.synopsis;
stream << comicInfo.characters;
stream << comicInfo.notes;
stream << comicInfo.comicVineID;
return stream;
}
@ -467,6 +470,8 @@ QDataStream &operator>>(QDataStream & stream, ComicInfo & comicInfo)
stream >> comicInfo.synopsis;
stream >> comicInfo.characters;
stream >> comicInfo.notes;
stream >> comicInfo.comicVineID;
return stream;
}

View File

@ -72,7 +72,7 @@ public:
QVariant characters;//string
QVariant notes;//string
QVariant comicVineURL;//string
QVariant comicVineID;//string
QImage cover;

View File

@ -8,7 +8,7 @@
#endif
#define VERSION "7.0.2"
#define VERSION "7.1.0"
#define PATH "PATH"
#define MAG_GLASS_SIZE "MAG_GLASS_SIZE"