From 18ba1b6ad996a90c1c3f9290f25f79a562af5e06 Mon Sep 17 00:00:00 2001 From: Herwig Birke Date: Wed, 25 Jul 2018 13:38:08 +0200 Subject: [PATCH] bugfixing --- cpropertieswindow.cpp | 131 +++++++++++++++++++++++++++++++++++++ cpropertieswindow.h | 13 ++++ cstorybook.cpp | 148 ++++++++++++++++++++++-------------------- 3 files changed, 223 insertions(+), 69 deletions(-) diff --git a/cpropertieswindow.cpp b/cpropertieswindow.cpp index 9792440..cd6ac34 100644 --- a/cpropertieswindow.cpp +++ b/cpropertieswindow.cpp @@ -365,6 +365,19 @@ void cPropertiesWindow::setBook(cStoryBook *lpStoryBook) ui->m_lpMarginBottom->setValue(lpStoryBook->bottomMargin()); enablePrintTitle(lpStoryBook->printTitle()); + enablePrintSubtitle(lpStoryBook->printSubTitle()); + enablePrintShortDescription(lpStoryBook->printShortDescription()); + enablePrintDescription(lpStoryBook->printDescription()); + enablePrintAuthor(lpStoryBook->printAuthor()); + enablePrintPartName(lpStoryBook->printPartName()); + enablePrintPartDescription(lpStoryBook->printPartDescription()); + enablePrintPartText(lpStoryBook->printPartText()); + enablePrintChapterName(lpStoryBook->printChapterName()); + enablePrintChapterDescription(lpStoryBook->printChapterDescription()); + enablePrintChapterText(lpStoryBook->printChapterText()); + enablePrintSceneName(lpStoryBook->printSceneName()); + enablePrintSceneDescription(lpStoryBook->printSceneDescription()); + enablePrintSceneText(lpStoryBook->printSceneText()); connect(ui->m_lpTitle, &cLineEdit::textChanged, this, &cPropertiesWindow::onTitleChanged); connect(ui->m_lpSubTitle, &cLineEdit::textChanged, this, &cPropertiesWindow::onSubTitleChanged); @@ -575,6 +588,8 @@ void cPropertiesWindow::onTitleRightChanged(bool checked) void cPropertiesWindow::onPrintSubtitleChanged(bool checked) { m_lpStoryBook->setPrintSubTitle(checked); + enablePrintSubtitle(checked); + m_lpMainWindow->somethingChanged(); } @@ -632,18 +647,24 @@ void cPropertiesWindow::onSubtitleRightChanged(bool checked) void cPropertiesWindow::onPrintShortDescriptionChanged(bool checked) { m_lpStoryBook->setPrintShortDescription(checked); + enablePrintShortDescription(checked); + m_lpMainWindow->somethingChanged(); } void cPropertiesWindow::onPrintDescriptionChanged(bool checked) { m_lpStoryBook->setPrintDescription(checked); + enablePrintDescription(checked); + m_lpMainWindow->somethingChanged(); } void cPropertiesWindow::onPrintAuthorChanged(bool checked) { m_lpStoryBook->setPrintAuthor(checked); + enablePrintAuthor(checked); + m_lpMainWindow->somethingChanged(); } @@ -701,6 +722,8 @@ void cPropertiesWindow::onAuthorRightChanged(bool checked) void cPropertiesWindow::onPrintPartNameChanged(bool checked) { m_lpStoryBook->setPrintPartName(checked); + enablePrintPartName(checked); + m_lpMainWindow->somethingChanged(); } @@ -758,18 +781,24 @@ void cPropertiesWindow::onPartNameRightChanged(bool checked) void cPropertiesWindow::onPrintPartDescriptionChanged(bool checked) { m_lpStoryBook->setPrintPartDescription(checked); + enablePrintPartDescription(checked); + m_lpMainWindow->somethingChanged(); } void cPropertiesWindow::onPrintPartTextChanged(bool checked) { m_lpStoryBook->setPrintPartText(checked); + enablePrintPartText(checked); + m_lpMainWindow->somethingChanged(); } void cPropertiesWindow::onPrintChapterNameChanged(bool checked) { m_lpStoryBook->setPrintChapterName(checked); + enablePrintChapterName(checked); + m_lpMainWindow->somethingChanged(); } @@ -827,18 +856,24 @@ void cPropertiesWindow::onChapterNameRightChanged(bool checked) void cPropertiesWindow::onPrintChapterDescriptionChanged(bool checked) { m_lpStoryBook->setPrintChapterDescription(checked); + enablePrintChapterDescription(checked); + m_lpMainWindow->somethingChanged(); } void cPropertiesWindow::onPrintChapterTextChanged(bool checked) { m_lpStoryBook->setPrintChapterText(checked); + enablePrintChapterText(checked); + m_lpMainWindow->somethingChanged(); } void cPropertiesWindow::onPrintSceneNameChanged(bool checked) { m_lpStoryBook->setPrintSceneName(checked); + enablePrintSceneName(checked); + m_lpMainWindow->somethingChanged(); } @@ -896,12 +931,16 @@ void cPropertiesWindow::onSceneNameRightChanged(bool checked) void cPropertiesWindow::onPrintSceneDescriptionChanged(bool checked) { m_lpStoryBook->setPrintSceneDescription(checked); + enablePrintSceneDescription(checked); + m_lpMainWindow->somethingChanged(); } void cPropertiesWindow::onPrintSceneTextChanged(bool checked) { m_lpStoryBook->setPrintSceneText(checked); + enablePrintSceneText(checked); + m_lpMainWindow->somethingChanged(); } @@ -966,3 +1005,95 @@ void cPropertiesWindow::enablePrintTitle(bool enable) ui->m_lpTitleCenter->setEnabled(enable); ui->m_lpTitleRight->setEnabled(enable); } + +void cPropertiesWindow::enablePrintSubtitle(bool enable) +{ + ui->m_lpSubtitleFont->setEnabled(enable); + ui->m_lpSubtitleFontSize->setEnabled(enable); + ui->m_lpSubtitleBold->setEnabled(enable); + ui->m_lpSubtitleItalic->setEnabled(enable); + ui->m_lpSubtitleUnderline->setEnabled(enable); + ui->m_lpSubtitleLeft->setEnabled(enable); + ui->m_lpSubtitleCenter->setEnabled(enable); + ui->m_lpSubtitleRight->setEnabled(enable); +} + +void cPropertiesWindow::enablePrintShortDescription(bool /*enable*/) +{ +} + +void cPropertiesWindow::enablePrintDescription(bool /*enable*/) +{ +} + +void cPropertiesWindow::enablePrintAuthor(bool enable) +{ + ui->m_lpAuthorFont->setEnabled(enable); + ui->m_lpAuthorFontSize->setEnabled(enable); + ui->m_lpAuthorBold->setEnabled(enable); + ui->m_lpAuthorItalic->setEnabled(enable); + ui->m_lpAuthorUnderline->setEnabled(enable); + ui->m_lpAuthorLeft->setEnabled(enable); + ui->m_lpAuthorCenter->setEnabled(enable); + ui->m_lpAuthorRight->setEnabled(enable); +} + +void cPropertiesWindow::enablePrintPartName(bool enable) +{ + ui->m_lpPartNameFont->setEnabled(enable); + ui->m_lpPartNameFontSize->setEnabled(enable); + ui->m_lpPartNameBold->setEnabled(enable); + ui->m_lpPartNameItalic->setEnabled(enable); + ui->m_lpPartNameUnderline->setEnabled(enable); + ui->m_lpPartNameLeft->setEnabled(enable); + ui->m_lpPartNameCenter->setEnabled(enable); + ui->m_lpPartNameRight->setEnabled(enable); +} + +void cPropertiesWindow::enablePrintPartDescription(bool /*enable*/) +{ +} + +void cPropertiesWindow::enablePrintPartText(bool /*enable*/) +{ +} + +void cPropertiesWindow::enablePrintChapterName(bool enable) +{ + ui->m_lpChapterNameFont->setEnabled(enable); + ui->m_lpChapterNameFontSize->setEnabled(enable); + ui->m_lpChapterNameBold->setEnabled(enable); + ui->m_lpChapterNameItalic->setEnabled(enable); + ui->m_lpChapterNameUnderline->setEnabled(enable); + ui->m_lpChapterNameLeft->setEnabled(enable); + ui->m_lpChapterNameCenter->setEnabled(enable); + ui->m_lpChapterNameRight->setEnabled(enable); +} + +void cPropertiesWindow::enablePrintChapterDescription(bool /*enable*/) +{ +} + +void cPropertiesWindow::enablePrintChapterText(bool /*enable*/) +{ +} + +void cPropertiesWindow::enablePrintSceneName(bool enable) +{ + ui->m_lpSceneNameFont->setEnabled(enable); + ui->m_lpSceneNameFontSize->setEnabled(enable); + ui->m_lpSceneNameBold->setEnabled(enable); + ui->m_lpSceneNameItalic->setEnabled(enable); + ui->m_lpSceneNameUnderline->setEnabled(enable); + ui->m_lpSceneNameLeft->setEnabled(enable); + ui->m_lpSceneNameCenter->setEnabled(enable); + ui->m_lpSceneNameRight->setEnabled(enable); +} + +void cPropertiesWindow::enablePrintSceneDescription(bool /*enable*/) +{ +} + +void cPropertiesWindow::enablePrintSceneText(bool /*enable*/) +{ +} diff --git a/cpropertieswindow.h b/cpropertieswindow.h index 9182627..1874043 100644 --- a/cpropertieswindow.h +++ b/cpropertieswindow.h @@ -616,6 +616,19 @@ private: void fillFontSize(QComboBox* lpComboBox); void enablePrintTitle(bool enable); + void enablePrintSubtitle(bool enable); + void enablePrintShortDescription(bool enable); + void enablePrintDescription(bool enable); + void enablePrintAuthor(bool enable); + void enablePrintPartName(bool enable); + void enablePrintPartDescription(bool enable); + void enablePrintPartText(bool enable); + void enablePrintChapterName(bool enable); + void enablePrintChapterDescription(bool enable); + void enablePrintChapterText(bool enable); + void enablePrintSceneName(bool enable); + void enablePrintSceneDescription(bool enable); + void enablePrintSceneText(bool enable); }; #endif // CPROPERTIESWINDOW_H diff --git a/cstorybook.cpp b/cstorybook.cpp index 15df49f..2bf6b55 100644 --- a/cstorybook.cpp +++ b/cstorybook.cpp @@ -28,6 +28,10 @@ #include #include +#include +#include + + #ifndef QT_NO_PRINTER #include #endif @@ -236,60 +240,6 @@ bool cStoryBook::printPdf(const QString& szFileName) bool cStoryBook::printDocument(QPrinter& printer) { -// QMap part; -// QMap chapter; -// QStandardItemModel* lpModel = (QStandardItemModel*)lpView->model(); -// QStandardItem* lpRootItem = lpModel->invisibleRootItem(); -// QFont fontPart = lpRootItem->font(); -// QFont fontChapter = lpRootItem->font(); -// QFont fontScene = lpRootItem->font(); -// QColor background(241, 241, 241); - -// for(int x = 0;x < m_partList.count();x++) -// { -// cPart* lpPart = m_partList.at(x); -// if(lpPart->deleted()) -// continue; - -// QStandardItem* lpItem = new QStandardItem(lpPart->name()); -// lpItem->setData(QVariant::fromValue(lpPart)); -// lpItem->setFont(fontPart); -// lpItem->setBackground(QBrush(background)); -// if(lpPart->description()) -// lpItem->setToolTip(lpPart->description()->toPlainText()); -// part.insert(lpPart->id(), lpItem); -// lpModel->appendRow(lpItem); -// lpPart->setItem(lpItem); - -// lpView->setFirstColumnSpanned(lpModel->rowCount()-1, lpModel->invisibleRootItem()->index(), true); -// } - -// for(int x = 0;x < m_chapterList.count();x++) -// { -// cChapter* lpChapter = m_chapterList.at(x); - -// if(lpChapter->deleted()) -// continue; - -// QStandardItem* lpRoot = part.value(lpChapter->part()->id()); - -// if(lpRoot) -// { -// QStandardItem* lpItem = new QStandardItem(lpChapter->name()); -// lpItem->setData(QVariant::fromValue(lpChapter)); -// lpItem->setFont(fontChapter); -// lpItem->setForeground(QBrush(Qt::darkBlue)); -// lpItem->setBackground(QBrush(background)); -// if(lpChapter->description()) -// lpItem->setToolTip(lpChapter->description()->toPlainText()); -// chapter.insert(lpChapter->id(), lpItem); -// lpRoot->appendRow(lpItem); -// lpChapter->setItem(lpItem); - -// lpView->setFirstColumnSpanned(lpRoot->rowCount()-1, lpRoot->index(), true); -// } -// } - configPrinter(printer); QTextDocument doc; @@ -310,13 +260,13 @@ bool cStoryBook::printDocument(QPrinter& printer) if(printShortDescription()) { - cursor.insertHtml(m_book.shortDescription()->toHtml() + "
"); + cursor.insertHtml(m_book.shortDescription()->toHtml() + "
"); bNewPage = true; } if(printDescription()) { - cursor.insertHtml(m_book.description()->toHtml()); + cursor.insertHtml(m_book.description()->toHtml() + "
"); bNewPage = true; } @@ -327,21 +277,72 @@ bool cStoryBook::printDocument(QPrinter& printer) cursor.insertBlock(blockFormat); } - for(int x = 0;x < m_sceneList.count();x++) + cPartList::iterator partIterator = m_partList.begin(); + while(partIterator != m_partList.end()) { - if(x) + cPart* lpPart = *partIterator; + + if(!lpPart->deleted()) { - QTextBlockFormat blockFormat; - blockFormat.setPageBreakPolicy(QTextFormat::PageBreak_AlwaysBefore); - cursor.insertBlock(blockFormat); + if(printPartName()) + printBlock(cursor, lpPart->name(), partFont(), partFontSize(), partAlign(), partBold(), partItalic(), partUnderline()); + + if(printPartDescription()) + cursor.insertHtml(lpPart->description()->toHtml() + "
"); + + if(printPartText()) + cursor.insertHtml(lpPart->text()->toHtml() + "
"); + + QList chapterList = m_chapterList.find(lpPart); + QList::iterator chapterIterator = chapterList.begin(); + while(chapterIterator != chapterList.end()) + { + cChapter* lpChapter = *chapterIterator; + + if(!lpChapter->deleted()) + { + if(printChapterName()) + printBlock(cursor, lpChapter->name(), chapterFont(), chapterFontSize(), chapterAlign(), chapterBold(), chapterItalic(), chapterUnderline()); + + if(printChapterDescription()) + cursor.insertHtml(lpChapter->description()->toHtml() + "
"); + + if(printChapterText()) + cursor.insertHtml(lpChapter->text()->toHtml() + "
"); + + QList sceneList = m_sceneList.find(lpChapter); + QList::iterator sceneIterator = sceneList.begin(); + while(sceneIterator != sceneList.end()) + { + cScene* lpScene = *sceneIterator; + + if(!lpScene->deleted()) + { + if(printSceneName()) + printBlock(cursor, lpScene->name(), sceneFont(), sceneFontSize(), sceneAlign(), sceneBold(), sceneItalic(), sceneUnderline()); + + if(printSceneDescription()) + cursor.insertHtml(lpScene->description()->toHtml() + "
"); + + if(printSceneText()) + cursor.insertHtml(lpScene->text()->toHtml() + "
"); + } + sceneIterator++; + } + } + chapterIterator++; + } } - cScene* lpScene = m_sceneList.at(x); + partIterator++; + } - if(lpScene->deleted()) - continue; - - cursor.insertHtml(lpScene->text()->toHtml()); + QFile file("C:\\Temp\\test.html"); + if(file.open(QIODevice::WriteOnly)) + { + QTextStream stream(&file); + stream << doc.toHtml(); + file.close(); } doc.setPageSize(printer.pageRect().size()); @@ -361,22 +362,28 @@ void cStoryBook::configPrinter(QPrinter& printer) void cStoryBook::printBlock(QTextCursor& cursor, const QString& szText, const QString& szFont, const qint16& iFontSize, const ALIGN align, const bool& bold, const bool& italic, const bool& underline) { - QString szHTML(""); + QString szHTML(""); + Qt::Alignment align1; + szHTML.append(QString("

"); szHTML.append(szText); - szHTML.append("

"); - + szHTML.append("


"); cursor.insertHtml(szHTML); }