#include #include #include #include #include #include #include "mainwindow.h" #include "printlayout.h" /* struct options { enum { PRETTY, TABLE, TWOPERPAGE } type; int print_selected; int color_selected; bool notes_up; int profile_height, notes_height, tanks_height; }; */ PrintLayout::PrintLayout(PrintDialog *dialogPtr, QPrinter *printerPtr, struct options *optionsPtr) { dialog = dialogPtr; printer = printerPtr; printOptions = optionsPtr; // painter = new QPainter(printer); } void PrintLayout::print() { // we call setup each time to check if the printer properties have changed setup(); // temp / debug printTable(); return; // ------------ switch (printOptions->type) { case options::PRETTY: printSixDives(); break; case options::TWOPERPAGE: printTwoDives(); break; case options::TABLE: printTable(); break; } } void PrintLayout::setup() { QDesktopWidget *desktop = QApplication::desktop(); screenDpiX = desktop->physicalDpiX(); screenDpiY = desktop->physicalDpiX(); printerDpi = printer->resolution(); pageRect = printer->pageRect(); scaleX = (qreal)printerDpi/(qreal)screenDpiX; scaleY = (qreal)printerDpi/(qreal)screenDpiY; } void PrintLayout::printSixDives() { // nop } void PrintLayout::printTwoDives() { // nop } void PrintLayout::printTable() { QTextDocument doc; QSizeF pageSize; pageSize.setWidth(pageRect.width()); pageSize.setHeight(pageRect.height()); doc.setPageSize(pageSize); QString styleSheet = ""; // setDefaultStyleSheet() doesn't work here? QString htmlText = styleSheet + ""; QString htmlTextPrev; int pageCountNew = 1, pageCount = 1; bool insertHeading = true; while (pageCount < 3) { // should go trough dives (or selected) instead if (insertHeading) { htmlText += insertTableHeadingRow(); insertHeading = false; } doc.setHtml(htmlText); pageCount = doc.pageCount(); htmlTextPrev = htmlText; htmlText += insertTableDataRow(); doc.setHtml(htmlText); pageCountNew = doc.pageCount(); // if the page count increases here we revert and add a heading instead if (pageCountNew > pageCount) { htmlText = htmlTextPrev; doc.setHtml(htmlText); insertHeading = true; } } htmlText += "
"; doc.setHtml(htmlText); doc.print(printer); } QString PrintLayout::insertTableHeadingRow() { return "TITLETITLE 2"; } QString PrintLayout::insertTableDataRow() { return "hellohello"; }