summaryrefslogtreecommitdiffstats
path: root/Plugins/PdfExport/pdfexport.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2023-04-30 18:30:36 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2023-04-30 18:30:36 -0400
commit3565aad630864ecdbe53fdaa501ea708555b3c7c (patch)
treec743e4ad0bad39ebdb2f514c7cc52d34a257ebbe /Plugins/PdfExport/pdfexport.cpp
parent1fdc150116cad39aae5c5da407c3312b47a59e3a (diff)
New upstream version 3.4.4+dfsg.upstream/3.4.4+dfsg
Diffstat (limited to 'Plugins/PdfExport/pdfexport.cpp')
-rw-r--r--Plugins/PdfExport/pdfexport.cpp57
1 files changed, 30 insertions, 27 deletions
diff --git a/Plugins/PdfExport/pdfexport.cpp b/Plugins/PdfExport/pdfexport.cpp
index eea5b61..cc055a8 100644
--- a/Plugins/PdfExport/pdfexport.cpp
+++ b/Plugins/PdfExport/pdfexport.cpp
@@ -1,7 +1,6 @@
#include "pdfexport.h"
#include "common/unused.h"
#include "uiutils.h"
-#include "log.h"
#include <QtMath>
#include <QPainter>
#include <QFont>
@@ -9,8 +8,12 @@
QString PdfExport::bulletChar = "\u2022";
+CFG_DEFINE(PdfExportConfig)
+#define PDFEXPORT_CFG CFG_INSTANCE(PdfExportConfig)
+
bool PdfExport::init()
{
+ SQLS_INIT_RESOURCE(pdfexport);
textOption = new QTextOption();
textOption->setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
return GenericExportPlugin::init();
@@ -19,6 +22,8 @@ bool PdfExport::init()
void PdfExport::deinit()
{
safe_delete(textOption);
+ CFG_DELETE_INSTANCE(PdfExportConfig);
+ SQLS_CLEANUP_RESOURCE(pdfexport);
}
QPagedPaintDevice* PdfExport::createPaintDevice(const QString& documentTitle, bool &takeOwnership)
@@ -100,7 +105,7 @@ bool PdfExport::exportTable(const QString& database, const QString& table, const
QStringList columnsAndTypes;
int colNamesLength = 0;
int dataTypeLength = 0;
- for (SqliteCreateTable::Column* col : createTable->columns)
+ for (SqliteCreateTable::Column*& col : createTable->columns)
{
colDef = col->name;
colNamesLength = qMax(colNamesLength, colDef.size());
@@ -118,7 +123,7 @@ bool PdfExport::exportTable(const QString& database, const QString& table, const
QList<int> columnDataLengths = {colNamesLength, dataTypeLength, 0};
calculateDataColumnWidths(tableDdlColumns, columnDataLengths, 2);
- for (SqliteCreateTable::Column* col : createTable->columns)
+ for (SqliteCreateTable::Column*& col : createTable->columns)
exportTableColumnRow(col);
if (createTable->constraints.size() > 0)
@@ -232,7 +237,7 @@ bool PdfExport::exportIndex(const QString& database, const QString& name, const
exportObjectColumnsHeader(indexColumns);
QString sort;
- for (SqliteOrderBy* idxCol : createIndex->indexedColumns)
+ for (SqliteOrderBy*& idxCol : createIndex->indexedColumns)
{
if (idxCol->order != SqliteSortOrder::null)
sort = sqliteSortOrder(idxCol->order);
@@ -279,7 +284,7 @@ bool PdfExport::exportTrigger(const QString& database, const QString& name, cons
exportObjectRow({tr("Activation condition"), cond});
QStringList queryStrings;
- for (SqliteQuery* q : createTrigger->queries)
+ for (SqliteQuery*& q : createTrigger->queries)
queryStrings << q->detokenize();
exportObjectColumnsHeader({tr("Code executed")});
@@ -340,36 +345,36 @@ void PdfExport::cleanupAfterExport()
void PdfExport::setupConfig()
{
- pagedWriter->setPageSize(convertPageSize(cfg.PdfExport.PageSize.get()));
+ pagedWriter->setPageSize(convertPageSize(PDFEXPORT_CFG.PdfExport.PageSize.get()));
pageWidth = pagedWriter->width();
pageHeight = pagedWriter->height();
- pointsPerMm = pageWidth / pagedWriter->pageSizeMM().width();
+ pointsPerMm = pageWidth / pagedWriter->pageLayout().pageSize().size(QPageSize::Millimeter).width();
- stdFont = cfg.PdfExport.Font.get();
- stdFont.setPointSize(cfg.PdfExport.FontSize.get());
+ stdFont = PDFEXPORT_CFG.PdfExport.Font.get();
+ stdFont.setPointSize(PDFEXPORT_CFG.PdfExport.FontSize.get());
boldFont = stdFont;
boldFont.setBold(true);
italicFont = stdFont;
italicFont.setItalic(true);
painter->setFont(stdFont);
- topMargin = mmToPoints(cfg.PdfExport.TopMargin.get());
- rightMargin = mmToPoints(cfg.PdfExport.RightMargin.get());
- leftMargin = mmToPoints(cfg.PdfExport.LeftMargin.get());
- bottomMargin = mmToPoints(cfg.PdfExport.BottomMargin.get());
+ topMargin = mmToPoints(PDFEXPORT_CFG.PdfExport.TopMargin.get());
+ rightMargin = mmToPoints(PDFEXPORT_CFG.PdfExport.RightMargin.get());
+ leftMargin = mmToPoints(PDFEXPORT_CFG.PdfExport.LeftMargin.get());
+ bottomMargin = mmToPoints(PDFEXPORT_CFG.PdfExport.BottomMargin.get());
updateMargins();
maxColWidth = pageWidth / 5;
- padding = mmToPoints(cfg.PdfExport.Padding.get());
+ padding = mmToPoints(PDFEXPORT_CFG.PdfExport.Padding.get());
QRectF rect = painter->boundingRect(QRectF(padding, padding, pageWidth - 2 * padding, 1), "X", *textOption);
minRowHeight = rect.height() + padding * 2;
maxRowHeight = qMax((int)(pageHeight * 0.225), minRowHeight);
rowsToPrebuffer = (int)qCeil((double)pageHeight / minRowHeight);
- cellDataLimit = cfg.PdfExport.MaxCellBytes.get();
- printRowNum = cfg.PdfExport.PrintRowNum.get();
- printPageNumbers = cfg.PdfExport.PrintPageNumbers.get();
+ cellDataLimit = PDFEXPORT_CFG.PdfExport.MaxCellBytes.get();
+ printRowNum = PDFEXPORT_CFG.PdfExport.PrintRowNum.get();
+ printPageNumbers = PDFEXPORT_CFG.PdfExport.PrintPageNumbers.get();
lastRowY = getContentsTop();
currentPage = -1;
@@ -504,7 +509,7 @@ void PdfExport::exportTableColumnRow(SqliteCreateTable::Column* column)
if (column->constraints.size() > 0)
{
- for (SqliteCreateTable::Column::Constraint* constr : column->constraints)
+ for (SqliteCreateTable::Column::Constraint*& constr : column->constraints)
cell.contents << constr->detokenize();
cell.type = ObjectCell::Type::LIST;
@@ -643,7 +648,7 @@ void PdfExport::drawObjectTopLine(int y)
void PdfExport::drawObjectCellHeaderBackground(int x1, int y1, int x2, int y2)
{
painter->save();
- painter->setBrush(QBrush(cfg.PdfExport.HeaderBgColor.get(), Qt::SolidPattern));
+ painter->setBrush(QBrush(PDFEXPORT_CFG.PdfExport.HeaderBgColor.get(), Qt::SolidPattern));
painter->setPen(Qt::NoPen);
painter->drawRect(x1, y1, x2 - x1, y2 - y1);
painter->restore();
@@ -709,7 +714,7 @@ void PdfExport::flushObjectRow(const PdfExport::ObjectRow& row, int y)
x = left;
painter->drawLine(x, y, x, bottom);
- for (int w : calculatedObjectColumnWidths)
+ for (int& w : calculatedObjectColumnWidths)
{
x += w;
painter->drawLine(x, y, x, bottom);
@@ -755,7 +760,6 @@ void PdfExport::flushObjectCell(const PdfExport::ObjectCell& cell, int x, int y,
x += padding;
y += padding;
w -= 2 * padding;
- h -= 2 * padding;
int txtX = x + prefixWidth;
int txtW = w - prefixWidth;
@@ -815,7 +819,7 @@ void PdfExport::calculateObjectColumnWidths(int columnToExpand)
int PdfExport::correctMaxObjectColumnWidths(int colCount, int columnToExpand)
{
int totalWidth = 0;
- for (int w : calculatedObjectColumnWidths)
+ for (int& w : calculatedObjectColumnWidths)
totalWidth += w;
int maxWidth = pageWidth / colCount;
@@ -845,7 +849,6 @@ int PdfExport::correctMaxObjectColumnWidths(int colCount, int columnToExpand)
if (columnToExpand > -1 && totalWidth > pageWidth)
{
- tmpWidth = calculatedObjectColumnWidths[columnToExpand];
if ((totalWidth - calculatedObjectColumnWidths[columnToExpand] + maxWidth) <= pageWidth)
calculatedObjectColumnWidths[columnToExpand] -= (pageWidth - totalWidth + calculatedObjectColumnWidths[columnToExpand] - maxWidth);
else
@@ -954,7 +957,7 @@ void PdfExport::flushDataRowsPage(int columnStart, int columnEndBefore, int rows
// Draw header background
int x = getDataColumnsStartX();
painter->save();
- painter->setBrush(QBrush(cfg.PdfExport.HeaderBgColor.get(), Qt::SolidPattern));
+ painter->setBrush(QBrush(PDFEXPORT_CFG.PdfExport.HeaderBgColor.get(), Qt::SolidPattern));
painter->setPen(Qt::NoPen);
painter->drawRect(QRect(x, top, totalColumnsWidth, totalHeaderRowsHeight));
painter->restore();
@@ -963,7 +966,7 @@ void PdfExport::flushDataRowsPage(int columnStart, int columnEndBefore, int rows
if (printRowNum)
{
painter->save();
- painter->setBrush(QBrush(cfg.PdfExport.HeaderBgColor.get(), Qt::SolidPattern));
+ painter->setBrush(QBrush(PDFEXPORT_CFG.PdfExport.HeaderBgColor.get(), Qt::SolidPattern));
painter->setPen(Qt::NoPen);
painter->drawRect(QRect(left, top, rowNumColumnWidth, totalRowsHeight));
painter->restore();
@@ -1071,7 +1074,7 @@ void PdfExport::flushDataCell(const QRect& rect, const PdfExport::DataCell& cell
painter->save();
if (cell.isNull)
{
- painter->setPen(cfg.PdfExport.NullValueColor.get());
+ painter->setPen(PDFEXPORT_CFG.PdfExport.NullValueColor.get());
painter->setFont(italicFont);
}
@@ -1405,7 +1408,7 @@ qreal PdfExport::mmToPoints(qreal sizeMM)
CfgMain* PdfExport::getConfig()
{
- return &cfg;
+ return &PDFEXPORT_CFG;
}
QString PdfExport::getExportConfigFormName() const