From e5b18db8026f1488f73b5fed7fa62ba4990cea46 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Thu, 25 Jul 2013 12:52:20 +0300 Subject: Print: improve table printing by using QTableView The current QTextDocument implementation is slow due to HTML parsing. By using QTableView with QAbstractTableModel we boost the performance of the table print drastically. This patch completely replaces the old solution. There is a hidden QTableView widget which is populated with all data and rendered using a QPainter attached to the printer device. A couple of new classes are added in models.h/cpp that handle the table print model and these are then used in printlayout.h/cpp. Signed-off-by: Lubomir I. Ivanov Signed-off-by: Dirk Hohndel --- qt-ui/printlayout.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'qt-ui/printlayout.h') diff --git a/qt-ui/printlayout.h b/qt-ui/printlayout.h index 7a1922e4a..ac363ab8d 100644 --- a/qt-ui/printlayout.h +++ b/qt-ui/printlayout.h @@ -1,10 +1,13 @@ #ifndef PRINTLAYOUT_H #define PRINTLAYOUT_H +#include #include -#include +#include class PrintDialog; +class TablePrintModel; +struct dive; class PrintLayout : public QObject { Q_OBJECT @@ -19,21 +22,21 @@ private: struct options *printOptions; QPainter *painter; - int screenDpiX, screenDpiY, printerDpi; + int screenDpiX, screenDpiY, printerDpi, scaledPageW, scaledPageH; qreal scaleX, scaleY; QRect pageRect; - QStringList tableColumnNames; - QStringList tableColumnWidths; + QList tablePrintColumnNames; + QList tablePrintColumnWidths; + unsigned int tablePrintHeadingBackground; void setup(); void printSixDives() const; void printTwoDives() const; - void printTable() const; - QString insertTableHeadingRow() const; - QString insertTableHeadingCol(int) const; - QString insertTableDataRow(struct dive *) const; - QString insertTableDataCol(QString) const; + void printTable(); + void addTablePrintDataRow(TablePrintModel *model, int row, struct dive *dive) const; + void addTablePrintHeadingRow(TablePrintModel *model, int row) const; + QPixmap convertPixmapToGrayscale(QPixmap) const; }; -- cgit v1.2.3-70-g09d2