a?adidos los campos de comic_info a la base de datos y a la clase comic_info

(falta por a?adir numero de p?ginas, alguno mas?)
This commit is contained in:
Luis Ángel San Martín 2012-06-21 23:29:24 +02:00
parent cd2b9f798a
commit 6b7ee49e64
6 changed files with 216 additions and 39 deletions

View File

@ -166,17 +166,51 @@ bool ComicInfo::load(QString hash, QSqlDatabase & db)
{
QSqlRecord record = findComicInfo.record();
this->hash = hash;
this->id = record.value("id").toLongLong();
this->title = record.value("title").toString();
this->read = record.value("read").toBool();
this->edited = record.value("edited").toBool();
existOnDb = true;
return true;
hash = hash;
id = record.value("id").toLongLong();
read = record.value("read").toBool();
edited = record.value("edited").toBool();
title = record.value("title").toString();
pages = record.value("pages").toInt();
coverPage = record.value("coverPage").toInt();
if(!record.value("number").isNull())
number = record.value("number").toInt();
else
number = -1;
isBis = record.value("isBis").toBool();
count = record.value("count").toInt();
volume = record.value("volume").toString();
storyArc = record.value("storyArc").toString();
arcNumber = record.value("arcNumber").toInt();
arcCount = record.value("arcCount").toInt();
genere = record.value("genere").toString();
writer = record.value("writer").toString();
penciller = record.value("penciller").toString();
inker = record.value("inker").toString();
colorist = record.value("colorist").toString();
letterer = record.value("letterer").toString();
coverArtist = record.value("coverArtist").toString();
date = record.value("date").toString();
publisher = record.value("publisher").toString();
format = record.value("format").toString();
color = record.value("color").toBool();
ageRating = record.value("ageRating").toString();
synopsis = record.value("synopsis").toString();
characters = record.value("characters").toString();
notes = record.value("notes").toString();
return existOnDb = true;
}
existOnDb = false;
return false;
return existOnDb = false;
}
qulonglong ComicInfo::insert(QSqlDatabase & db)
@ -191,10 +225,11 @@ void ComicInfo::update(QSqlDatabase & db)
{
//db.open();
QSqlQuery findComicInfo(db);
findComicInfo.prepare("UPDATE comic_info SET title = :title, read = :read WHERE id = :id ");
findComicInfo.prepare("UPDATE comic_info SET title = :title, read = :read, edited = :edited WHERE id = :id ");
findComicInfo.bindValue(":title", title);
findComicInfo.bindValue(":read", read?1:0);
findComicInfo.bindValue(":id", id);
findComicInfo.bindValue(":edited", edited?1:0);
findComicInfo.exec();
//db.close();
}

View File

@ -19,7 +19,40 @@ public:
bool read;
bool edited;
QString hash;
QString title;
int pages;
int coverPage;
int number;
bool isBis;
int count;
QString volume;
QString storyArc;
int arcNumber;
int arcCount;
QString genere;
QString writer;
QString penciller;
QString inker;
QString colorist;
QString letterer;
QString coverArtist;
QString date;
QString publisher;
QString format;
bool color;
QString ageRating;
QString synopsis;
QString characters;
QString notes;
bool existOnDb;
};

View File

@ -68,7 +68,44 @@ bool DataBaseManagement::createTables(QSqlDatabase & database)
//COMIC INFO (representa la información de un cómic, cada cómic tendrá un idéntificador único formado por un hash sha1'de los primeros 512kb' + su tamaño en bytes)
QSqlQuery queryComicInfo(database);
queryComicInfo.prepare("CREATE TABLE comic_info (id INTEGER PRIMARY KEY, hash TEXT NOT NULL, edited BOOLEAN DEFAULT 0, title TEXT, read BOOLEAN)");
queryComicInfo.prepare("CREATE TABLE comic_info ("
"id INTEGER PRIMARY KEY,"
"title TEXT,"
"coverPage INTEGER,"
"numPages INTEGER,"
"number INTEGER,"
"isBis BOOLEAN,"
"count INTEGER,"
"volume TEXT,"
"storyArc TEXT,"
"arcNumber INTEGER,"
"arcCount INTEGER,"
"genere TEXT,"
"writer TEXT,"
"penciller TEXT,"
"inker TEXT,"
"colorist TEXT,"
"letterer TEXT,"
"coverArtist TEXT,"
"date TEXT," //dd/mm/yyyy --> se mostrará en 3 campos diferentes
"publisher TEXT,"
"format TEXT,"
"color BOOLEAN,"
"ageRating BOOLEAN,"
"synopsis TEXT,"
"characters TEXT,"
"notes TEXT,"
"hash TEXT NOT NULL,"
"edited BOOLEAN DEFAULT 0,"
"read BOOLEAN)");
success = success && queryComicInfo.exec();
//COMIC (representa un cómic en disco, contiene el nombre de fichero)

View File

@ -1039,6 +1039,7 @@ void LibraryWindow::showProperties()
//ThumbnailCreator tc(path,"");
//tc.create();
propertiesDialog->setComics(comics);
propertiesDialog->database = dm->getDatabase();
/*propertiesDialog->setCover(tc.getCover());
propertiesDialog->setFilename(path.split("/").last());
propertiesDialog->setNumpages(tc.getNumPages());

View File

@ -7,7 +7,7 @@
#include <QCheckBox>
#include <QLineEdit>
#include <QTabWidget>
#include <QPlainTextEdit>
PropertiesDialog::PropertiesDialog(QWidget * parent)
:QDialog(parent)
@ -74,7 +74,7 @@ void PropertiesDialog::createCoverBox()
QVBoxLayout * coverLayout = new QVBoxLayout();
coverLayout->addWidget(cover);
coverLayout->addWidget(new QLineEdit());
coverLayout->addWidget(coverPageEdit = new QLineEdit());
coverBox->setLayout(coverLayout);
}
@ -105,28 +105,28 @@ void PropertiesDialog::createGeneralInfoBox()
QHBoxLayout * number = new QHBoxLayout;
number->addWidget(new QLineEdit());
number->addWidget(numberEdit = new QLineEdit());
number->addWidget(new QLabel("Bis:"));
number->addWidget(new QCheckBox());
number->addWidget(isBisCheck = new QCheckBox());
number->addWidget(new QLabel("of:"));
number->addWidget(new QLineEdit());
number->addWidget(countEdit = new QLineEdit());
number->addStretch(1);
/*generalInfoLayout->addRow(tr("&Issue number:"), );
generalInfoLayout->addRow(tr("&Bis:"), );*/
generalInfoLayout->addRow(tr("Issue number:"), number);
generalInfoLayout->addRow(tr("&Volume:"), pages = new QLineEdit());
generalInfoLayout->addRow(tr("&Volume:"), volumeEdit = new QLineEdit());
QHBoxLayout * arc = new QHBoxLayout;
arc->addWidget(new QLineEdit());
arc->addWidget(storyArcEdit = new QLineEdit());
arc->addWidget(new QLabel("Arc number:"));
arc->addWidget(new QLineEdit());
arc->addWidget(arcNumberEdit = new QLineEdit());
arc->addWidget(new QLabel("of:"));
arc->addWidget(new QLineEdit());
arc->addWidget(arcCountEdit = new QLineEdit());
arc->addStretch(1);
generalInfoLayout->addRow(tr("&Story arc:"), arc);
generalInfoLayout->addRow(tr("&Genere:"), new QLineEdit());
generalInfoLayout->addRow(tr("&Genere:"), genereEdit = new QLineEdit());
generalInfoLayout->addRow(tr("&Size:"), size = new QLabel("size"));
@ -144,10 +144,10 @@ void PropertiesDialog::createAuthorsBox()
QVBoxLayout * vl1 = new QVBoxLayout;
QVBoxLayout * vr1 = new QVBoxLayout;
vl1->addWidget(new QLabel(tr("Writer(s):")));
vl1->addWidget(new QPlainTextEdit());
vl1->addWidget(writer = new QPlainTextEdit());
h1->addLayout(vl1);
vr1->addWidget(new QLabel(tr("Penciller(s):")));
vr1->addWidget(new QPlainTextEdit());
vr1->addWidget(penciller = new QPlainTextEdit());
h1->addLayout(vr1);
//authorsLayout->addRow(tr("Writer(s):"), new QPlainTextEdit());
//authorsLayout->addRow(tr("Penciller(s):"), new QPlainTextEdit());
@ -155,10 +155,10 @@ void PropertiesDialog::createAuthorsBox()
QVBoxLayout * vl2 = new QVBoxLayout;
QVBoxLayout * vr2 = new QVBoxLayout;
vl2->addWidget(new QLabel(tr("Inker(s):")));
vl2->addWidget(new QPlainTextEdit());
vl2->addWidget(inker = new QPlainTextEdit());
h2->addLayout(vl2);
vr2->addWidget(new QLabel(tr("Colorist(s):")));
vr2->addWidget(new QPlainTextEdit());
vr2->addWidget(colorist = new QPlainTextEdit());
h2->addLayout(vr2);
//authorsLayout->addRow(tr("Inker(s):"), new QPlainTextEdit());
@ -168,10 +168,10 @@ void PropertiesDialog::createAuthorsBox()
QVBoxLayout * vl3 = new QVBoxLayout;
QVBoxLayout * vr3 = new QVBoxLayout;
vl3->addWidget(new QLabel(tr("Letterer(es):")));
vl3->addWidget(new QPlainTextEdit());
vl3->addWidget(letterer = new QPlainTextEdit());
h3->addLayout(vl3);
vr3->addWidget(new QLabel(tr("Cover Artist(s):")));
vr3->addWidget(new QPlainTextEdit());
vr3->addWidget(coverArtist = new QPlainTextEdit());
h3->addLayout(vr3);
//authorsLayout->addRow(tr("Letterer(es):"), new QPlainTextEdit());
//authorsLayout->addRow(tr("Cover Artist(s):"), new QPlainTextEdit());
@ -190,13 +190,21 @@ void PropertiesDialog::createPublishingBox()
QFormLayout *publishingLayout = new QFormLayout;
QHBoxLayout * date = new QHBoxLayout;
date->addWidget(new QLabel(tr("Day:")));
date->addWidget(dayEdit = new QLineEdit());
date->addWidget(new QLabel(tr("Month:")));
date->addWidget(monthEdit = new QLineEdit());
date->addWidget(new QLabel(tr("Year:")));
date->addWidget(yearEdit = new QLineEdit());
date->addStretch(1);
publishingLayout->setRowWrapPolicy(QFormLayout::WrapAllRows);
publishingLayout->addRow(tr("Year:"), new QLineEdit());
publishingLayout->addRow(tr("Month:"), new QLineEdit());
publishingLayout->addRow(tr("Publisher:"), new QLineEdit());
publishingLayout->addRow(tr("Format:"), new QLineEdit());
publishingLayout->addRow(tr("Color/BW:"), new QLineEdit());
publishingLayout->addRow(tr("Age rating:"), new QLineEdit());
publishingLayout->addRow(date);
publishingLayout->addRow(tr("Publisher:"), publisherEdit = new QLineEdit());
publishingLayout->addRow(tr("Format:"), formatEdit = new QLineEdit());
publishingLayout->addRow(tr("Color/BW:"), colorCheck = new QCheckBox());
publishingLayout->addRow(tr("Age rating:"), ageRatingEdit = new QLineEdit());
publishingBox->setLayout(publishingLayout);
}
@ -208,9 +216,9 @@ void PropertiesDialog::createPlotBox()
QFormLayout *plotLayout = new QFormLayout;
plotLayout->setRowWrapPolicy(QFormLayout::WrapAllRows);
plotLayout->addRow(tr("Synopsis:"), new QPlainTextEdit());
plotLayout->addRow(tr("Characters:"), new QPlainTextEdit());
plotLayout->addRow(tr("Notes:"), new QPlainTextEdit());
plotLayout->addRow(tr("Synopsis:"), synopsis = new QPlainTextEdit());
plotLayout->addRow(tr("Characters:"), characters = new QPlainTextEdit());
plotLayout->addRow(tr("Notes:"), notes = new QPlainTextEdit());
plotBox->setLayout(plotLayout);
@ -231,21 +239,29 @@ void PropertiesDialog::createButtonBox()
void PropertiesDialog::setComics(QList<Comic> comics)
{
this->comics = comics;
if(comics.length() > 1)
{
setDisableUniqueValues(true);
}
else
{
Comic comic = comics.at(0);
title->setText(comic.info.title);
numberEdit->setText(QString::number(comic.info.number));
setDisableUniqueValues(false);
}
}
void PropertiesDialog::updateComics(QList<Comic> comics)
void PropertiesDialog::updateComics()
{
database.open();
comics[0].info.update(database);
database.close();
}
//Deprecated
void PropertiesDialog::setCover(const QPixmap & coverImage)
@ -291,4 +307,20 @@ void PropertiesDialog::setSize(float sizeFloat)
{
size->setText(QString::number(sizeFloat,'f',2) + " MB");
}
void PropertiesDialog::save()
{
comics[0].info.title = title->text();
comics[0].info.edited = true;
updateComics();
}
void PropertiesDialog::setDisableUniqueValues(bool disabled)
{
coverPageEdit->setDisabled(disabled);
numberEdit->setDisabled(disabled);
isBisCheck->setDisabled(disabled);
arcNumberEdit->setDisabled(disabled);
}

View File

@ -10,6 +10,8 @@
#include <QDialogButtonBox>
#include <QGridLayout>
#include <QTabWidget>
#include <QCheckBox>
#include <QPlainTextEdit>
#include "comic.h"
@ -30,6 +32,37 @@
QLineEdit * pages;
QLabel * size;
QLineEdit * coverPageEdit;
QLineEdit * numberEdit;
QCheckBox * isBisCheck;
QLineEdit * countEdit;
QLineEdit * volumeEdit;
QLineEdit * storyArcEdit;
QLineEdit * arcNumberEdit;
QLineEdit * arcCountEdit;
QLineEdit * genereEdit;
QPlainTextEdit * writer;
QPlainTextEdit * penciller;
QPlainTextEdit * inker;
QPlainTextEdit * colorist;
QPlainTextEdit * letterer;
QPlainTextEdit * coverArtist;
QLineEdit * dayEdit;
QLineEdit * monthEdit;
QLineEdit * yearEdit;
QLineEdit * publisherEdit;
QLineEdit * formatEdit;
QCheckBox * colorCheck;
QLineEdit * ageRatingEdit;
QPlainTextEdit * synopsis;
QPlainTextEdit * characters;
QPlainTextEdit * notes;
QWidget * authorsBox;
@ -51,17 +84,23 @@
void createButtonBox();
void setDisableUniqueValues(bool disabled);
QList<Comic> comics;
public:
PropertiesDialog(QWidget * parent = 0);
QSqlDatabase database;
public slots:
void setComics(QList<Comic> comics);
void updateComics(QList<Comic> comics);
void updateComics();
//Deprecated
void setCover(const QPixmap & cover);
void setFilename(const QString & name);
void setNumpages(int pages);
void setSize(float size);
void save();
};
#endif