#include "properties_dialog.h" #include "data_base_management.h" #include "library_creator.h" #include "yacreader_field_edit.h" #include "yacreader_field_plain_text_edit.h" #include "db_helper.h" //#include "yacreader_busy_widget.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include 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); mainWidget = new QWidget(this); mainWidget->setAutoFillBackground(true); mainWidget->setFixedSize(470,444); mainWidget->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->move(QPoint((widthDesktopResolution-sWidth)/2,((heightDesktopResolution-sHeight)-40)/2)); setModal(true); setFixedSize( sizeHint() ); mainWidget->move(280,0); } QSize PropertiesDialog::sizeHint() { return QSize(750,444); } 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 QWidget(this); QHBoxLayout * layout = new QHBoxLayout; QLabel * label = new QLabel(tr("Cover page")); label->setStyleSheet("QLabel {color: white; font-weight:bold; font-size:14px;}"); layout->addWidget(label); layout->addStretch(); coverPageEdit = new YACReaderFieldEdit(); showPreviousCoverPageButton = new QToolButton(); showPreviousCoverPageButton->setIcon(QIcon(":/images/previousCoverPage.png")); showPreviousCoverPageButton->setStyleSheet("QToolButton {border:none;}"); showNextCoverPageButton = new QToolButton(); showNextCoverPageButton->setIcon(QIcon(":/images/nextCoverPage.png")); showNextCoverPageButton->setStyleSheet("QToolButton {border:none;}"); coverPageNumberLabel = new QLabel("-"); coverPageNumberLabel->setStyleSheet("QLabel {color: white; font-weight:bold; font-size:14px;}"); layout->addWidget(showPreviousCoverPageButton); layout->addSpacing(5); layout->addWidget(coverPageNumberLabel); layout->addSpacing(5); layout->addWidget(showNextCoverPageButton); coverPageEdit->setStyleSheet("QLineEdit {border:none;}"); layout->setSpacing(0); coverBox->setLayout(layout); coverBox->setFixedWidth(280); coverBox->move(0,444-28); layout->setContentsMargins(5,4,5,0); //busyIndicator = new YACReaderBusyWidget(this); //busyIndicator->move((280-busyIndicator->width())/2,(444-busyIndicator->height()-28)/2); //busyIndicator->hide(); connect(showPreviousCoverPageButton,SIGNAL(clicked()),this,SLOT(loadPreviousCover())); connect(showNextCoverPageButton,SIGNAL(clicked()),this,SLOT(loadNextCover())); } 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->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); //generalInfoLayout->setRowWrapPolicy(QFormLayout::WrapAllRows); generalInfoLayout->addRow(tr("Title:"), title = new YACReaderFieldEdit()); QHBoxLayout * number = new QHBoxLayout; number->addWidget(numberEdit = new YACReaderFieldEdit()); numberValidator.setBottom(0); numberEdit->setValidator(&numberValidator); number->addWidget(new QLabel("Bis:")); number->addWidget(isBisCheck = new QCheckBox()); number->addWidget(new QLabel("of:")); number->addWidget(countEdit = new YACReaderFieldEdit()); countValidator.setBottom(0); countEdit->setValidator(&countValidator); 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()); arcNumberValidator.setBottom(0); arcNumberEdit->setValidator(&arcNumberValidator); arc->addWidget(new QLabel("of:")); arc->addWidget(arcCountEdit = new YACReaderFieldEdit()); arcCountValidator.setBottom(0); arcCountEdit->setValidator(&arcCountValidator); arc->addStretch(1); generalInfoLayout->addRow(tr("Story arc:"), arc); generalInfoLayout->addRow(tr("Genere:"), genereEdit = new YACReaderFieldEdit()); generalInfoLayout->addRow(tr("Size:"), size = new QLabel("size")); //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() { 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(s):"))); 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; publishingLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); QHBoxLayout * date = new QHBoxLayout; date->addWidget(new QLabel(tr("Day:"))); date->addWidget(dayEdit = new YACReaderFieldEdit()); dayValidator.setRange(1,31); dayEdit->setValidator(&dayValidator); date->addWidget(new QLabel(tr("Month:"))); date->addWidget(monthEdit = new YACReaderFieldEdit()); monthValidator.setRange(1,12); monthEdit->setValidator(&monthValidator); date->addWidget(new QLabel(tr("Year:"))); date->addWidget(yearEdit = new YACReaderFieldEdit()); yearValidator.setRange(1,9999); yearEdit->setValidator(&yearValidator); 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->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); 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())); } QImage blurred(const QImage& image, const QRect& rect, int radius, bool alphaOnly = false) { int tab[] = { 14, 10, 8, 6, 5, 5, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2 }; int alpha = (radius < 1) ? 16 : (radius > 17) ? 1 : tab[radius-1]; QImage result = image.convertToFormat(QImage::Format_ARGB32_Premultiplied); int r1 = rect.top(); int r2 = rect.bottom(); int c1 = rect.left(); int c2 = rect.right(); int bpl = result.bytesPerLine(); int rgba[4]; unsigned char* p; int i1 = 0; int i2 = 3; if (alphaOnly) i1 = i2 = (QSysInfo::ByteOrder == QSysInfo::BigEndian ? 0 : 3); for (int col = c1; col <= c2; col++) { p = result.scanLine(r1) + col * 4; for (int i = i1; i <= i2; i++) rgba[i] = p[i] << 4; p += bpl; for (int j = r1; j < r2; j++, p += bpl) for (int i = i1; i <= i2; i++) p[i] = (rgba[i] += ((p[i] << 4) - rgba[i]) * alpha / 16) >> 4; } for (int row = r1; row <= r2; row++) { p = result.scanLine(row) + c1 * 4; for (int i = i1; i <= i2; i++) rgba[i] = p[i] << 4; p += 4; for (int j = c1; j < c2; j++, p += 4) for (int i = i1; i <= i2; i++) p[i] = (rgba[i] += ((p[i] << 4) - rgba[i]) * alpha / 16) >> 4; } for (int col = c1; col <= c2; col++) { p = result.scanLine(r2) + col * 4; for (int i = i1; i <= i2; i++) rgba[i] = p[i] << 4; p -= bpl; for (int j = r1; j < r2; j++, p -= bpl) for (int i = i1; i <= i2; i++) p[i] = (rgba[i] += ((p[i] << 4) - rgba[i]) * alpha / 16) >> 4; } for (int row = r1; row <= r2; row++) { p = result.scanLine(row) + c2 * 4; for (int i = i1; i <= i2; i++) rgba[i] = p[i] << 4; p -= 4; for (int j = c1; j < c2; j++, p -= 4) for (int i = i1; i <= i2; i++) p[i] = (rgba[i] += ((p[i] << 4) - rgba[i]) * alpha / 16) >> 4; } return result; } void PropertiesDialog::setComics(QList comics) { this->comics = comics; ComicDB comic = comics.at(0); 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: view ").arg(comic.info.comicVineID.toString()))); } else comicVineLink->setHidden(true); if(comics.length()==1 && !comic.info.coverPage.isNull()) { coverPageEdit->setText(comic.info.coverPage.toString()); coverPageValidator.setRange(1,comic.info.numPages.toInt()); coverPageEdit->setValidator(&coverPageValidator); //---------- int coverPage = comic.info.coverPage.toInt(); coverPageNumberLabel->setText(QString::number(coverPage)); coverPageNumberLabel->adjustSize(); showPreviousCoverPageButton->setEnabled(true); showNextCoverPageButton->setEnabled(true); if(coverPage == 1) showPreviousCoverPageButton->setDisabled(true); if(coverPage == comic.info.numPages.toInt()) showNextCoverPageButton->setDisabled(true); coverChanged = false; coverBox->show(); if(!QFileInfo(basePath+comics[0].path).exists()) { QMessageBox::warning(this,tr("Not found"),tr("Comic not found. You should update your library.")); showPreviousCoverPageButton->setDisabled(true); showNextCoverPageButton->setDisabled(true); } } /*if(comic.info.numPages != NULL) numPagesEdit->setText(QString::number(*comic.info.numPages));*/ if(!comic.info.number.isNull()) numberEdit->setText(comic.info.number.toString()); if(!comic.info.isBis.isNull()) isBisCheck->setChecked(comic.info.isBis.toBool()); if(!comic.info.count.isNull()) countEdit->setText(comic.info.count.toString()); if(!comic.info.volume.isNull()) volumeEdit->setText(comic.info.volume.toString()); if(!comic.info.storyArc.isNull()) storyArcEdit->setText(comic.info.storyArc.toString()); if(!comic.info.arcNumber.isNull()) arcNumberEdit->setText(comic.info.arcNumber.toString()); if(!comic.info.arcCount.isNull()) arcCountEdit->setText(comic.info.arcCount.toString()); if(!comic.info.genere.isNull()) genereEdit->setText(comic.info.genere.toString()); if(!comic.info.writer.isNull()) writer->setPlainText(comic.info.writer.toString()); if(!comic.info.penciller.isNull()) penciller->setPlainText(comic.info.penciller.toString()); if(!comic.info.inker.isNull()) inker->setPlainText(comic.info.inker.toString()); if(!comic.info.colorist.isNull()) colorist->setPlainText(comic.info.colorist.toString()); if(!comic.info.letterer.isNull()) letterer->setPlainText(comic.info.letterer.toString()); if(!comic.info.coverArtist.isNull()) coverArtist->setPlainText(comic.info.coverArtist.toString()); size->setText(QString::number(comic.info.hash.right(comic.info.hash.length()-40).toInt()/1024.0/1024.0,'f',2)+"Mb"); if(!comic.info.date.isNull()) { QStringList date = (comic.info.date.toString()).split("/"); dayEdit->setText(date[0]); monthEdit->setText(date[1]); yearEdit->setText(date[2]); } if(!comic.info.publisher.isNull()) publisherEdit->setText(comic.info.publisher.toString()); if(!comic.info.format.isNull()) formatEdit->setText(comic.info.format.toString()); if(!comic.info.color.isNull()) colorCheck->setChecked(comic.info.color.toBool()); else colorCheck->setCheckState(Qt::PartiallyChecked); if(!comic.info.ageRating.isNull()) ageRatingEdit->setText(comic.info.ageRating.toString()); if(!comic.info.synopsis.isNull()) synopsis->setPlainText(comic.info.synopsis.toString()); if(!comic.info.characters.isNull()) characters->setPlainText(comic.info.characters.toString()); if(!comic.info.notes.isNull()) notes->setPlainText(comic.info.notes.toString()); if(comics.length() > 1) { coverBox->hide(); setDisableUniqueValues(true); this->setWindowTitle(tr("Edit selected comics information")); setMultipleCover(); QList::iterator itr; for(itr = ++comics.begin();itr!=comics.end();itr++) { if(itr->info.title.isNull() || itr->info.title.toString() != title->text()) title->clear(); if(itr->info.count.isNull() || itr->info.count.toString() != countEdit->text()) countEdit->clear(); if(itr->info.volume.isNull() || itr->info.volume.toString() != volumeEdit->text()) volumeEdit->clear(); if(itr->info.storyArc.isNull() || itr->info.storyArc.toString() != storyArcEdit->text()) storyArcEdit->clear(); if(itr->info.arcCount.isNull() || itr->info.arcCount.toString() != storyArcEdit->text()) arcCountEdit->clear(); if(itr->info.genere.isNull() || itr->info.genere.toString() != genereEdit->text()) genereEdit->clear(); if(itr->info.writer.isNull() || itr->info.writer.toString() != writer->toPlainText()) writer->clear(); if(itr->info.penciller.isNull() || itr->info.penciller.toString() != penciller->toPlainText()) penciller->clear(); if(itr->info.inker.isNull() || itr->info.inker.toString() != inker->toPlainText()) inker->clear(); if(itr->info.colorist.isNull() || itr->info.colorist.toString() != colorist->toPlainText()) colorist->clear(); if(itr->info.letterer.isNull() || itr->info.letterer.toString() != letterer->toPlainText()) letterer->clear(); if(itr->info.coverArtist.isNull() || itr->info.coverArtist.toString() != coverArtist->toPlainText()) coverArtist->clear(); if(itr->info.date.isNull()) { dayEdit->clear(); monthEdit->clear(); yearEdit->clear(); } else { QStringList date = itr->info.date.toString().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.isNull() || itr->info.publisher.toString() != publisherEdit->text()) publisherEdit->clear(); if(itr->info.format.isNull() || itr->info.format.toString() != formatEdit->text()) formatEdit->clear(); if(itr->info.color.isNull() || itr->info.color.toBool() != colorCheck->isChecked()) colorCheck->setCheckState(Qt::PartiallyChecked); if(itr->info.ageRating.isNull() || itr->info.ageRating.toString() != ageRatingEdit->text()) ageRatingEdit->clear(); if(itr->info.synopsis.isNull() || itr->info.synopsis.toString() != synopsis->toPlainText()) synopsis->clear(); if(itr->info.characters.isNull() || itr->info.characters.toString() != characters->toPlainText()) characters->clear(); if(itr->info.notes.isNull() || itr->info.notes.toString() != 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) DBHelper::update(&(itr->info),db); } db.commit(); db.close(); QSqlDatabase::removeDatabase(databasePath); } void PropertiesDialog::setMultipleCover() { ComicDB lastComic = comics.last(); QPixmap last = lastComic.info.getCover(basePath); last = last.scaledToHeight(444,Qt::SmoothTransformation); coverImage = QPixmap::fromImage(blurred(last.toImage(),QRect(0,0,last.width(),last.height()),15)); } void PropertiesDialog::setCover(const QPixmap & coverI) { coverImage = coverI.scaledToHeight(444,Qt::SmoothTransformation); } 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.title = title->text(); edited = true; } if(comics.size()==1) if(coverChanged) { itr->info.coverPage = coverPageNumberLabel->text(); edited = true; } /*if(comic.info.numPages != NULL) numPagesEdit->setText(QString::number(*comic.info.numPages));*/ if(comics.size()==1) if(numberEdit->isModified()) { if (numberEdit->text().isEmpty()) itr->info.number = QVariant(); else itr->info.number = numberEdit->text(); edited = true; } if(comics.size()==1) if(!itr->info.isBis.isNull() || isBisCheck->isChecked()) { itr->info.isBis = isBisCheck->isChecked(); edited = true; } if(countEdit->isModified()) { itr->info.count = countEdit->text(); edited = true; } if(volumeEdit->isModified()) { itr->info.volume = volumeEdit->text(); edited = true; } if(storyArcEdit->isModified()) { itr->info.storyArc = storyArcEdit->text(); edited = true; } if(comics.size()==1) if(arcNumberEdit->isModified() && !arcNumberEdit->text().isEmpty()) { itr->info.arcNumber = arcNumberEdit->text(); edited = true; } if(arcCountEdit->isModified()) { itr->info.arcCount = arcCountEdit->text(); edited = true; } if(genereEdit->isModified()) { itr->info.genere = genereEdit->text(); edited = true; } if(writer->document()->isModified()) { itr->info.writer = writer->toPlainText(); edited = true; } if(penciller->document()->isModified()) { itr->info.penciller = penciller->toPlainText(); edited = true; } if(inker->document()->isModified()) { itr->info.inker = inker->toPlainText(); edited = true; } if(colorist->document()->isModified()) { itr->info.colorist = colorist->toPlainText(); edited = true; } if(letterer->document()->isModified()) { itr->info.letterer = letterer->toPlainText(); edited = true; } if(coverArtist->document()->isModified()) { itr->info.coverArtist = coverArtist->toPlainText(); edited = true; } if(dayEdit->isModified() || monthEdit->isModified() || yearEdit->isModified() ) { itr->info.date = dayEdit->text()+"/"+monthEdit->text()+"/"+yearEdit->text(); edited = true; } if(publisherEdit->isModified()) { itr->info.publisher = publisherEdit->text(); edited = true; } if(formatEdit->isModified()) { itr->info.format = formatEdit->text(); edited = true; } if(colorCheck->checkState() != Qt::PartiallyChecked) { itr->info.color = colorCheck->isChecked(); edited = true; } if(ageRatingEdit->isModified()) { itr->info.ageRating = ageRatingEdit->text(); edited = true; } if(synopsis->document()->isModified()) { itr->info.synopsis = synopsis->toPlainText(); edited = true; } if(characters->document()->isModified()) { itr->info.characters = characters->toPlainText(); edited = true; } if(notes->document()->isModified()) { itr->info.notes = notes->toPlainText(); edited = true; } itr->info.edited = edited; } updateComics(); if(comics.count() == 1) { if(coverChanged)// && coverPageEdit->text().toInt() != *comics[0].info.coverPage) { ThumbnailCreator tc(basePath+comics[0].path,basePath+"/.yacreaderlibrary/covers/"+comics[0].info.hash+".jpg", comics[0].info.coverPage.toInt()); tc.create(); } } close(); emit(accepted()); } void PropertiesDialog::setDisableUniqueValues(bool disabled) { coverPageEdit->setDisabled(disabled); coverPageEdit->clear(); numberEdit->setDisabled(disabled); numberEdit->clear(); isBisCheck->setDisabled(disabled); isBisCheck->setChecked(false); arcNumberEdit->setDisabled(disabled); arcNumberEdit->clear(); } 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->setCheckState(Qt::PartiallyChecked); ageRatingEdit->clear(); synopsis->clear(); characters->clear(); notes->clear(); setDisableUniqueValues(false); tabBar->setCurrentIndex(0); coverPageEdit->setFocus(); QDialog::closeEvent(e); } void PropertiesDialog::paintEvent(QPaintEvent * event) { QDialog::paintEvent(event); QPainter p(this); p.drawPixmap(0,0,coverImage); //QPixmap shadow(":/images/social_dialog/shadow.png"); //p.drawPixmap(280-shadow.width(),0,shadow.width(),444,shadow); p.drawLine(279,0,279,444); if(comics.length()==1) p.fillRect(0,444-28,280,28,QColor(0,0,0,153)); } void PropertiesDialog::updateCoverPageNumberLabel(int n) { coverPageNumberLabel->setText(QString::number(n)); coverPageNumberLabel->adjustSize(); } void PropertiesDialog::loadNextCover() { int current = coverPageNumberLabel->text().toInt(); if(current < comics.at(0).info.numPages.toInt()) { updateCoverPageNumberLabel(current+1); ThumbnailCreator tc(basePath+comics[0].path,"",current+1); tc.create(); setCover(tc.getCover()); repaint(); if((current+1) == comics.at(0).info.numPages.toInt()) { showNextCoverPageButton->setDisabled(true); } showPreviousCoverPageButton->setEnabled(true); //busyIndicator->show(); if(current+1 != comics.at(0).info.coverPage) coverChanged = true; else coverChanged = false; } } void PropertiesDialog::loadPreviousCover() { int current = coverPageNumberLabel->text().toInt(); if(current!=1) { updateCoverPageNumberLabel(current-1); ThumbnailCreator tc(basePath+comics[0].path,"",current-1); tc.create(); setCover(tc.getCover()); repaint(); if((current-1) == 1) { showPreviousCoverPageButton->setDisabled(true); } showNextCoverPageButton->setEnabled(true); //busyIndicator->show(); if(current-1 != comics.at(0).info.coverPage.toInt()) coverChanged = true; else coverChanged = false; } }