#include "properties_dialog.h" #include #include #include #include #include #include #include #include "data_base_management.h" PropertiesDialog::PropertiesDialog(QWidget * parent) :QDialog(parent) { createCoverBox(); createGeneralInfoBox(); createAuthorsBox(); createPublishingBox(); createButtonBox(); createPlotBox(); createTabBar(); mainLayout = new QGridLayout; mainLayout->addWidget(coverBox,0,0); mainLayout->addWidget(tabBar,0,1); mainLayout->setColumnStretch(1,1); /*mainLayout->addWidget(authorsBox,1,1); mainLayout->addWidget(publishingBox,2,1);*/ mainLayout->addWidget(buttonBox,1,1,Qt::AlignBottom); this->setLayout(mainLayout); mainLayout->setSizeConstraint(QLayout::SetMinimumSize); int heightDesktopResolution = QApplication::desktop()->screenGeometry().height(); int widthDesktopResolution = QApplication::desktop()->screenGeometry().width(); int sHeight,sWidth; sHeight = static_cast(heightDesktopResolution*0.65); sWidth = static_cast(sHeight*1.4); setCover(QPixmap(":/images/notCover.png")); this->resize(sWidth,this->height()); this->move(QPoint((widthDesktopResolution-sWidth)/2,((heightDesktopResolution-sHeight)-40)/2)); repaint(); } void PropertiesDialog::createTabBar() { tabBar = new QTabWidget; tabBar->addTab(generalInfoBox,tr("General info")); tabBar->addTab(authorsBox,tr("Authors")); tabBar->addTab(publishingBox,tr("Publishing")); tabBar->addTab(plotBox,tr("Plot")); } void PropertiesDialog::createCoverBox() { coverBox = new QGroupBox(tr("Cover")); sa = new QScrollArea(); cover = new QLabel(); cover->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); cover->setScaledContents(false); cover->setAlignment(Qt::AlignTop|Qt::AlignHCenter); /*sa->setWidget(cover); sa->setBackgroundRole(QPalette::Dark); sa->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); sa->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); sa->setFrameStyle(QFrame::NoFrame); sa->setAlignment(Qt::AlignCenter);*/ QVBoxLayout * coverLayout = new QVBoxLayout(); coverLayout->addWidget(cover); coverLayout->addWidget(coverPageEdit = new YACReaderFieldEdit()); coverBox->setLayout(coverLayout); } QFrame * createLine() { QFrame * line = new QFrame(); line->setObjectName(QString::fromUtf8("line")); //line->setGeometry(QRect(320, 150, 118, 3)); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Sunken); return line; } void PropertiesDialog::createGeneralInfoBox() { generalInfoBox = new QWidget; QFormLayout *generalInfoLayout = new QFormLayout; //generalInfoLayout->setRowWrapPolicy(QFormLayout::WrapAllRows); generalInfoLayout->addRow(tr("Title:"), title = new YACReaderFieldEdit()); QHBoxLayout * number = new QHBoxLayout; number->addWidget(numberEdit = new YACReaderFieldEdit()); number->addWidget(new QLabel("Bis:")); number->addWidget(isBisCheck = new QCheckBox()); number->addWidget(new QLabel("of:")); number->addWidget(countEdit = new YACReaderFieldEdit()); number->addStretch(1); /*generalInfoLayout->addRow(tr("&Issue number:"), ); generalInfoLayout->addRow(tr("&Bis:"), );*/ generalInfoLayout->addRow(tr("Issue number:"), number); generalInfoLayout->addRow(tr("Volume:"), volumeEdit = new YACReaderFieldEdit()); QHBoxLayout * arc = new QHBoxLayout; arc->addWidget(storyArcEdit = new YACReaderFieldEdit()); arc->addWidget(new QLabel("Arc number:")); arc->addWidget(arcNumberEdit = new YACReaderFieldEdit()); arc->addWidget(new QLabel("of:")); arc->addWidget(arcCountEdit = new YACReaderFieldEdit()); arc->addStretch(1); generalInfoLayout->addRow(tr("Story arc:"), arc); generalInfoLayout->addRow(tr("Genere:"), genereEdit = new YACReaderFieldEdit()); generalInfoLayout->addRow(tr("Size:"), size = new QLabel("size")); generalInfoBox->setLayout(generalInfoLayout); } void PropertiesDialog::createAuthorsBox() { authorsBox = new QWidget; QVBoxLayout *authorsLayout = new QVBoxLayout; //authorsLayout->setRowWrapPolicy(QFormLayout::WrapAllRows); QHBoxLayout * h1 = new QHBoxLayout; QVBoxLayout * vl1 = new QVBoxLayout; QVBoxLayout * vr1 = new QVBoxLayout; vl1->addWidget(new QLabel(tr("Writer(s):"))); vl1->addWidget(writer = new YACReaderFieldPlainTextEdit()); h1->addLayout(vl1); vr1->addWidget(new QLabel(tr("Penciller(s):"))); vr1->addWidget(penciller = new YACReaderFieldPlainTextEdit()); h1->addLayout(vr1); //authorsLayout->addRow(tr("Writer(s):"), new YACReaderFieldPlainTextEdit()); //authorsLayout->addRow(tr("Penciller(s):"), new YACReaderFieldPlainTextEdit()); QHBoxLayout * h2 = new QHBoxLayout; QVBoxLayout * vl2 = new QVBoxLayout; QVBoxLayout * vr2 = new QVBoxLayout; vl2->addWidget(new QLabel(tr("Inker(s):"))); vl2->addWidget(inker = new YACReaderFieldPlainTextEdit()); h2->addLayout(vl2); vr2->addWidget(new QLabel(tr("Colorist(s):"))); vr2->addWidget(colorist = new YACReaderFieldPlainTextEdit()); h2->addLayout(vr2); //authorsLayout->addRow(tr("Inker(s):"), new YACReaderFieldPlainTextEdit()); //authorsLayout->addRow(tr("Colorist(s):"), new YACReaderFieldPlainTextEdit()); QHBoxLayout * h3 = new QHBoxLayout; QVBoxLayout * vl3 = new QVBoxLayout; QVBoxLayout * vr3 = new QVBoxLayout; vl3->addWidget(new QLabel(tr("Letterer(es):"))); vl3->addWidget(letterer = new YACReaderFieldPlainTextEdit()); h3->addLayout(vl3); vr3->addWidget(new QLabel(tr("Cover Artist(s):"))); vr3->addWidget(coverArtist = new YACReaderFieldPlainTextEdit()); h3->addLayout(vr3); //authorsLayout->addRow(tr("Letterer(es):"), new YACReaderFieldPlainTextEdit()); //authorsLayout->addRow(tr("Cover Artist(s):"), new YACReaderFieldPlainTextEdit()); authorsLayout->addLayout(h1); authorsLayout->addLayout(h2); authorsLayout->addLayout(h3); authorsLayout->addStretch(1); authorsBox->setLayout(authorsLayout); } void PropertiesDialog::createPublishingBox() { publishingBox = new QWidget; QFormLayout *publishingLayout = new QFormLayout; QHBoxLayout * date = new QHBoxLayout; date->addWidget(new QLabel(tr("Day:"))); date->addWidget(dayEdit = new YACReaderFieldEdit()); date->addWidget(new QLabel(tr("Month:"))); date->addWidget(monthEdit = new YACReaderFieldEdit()); date->addWidget(new QLabel(tr("Year:"))); date->addWidget(yearEdit = new YACReaderFieldEdit()); date->addStretch(1); publishingLayout->setRowWrapPolicy(QFormLayout::WrapAllRows); publishingLayout->addRow(date); publishingLayout->addRow(tr("Publisher:"), publisherEdit = new YACReaderFieldEdit()); publishingLayout->addRow(tr("Format:"), formatEdit = new YACReaderFieldEdit()); publishingLayout->addRow(tr("Color/BW:"), colorCheck = new QCheckBox()); publishingLayout->addRow(tr("Age rating:"), ageRatingEdit = new YACReaderFieldEdit()); publishingBox->setLayout(publishingLayout); } void PropertiesDialog::createPlotBox() { plotBox = new QWidget; QFormLayout *plotLayout = new QFormLayout; plotLayout->setRowWrapPolicy(QFormLayout::WrapAllRows); plotLayout->addRow(tr("Synopsis:"), synopsis = new YACReaderFieldPlainTextEdit()); plotLayout->addRow(tr("Characters:"), characters = new YACReaderFieldPlainTextEdit()); plotLayout->addRow(tr("Notes:"), notes = new YACReaderFieldPlainTextEdit()); plotBox->setLayout(plotLayout); } void PropertiesDialog::createButtonBox() { buttonBox = new QDialogButtonBox; closeButton = buttonBox->addButton(QDialogButtonBox::Close); saveButton = buttonBox->addButton(QDialogButtonBox::Save); //rotateWidgetsButton = buttonBox->addButton(tr("Rotate &Widgets"),QDialogButtonBox::ActionRole); //connect(rotateWidgetsButton, SIGNAL(clicked()), this, SLOT(rotateWidgets())); connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); connect(saveButton, SIGNAL(clicked()), this, SLOT(save())); } void PropertiesDialog::setComics(QList comics) { this->comics = comics; Comic comic = comics.at(0); if(comic.info.title != NULL) title->setText(*comic.info.title); if(comic.info.coverPage != NULL) coverPageEdit->setText(QString::number(*comic.info.coverPage)); /*if(comic.info.numPages != NULL) numPagesEdit->setText(QString::number(*comic.info.numPages));*/ if(comic.info.number != NULL) numberEdit->setText(QString::number(*comic.info.number)); if(comic.info.isBis != NULL) isBisCheck->setChecked(*comic.info.isBis); if(comic.info.count != NULL) countEdit->setText(QString::number(*comic.info.count)); if(comic.info.volume != NULL) volumeEdit->setText(*comic.info.volume); if(comic.info.storyArc != NULL) storyArcEdit->setText(*comic.info.storyArc); if(comic.info.arcNumber != NULL) arcNumberEdit->setText(QString::number(*comic.info.arcNumber)); if(comic.info.arcCount != NULL) arcCountEdit->setText(QString::number(*comic.info.arcCount)); if(comic.info.genere != NULL) genereEdit->setText(*comic.info.genere); if(comic.info.writer != NULL) writer->setPlainText(*comic.info.writer); if(comic.info.penciller != NULL) penciller->setPlainText(*comic.info.penciller); if(comic.info.inker != NULL) inker->setPlainText(*comic.info.inker); if(comic.info.colorist != NULL) colorist->setPlainText(*comic.info.colorist); if(comic.info.letterer != NULL) letterer->setPlainText(*comic.info.letterer); if(comic.info.coverArtist != NULL) coverArtist->setPlainText(*comic.info.coverArtist); if(comic.info.date != NULL) { QStringList date = (*comic.info.date).split("/"); dayEdit->setText(date[0]); monthEdit->setText(date[1]); yearEdit->setText(date[2]); } if(comic.info.publisher != NULL) publisherEdit->setText(*comic.info.publisher); if(comic.info.format != NULL) formatEdit->setText(*comic.info.format); if(comic.info.color != NULL) colorCheck->setChecked(*comic.info.color); if(comic.info.ageRating != NULL) ageRatingEdit->setText(*comic.info.ageRating); if(comic.info.synopsis != NULL) synopsis->setPlainText(*comic.info.synopsis); if(comic.info.characters != NULL) characters->setPlainText(*comic.info.characters); if(comic.info.notes != NULL) notes->setPlainText(*comic.info.notes); if(comics.length() > 1) { setDisableUniqueValues(true); this->setWindowTitle(tr("Edit selected comics information")); setCover(QPixmap(":/images/editComic.png")); QList::iterator itr; for(itr = ++comics.begin();itr!=comics.end();itr++) { if(itr->info.title == NULL || *(itr->info.title) != title->text()) { title->clear(); } if(itr->info.count == NULL || *(itr->info.count) != countEdit->text().toInt()) //TODO esto está mal countEdit->clear(); if(itr->info.volume == NULL || *(itr->info.volume) != volumeEdit->text()) volumeEdit->clear(); if(itr->info.storyArc == NULL || *(itr->info.storyArc) != storyArcEdit->text()) storyArcEdit->clear(); if(itr->info.arcCount == NULL || *(itr->info.arcCount) != storyArcEdit->text().toInt()) arcCountEdit->clear(); if(itr->info.genere == NULL || *(itr->info.genere) != genereEdit->text()) genereEdit->clear(); if(itr->info.writer == NULL || *(itr->info.writer) != writer->toPlainText()) writer->clear(); if(itr->info.penciller == NULL || *(itr->info.penciller) != penciller->toPlainText()) penciller->clear(); if(itr->info.inker == NULL || *(itr->info.inker) != inker->toPlainText()) inker->clear(); if(itr->info.colorist == NULL || *(itr->info.colorist) != colorist->toPlainText()) colorist->clear(); if(itr->info.letterer == NULL || *(itr->info.letterer) != letterer->toPlainText()) letterer->clear(); if(itr->info.coverArtist == NULL || *(itr->info.coverArtist) != coverArtist->toPlainText()) coverArtist->clear(); if(itr->info.date == NULL) { dayEdit->clear(); monthEdit->clear(); yearEdit->clear(); } else { QStringList date = itr->info.date->split("/"); if(dayEdit->text() != date[0]) dayEdit->clear(); if(monthEdit->text() != date[1]) monthEdit->clear(); if(yearEdit->text() != date[2]) yearEdit->clear(); } if(itr->info.publisher == NULL || *(itr->info.publisher) != publisherEdit->text()) publisherEdit->clear(); if(itr->info.format == NULL || *(itr->info.format) != formatEdit->text()) formatEdit->clear(); if(itr->info.color == NULL || *(itr->info.color) != colorCheck->isChecked()) colorCheck->setChecked(false); if(itr->info.ageRating == NULL || *(itr->info.ageRating) != ageRatingEdit->text()) ageRatingEdit->clear(); if(itr->info.synopsis == NULL || *(itr->info.synopsis) != synopsis->toPlainText()) synopsis->clear(); if(itr->info.characters == NULL || *(itr->info.characters) != characters->toPlainText()) characters->clear(); if(itr->info.notes == NULL || *(itr->info.notes) != notes->toPlainText()) notes->clear(); } } else { this->setWindowTitle(tr("Edit comic information")); setCover(comic.info.getCover(basePath)); } } void PropertiesDialog::updateComics() { QSqlDatabase db = DataBaseManagement::loadDatabase(databasePath); db.open(); db.transaction(); QList::iterator itr; for(itr = comics.begin();itr!=comics.end();itr++) { if(itr->info.edited) itr->info.update(db); } db.commit(); db.close(); QSqlDatabase::removeDatabase(databasePath); } //Deprecated void PropertiesDialog::setCover(const QPixmap & coverImage) { cover->setPixmap(coverImage.scaledToWidth(125,Qt::SmoothTransformation)); //cover->repaint(); //float aspectRatio = (float)coverImage.width()/coverImage.height(); //int heightDesktopResolution = QApplication::desktop()->screenGeometry().height(); //int widthDesktopResolution = QApplication::desktop()->screenGeometry().width(); //int sHeight,sWidth; //sHeight = static_cast(heightDesktopResolution*0.65); //if(aspectRatio<1) //{ // sWidth = static_cast(sHeight*1.4); // //this->resize(sWidth,sHeight); // this->move(QPoint((widthDesktopResolution-sWidth)/2,((heightDesktopResolution-sHeight)-40)/2)); // //sa->resize(sa->width(),sa->width()*1.333); // /*cover->resize(static_cast((sa->height())*aspectRatio), // (sa->height()));*/ //} //else //{ // sWidth = static_cast(sHeight/1.16); // //this->resize(sWidth,sHeight); // this->move(QPoint((widthDesktopResolution-sWidth)/2,((heightDesktopResolution-sHeight)-40)/2)); // cover->resize((width()-25), // static_cast((width()-25)/aspectRatio)); //} } void PropertiesDialog::setFilename(const QString & nameString) { title->setText(nameString); } void PropertiesDialog::setNumpages(int pagesNum) { numPagesEdit->setText(QString::number(pagesNum)); } void PropertiesDialog::setSize(float sizeFloat) { size->setText(QString::number(sizeFloat,'f',2) + " MB"); } void PropertiesDialog::save() { QList::iterator itr; for(itr = comics.begin();itr!=comics.end();itr++) { //Comic & comic = comics[0]; bool edited = false; if(title->isModified()) { itr->info.setTitle(title->text()); edited = true; } if(itr->info.coverPage != NULL || !coverPageEdit->text().isEmpty()) { itr->info.setCoverPage(coverPageEdit->text().toInt()); edited = true; } /*if(comic.info.numPages != NULL) numPagesEdit->setText(QString::number(*comic.info.numPages));*/ if(itr->info.number != NULL || !numberEdit->text().isEmpty()) { itr->info.setNumber(numberEdit->text().toInt()); edited = true; } if(itr->info.isBis != NULL || isBisCheck->isChecked()) { itr->info.setIsBis(isBisCheck->isChecked()); edited = true; } if(itr->info.count != NULL || !countEdit->text().isEmpty()) { itr->info.setCount(countEdit->text().toInt()); edited = true; } if(itr->info.volume != NULL || !volumeEdit->text().isEmpty()) { itr->info.setVolume(volumeEdit->text()); edited = true; } if(itr->info.storyArc != NULL || !storyArcEdit->text().isEmpty()) { itr->info.setStoryArc(storyArcEdit->text()); edited = true; } if(itr->info.arcNumber != NULL || !arcNumberEdit->text().isEmpty()) { itr->info.setArcNumber(arcNumberEdit->text().toInt()); edited = true; } if(itr->info.arcCount != NULL || !arcCountEdit->text().isEmpty()) { itr->info.setArcCount(arcCountEdit->text().toInt()); edited = true; } if(itr->info.genere != NULL || !genereEdit->text().isEmpty()) { itr->info.setGenere(genereEdit->text()); edited = true; } if(itr->info.writer != NULL || writer->document()->isModified()) { itr->info.setWriter(writer->toPlainText()); edited = true; } if(itr->info.penciller != NULL || penciller->document()->isModified()) { itr->info.setPenciller(penciller->toPlainText()); edited = true; } if(itr->info.inker != NULL || inker->document()->isModified()) { itr->info.setInker(inker->toPlainText()); edited = true; } if(itr->info.colorist != NULL || colorist->document()->isModified()) { itr->info.setColorist(colorist->toPlainText()); edited = true; } if(itr->info.letterer != NULL || letterer->document()->isModified()) { itr->info.setLetterer(letterer->toPlainText()); edited = true; } if(itr->info.coverArtist != NULL || coverArtist->document()->isModified()) { itr->info.setCoverArtist(coverArtist->toPlainText()); edited = true; } if(itr->info.date != NULL || !dayEdit->text().isEmpty() || !monthEdit->text().isEmpty() || !yearEdit->text().isEmpty()) { itr->info.setDate(dayEdit->text()+"/"+monthEdit->text()+"/"+yearEdit->text()); edited = true; } if(itr->info.publisher != NULL || !publisherEdit->text().isEmpty()) { itr->info.setPublisher(publisherEdit->text()); edited = true; } if(itr->info.format != NULL || !formatEdit->text().isEmpty()) { itr->info.setFormat(formatEdit->text()); edited = true; } if(itr->info.color != NULL || colorCheck->isChecked()) { itr->info.setColor(colorCheck->isChecked()); edited = true; } if(itr->info.ageRating != NULL || !ageRatingEdit->text().isEmpty()) { itr->info.setAgeRating(ageRatingEdit->text()); edited = true; } if(itr->info.synopsis != NULL || synopsis->document()->isModified()) { itr->info.setSynopsis(synopsis->toPlainText()); edited = true; } if(itr->info.characters != NULL || characters->document()->isModified()) { itr->info.setCharacters(characters->toPlainText()); edited = true; } if(itr->info.notes != NULL || notes->document()->isModified()) { itr->info.setNotes(notes->toPlainText()); edited = true; } itr->info.edited = edited; } updateComics(); close(); emit(accepted()); } void PropertiesDialog::setDisableUniqueValues(bool disabled) { coverPageEdit->setDisabled(disabled); numberEdit->setDisabled(disabled); isBisCheck->setDisabled(disabled); arcNumberEdit->setDisabled(disabled); } void PropertiesDialog::closeEvent ( QCloseEvent * e ) { title->clear(); title->setModified(false); coverPageEdit->clear(); // numPagesEdit->setText(QString::number(*comic.info.numPages)); numberEdit->clear(); isBisCheck->setChecked(false); countEdit->clear(); volumeEdit->clear(); storyArcEdit->clear(); arcNumberEdit->clear(); arcCountEdit->clear(); genereEdit->clear(); writer->clear(); penciller->clear(); inker->clear(); colorist->clear(); letterer->clear(); coverArtist->clear(); dayEdit->clear(); monthEdit->clear(); yearEdit->clear(); publisherEdit->clear(); formatEdit->clear(); colorCheck->setChecked(false); ageRatingEdit->clear(); synopsis->clear(); characters->clear(); notes->clear(); setDisableUniqueValues(false); QDialog::closeEvent(e); }