diff --git a/sources/diagramfoliolist.cpp b/sources/diagramfoliolist.cpp --- a/sources/diagramfoliolist.cpp +++ b/sources/diagramfoliolist.cpp @@ -19,7 +19,7 @@ #include #include "qetapp.h" -qreal DiagramFolioList::colWidths[4] = {0.1, 0.55, 0.2, 0.15}; +qreal DiagramFolioList::colWidths[5] = {0.1, 0.1, 0.55, 0.1, 0.15}; /** * @brief DiagramFolioList::DiagramFolioList @@ -74,10 +74,11 @@ qreal y0 = border_and_titleblock.columnsHeaderHeight(); QRectF row_RectBorder(x0, y0, width, height); - buildGrid(p, row_RectBorder,30,2,colWidths); + buildGrid(p, row_RectBorder,30,1,colWidths); x0 = list_rectangles_[0] -> topLeft().x(); y0 = list_rectangles_[0] -> topLeft().y(); + qreal rowHeight = (list_rectangles_[0] -> height())/30; QRectF row_RectF(x0, y0, list_rectangles_[0] -> width(), rowHeight); @@ -84,8 +85,7 @@ fillHeader(p, row_RectF); QList diagram_list = project() -> diagrams(); - int startDiagram = id * 58; - + int startDiagram = id * 29; for (int i = startDiagram; i < startDiagram+29 && i < diagram_list.size(); ++i) { y0 += rowHeight; QRectF row_rect(x0, y0, list_rectangles_[0] -> width(), rowHeight); @@ -92,26 +92,10 @@ fillRow(p, row_rect, diagram_list[i] -> border_and_titleblock.author(), diagram_list[i] -> title(), QString::number(diagram_list[i] ->folioIndex()+1), + diagram_list[i] -> border_and_titleblock.folio(), diagram_list[i] -> border_and_titleblock.date().toString(Qt::SystemLocaleShortDate)); } - x0 = list_rectangles_[1] -> topLeft().x(); - y0 = list_rectangles_[1] -> topLeft().y(); - rowHeight = (list_rectangles_[1] -> height())/30; - QRectF row_RectF2(x0, y0, list_rectangles_[1] -> width(), rowHeight); - fillHeader(p, row_RectF2); - - startDiagram += 29; - - for (int i = startDiagram; i < startDiagram+29 && i < diagram_list.size(); ++i) { - y0 += rowHeight; - QRectF row_rect(x0, y0, list_rectangles_[1] -> width(), rowHeight); - fillRow(p, row_rect, diagram_list[i] -> border_and_titleblock.author(), - diagram_list[i] -> title(), - QString::number(diagram_list[i] ->folioIndex()+1), - diagram_list[i] -> border_and_titleblock.date().toString(Qt::SystemLocaleShortDate)); - } - border_and_titleblock.draw(p); p -> restore(); } @@ -123,7 +107,7 @@ * @param row_rect rectangle where we must draw the new row */ void DiagramFolioList::fillRow(QPainter *qp, const QRectF &row_rect, QString author, QString title, - QString folio, QString date) + QString folio, QString label, QString date) { qreal x = row_rect.topLeft().x(); qreal y = row_rect.topLeft().y(); @@ -142,33 +126,42 @@ qp -> drawText(QRectF(x, y, colWidths[0]*row_rect.width(), row_rect.height()), Qt::AlignCenter, folio); x += colWidths[0]*row_rect.width(); - if (origFontMetrics.width(title) > 0.95*colWidths[1]*row_rect.width()) - workingFont.setPointSizeF(origFontSize * 0.95*colWidths[1]*row_rect.width() / origFontMetrics.width(title)); + if (origFontMetrics.width(folio) > 0.95*colWidths[1]*row_rect.width()) + workingFont.setPointSizeF(origFontSize * 0.95*colWidths[1]*row_rect.width() / origFontMetrics.width(label)); else workingFont.setPointSizeF(origFontSize); qp -> setFont(workingFont); + qp -> drawText(QRectF(x, y, colWidths[1]*row_rect.width(), row_rect.height()), Qt::AlignCenter, label); + x += colWidths[1]*row_rect.width(); + + + if (origFontMetrics.width(title) > 0.95*colWidths[2]*row_rect.width()) + workingFont.setPointSizeF(origFontSize * 0.95*colWidths[2]*row_rect.width() / origFontMetrics.width(title)); + else + workingFont.setPointSizeF(origFontSize); + qp -> setFont(workingFont); QString heading = tr("Titre"); if (title == heading) - qp -> drawText(QRectF(x, y, colWidths[1]*row_rect.width(),row_rect.height()), Qt::AlignCenter, title); + qp -> drawText(QRectF(x, y, colWidths[2]*row_rect.width(),row_rect.height()), Qt::AlignCenter, title); else - qp -> drawText(QRectF(x+0.01*row_rect.width(), y, colWidths[1]*row_rect.width()*0.99, + qp -> drawText(QRectF(x+0.01*row_rect.width(), y, colWidths[1]*row_rect.width()*6.2, row_rect.height()), Qt::AlignLeft | Qt::AlignVCenter, title); - x += colWidths[1]*row_rect.width(); + x += colWidths[2]*row_rect.width(); - if (origFontMetrics.width(author) > 0.95*colWidths[2]*row_rect.width()) - workingFont.setPointSizeF(origFontSize * 0.95*colWidths[2]*row_rect.width() / origFontMetrics.width(author)); + if (origFontMetrics.width(author) > 0.95*colWidths[3]*row_rect.width()) + workingFont.setPointSizeF(origFontSize * 0.95*colWidths[3]*row_rect.width() / origFontMetrics.width(author)); else workingFont.setPointSizeF(origFontSize); qp -> setFont(workingFont); - qp -> drawText(QRectF(x, y, colWidths[2]*row_rect.width(), row_rect.height()), Qt::AlignCenter, author); - x += colWidths[2]*row_rect.width(); + qp -> drawText(QRectF(x, y, colWidths[3]*row_rect.width(), row_rect.height()), Qt::AlignCenter, author); + x += colWidths[3]*row_rect.width(); - if (origFontMetrics.width(date) > 0.95*colWidths[3]*row_rect.width()) - workingFont.setPointSizeF(origFontSize * 0.95*colWidths[3]*row_rect.width() / origFontMetrics.width(date)); + if (origFontMetrics.width(date) > 0.95*colWidths[4]*row_rect.width()) + workingFont.setPointSizeF(origFontSize * 0.95*colWidths[4]*row_rect.width() / origFontMetrics.width(date)); else workingFont.setPointSizeF(origFontSize); qp -> setFont(workingFont); - qp -> drawText(QRectF(x, y, colWidths[3]*row_rect.width(), row_rect.height()), Qt::AlignCenter, date); + qp -> drawText(QRectF(x, y, colWidths[4]*row_rect.width(), row_rect.height()), Qt::AlignCenter, date); } void DiagramFolioList::buildGrid(QPainter *qp, const QRectF &rect, int rows, int tables, qreal colWidths[]) @@ -179,7 +172,7 @@ list_rectangles_.clear(); qreal sum = 0; - for (int i = 0; i < 4; i++ ) + for (int i = 0; i < 5; i++ ) sum += colWidths[i]; if ( sum < 0.99 || sum > 1.01 ) { qDebug() << "Invalid input: Column widths do not sum to 1"; @@ -189,7 +182,7 @@ qreal tablesSpacing = rect.height() * 0.02; qreal tableWidth = (rect.width() - tablesSpacing*(tables+1) ) / tables; qreal rowHeight = (rect.height() - 2*tablesSpacing) / rows; - int cols = 4;//colWidths.size(); + int cols = 5;//colWidths.size(); qreal x0 = tablesSpacing + rect.topLeft().x(); qreal y0 = tablesSpacing + rect.topLeft().y(); @@ -223,10 +216,11 @@ QString authorTranslatable(QObject::tr("Auteur")); QString titleTranslatable(QObject::tr("Titre")); QString folioTranslatable(QObject::tr("Folio")); + QString labelTranslatable(QObject::tr("Foliolabel")); QString dateTranslatable(QObject::tr("Date")); qp->save(); qp->setFont(QETApp::diagramTextsFont(13)); - fillRow(qp, row_RectF, authorTranslatable, titleTranslatable, folioTranslatable, dateTranslatable); + fillRow(qp, row_RectF, authorTranslatable, titleTranslatable, folioTranslatable, labelTranslatable, dateTranslatable); qp->restore(); } diff --git a/sources/diagramfoliolist.h b/sources/diagramfoliolist.h --- a/sources/diagramfoliolist.h +++ b/sources/diagramfoliolist.h @@ -31,13 +31,13 @@ void setId(int i) {id = i;} int getId() const {return id;} - static qreal colWidths[4]; + static qreal colWidths[5]; protected: void drawBackground(QPainter *, const QRectF &); private: - void fillRow(QPainter *, const QRectF &, QString, QString, QString, QString); + void fillRow(QPainter *, const QRectF &, QString, QString, QString, QString, QString); void buildGrid(QPainter *, const QRectF &, int, int, qreal[]); void fillHeader(QPainter *, const QRectF &); diff --git a/sources/qetproject.cpp b/sources/qetproject.cpp --- a/sources/qetproject.cpp +++ b/sources/qetproject.cpp @@ -1039,7 +1039,7 @@ setFolioSheetsQuantity(0); int diagCount = diagrams().size(); - for (int i = 0; i <= diagCount/58; i++) { + for (int i = 0; i <= diagCount/29; i++) { //create new diagram Diagram *diagram_folio_list = new DiagramFolioList(this);