#ifndef PRINTLAYOUT_H #define PRINTLAYOUT_H #include #include #include #include class QPrinter; class QTableView; class PrintDialog; class TablePrintModel; class ProfilePrintModel; struct dive; class PrintLayout : public QObject { Q_OBJECT public: PrintLayout(PrintDialog *, QPrinter *, struct options *); void print(); private: PrintDialog *dialog; QPrinter *printer; struct options *printOptions; int screenDpiX, screenDpiY, printerDpi, pageW, pageH; QRect pageRect; QVector tablePrintColumnNames; unsigned int tablePrintHeadingBackground; QList tablePrintColumnWidths; unsigned int profilePrintTableMaxH; QList profilePrintColumnWidths, profilePrintRowHeights; void setup(); int estimateTotalDives() const; void printProfileDives(int divesPerRow, int divesPerColumn); QTableView *createProfileTable(ProfilePrintModel *model, const int tableW, const qreal fitNotesToHeight = 0.0); void printTable(); void addTablePrintDataRow(TablePrintModel *model, int row, struct dive *dive) const; void addTablePrintHeadingRow(TablePrintModel *model, int row) const; signals: void signalProgress(int); }; #endif // PRINTLAYOUT_H