00001 #ifndef PRINTING_H 00002 #define PRINTING_H 00003 #include <QGraphicsView> 00004 #include <QDialog> 00005 #include <QPrinter> 00006 #include <QVector> 00007 #include <QDate> 00008 #include <QLocale> 00009 #include <QFileDialog> 00010 #include <QVariant> 00011 #include <QPrintDialog> 00012 #include <QGraphicsTextItem> 00013 #include <QTextLength> 00014 #include <QModelIndex> 00015 #include <QString> 00016 #include <QGraphicsProxyWidget> 00017 #include <QSizeF> 00018 #include <QLayout> 00019 #include <QSpacerItem> 00020 00021 class ExerciseModel; 00022 class DataExercise; 00023 class DataProject; 00024 class AccountModel; 00025 class DescriptionWidget; 00026 class AccountingRecordWidget; 00027 class PieChartView; 00028 class Settings; 00029 00030 class Printing : private QObject 00031 { 00032 Q_OBJECT 00033 public: 00034 Printing(QPrinter *p_printer, Settings &settings, ExerciseModel *model, DataProject *project, AccountModel *table, QObject *parent = 0); 00035 00036 QList <QGraphicsScene*> pageSceneList; 00037 void print(); 00038 void setupPage(QGraphicsScene *pageScene); 00039 QGraphicsScene* pageScene(int nr); 00040 int pageCount(); 00041 00042 int leftMargin; 00043 int leftMarginExercise; 00044 int rightMargin; 00045 int topMargin; 00046 int bottomMargin; 00047 int spacing; 00048 int headerSize; 00049 int footerSize; 00050 int sceneZoomFactor; 00051 int rowHeight; 00052 QString headerText; 00053 00054 //Fonts 00055 QFont projectTitleFont; 00056 QFont chapterTitleFont; 00057 QFont exerciseTitleFont; 00058 QFont font; 00059 QFontMetrics *titleFmt; 00060 00061 private: 00062 QPrinter *p_printer; 00063 ExerciseModel *p_model; 00064 DataProject *p_project; 00065 AccountModel *p_table; 00066 Settings *settings; 00067 00068 public slots: 00069 void paintPage(bool placeForSolution, bool extraPageForSolution); 00070 void paintFooter(); 00071 void paintIntroPage(); 00072 void paintExtraPageForSolution(); 00073 }; 00074 00075 #endif // PRINTING_H