KD Reports API Documentation  2.0
KDReportsReportBuilder_p.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** This file is part of the KD Reports library.
4 **
5 ** SPDX-FileCopyrightText: 2007-2022 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
6 **
7 ** SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDAB-KDReports OR LicenseRef-KDAB-KDReports-US
8 **
9 ** Licensees holding valid commercial KD Reports licenses may use this file in
10 ** accordance with the KD Reports Commercial License Agreement provided with
11 ** the Software.
12 **
13 ** Contact info@kdab.com if any conditions of this licensing are not clear to you.
14 **
15 ****************************************************************************/
16 
17 #ifndef KDREPORTSREPORTBUILDER_H
18 #define KDREPORTSREPORTBUILDER_H
19 
21 #include "KDReportsVariableType.h"
22 #include <QTextCursor>
23 
24 QT_BEGIN_NAMESPACE
25 class QTextDocument;
26 QT_END_NAMESPACE
27 
28 namespace KDReports {
29 class Element;
30 class Report;
31 class TextDocument;
32 class TextDocumentData;
33 
34 #define REPORTBUILDER_CTOR_ARGDEFS KDReports::TextDocumentData &contentDocument, const QTextCursor &cursor, KDReports::Report *report
35 
36 #define REPORTBUILDER_CTOR_ARGNAMES contentDocument, cursor, report
37 
42 {
43 
44 public:
45  ReportBuilder(KDReports::TextDocumentData &contentDocument, const QTextCursor &cursor, Report *report);
46  virtual ~ReportBuilder() { }
47 
48  QTextCursor &cursor()
49  {
50  m_contentDocument.aboutToModifyContents(TextDocumentData::Append);
51  return m_cursor;
52  }
53  Report *report() { return m_report; }
54 
55  // Warning, changes to those virtual methods must be propagated to CellReportBuilder.
56  virtual void addPageBreakPublic();
57  virtual void addInlineElementPublic(const Element &element);
58  virtual void addBlockElementPublic(const Element &element, Qt::AlignmentFlag horizontalAlignment, const QColor &backgroundColor = QColor());
59  virtual void addVariablePublic(KDReports::VariableType variable);
60  virtual void addVerticalSpacingPublic(qreal space);
61  virtual void insertFragmentPublic(const QTextDocumentFragment &fragment);
62 
63  // Warning, changes to those virtual methods must be propagated to CellReportBuilder and HeaderReportBuilder.
64  virtual void addInlineElement(const Element &element);
65  virtual void addBlockElement(const Element &element, Qt::AlignmentFlag horizontalAlignment, const QColor &backgroundColor = QColor());
66  virtual void addVariable(KDReports::VariableType variable);
67  virtual void addVerticalSpacing(qreal space);
68 
69  TextDocumentData &currentDocumentData() { return m_contentDocument; }
70 
71  QTextDocument &currentDocument() { return currentDocumentData().document(); }
72 
73  // Store default font in builder, so that toplevel text elements use the report's default font
74  // but table cells use the table's default font (if any)
75  void setDefaultFont(const QFont &font) { m_defaultFont = font; }
76 
77  QFont defaultFont() const { return m_defaultFont; }
78 
79  // should not be used directly, apart for creating another builder (e.g. cell builder)
80  TextDocumentData &contentDocumentData() { return m_contentDocument; }
81  QTextCursor &contentDocumentCursor() { return m_cursor; }
82 
83  void setupBlockFormat(QTextBlockFormat &blockFormat);
84 
85  void setTabPositions(const QList<QTextOption::Tab> &tabs); // in mm
86  // const QList<QTextOption::Tab>& tabPositions() const { return m_tabPositions; }
87  void setParagraphMargins(qreal left, qreal top, qreal right, qreal bottom); // in mm
88  void copyStateFrom(ReportBuilder &parentBuilder);
89  int currentPosition();
90 
91 private:
92  ReportBuilder(const ReportBuilder &other) = delete;
93  ReportBuilder &operator=(const ReportBuilder &other) = delete;
94 
95  KDReports::TextDocumentData &m_contentDocument;
96  QTextCursor m_cursor;
97  QTextCursor m_layoutDocCursor;
98  QList<QTextOption::Tab> m_tabPositions;
99  qreal m_leftMargin = 0;
100  qreal m_rightMargin = 0;
101  qreal m_topMargin = 0;
102  qreal m_bottomMargin = 0;
103  Report *m_report;
104  QFont m_defaultFont;
105  bool m_first = true;
106 };
107 }
108 
109 QDebug operator<<(QDebug &dbg, const QTextOption::Tab &tab);
110 
111 #endif /* KDREPORTSREPORTBUILDER_H */
KDReports::ReportBuilder
Definition: KDReportsReportBuilder_p.h:41
KDReports::ReportBuilder::currentDocumentData
TextDocumentData & currentDocumentData()
Definition: KDReportsReportBuilder_p.h:69
KDReports::TextDocumentData::Append
@ Append
Definition: KDReportsTextDocumentData_p.h:84
KDReports::ReportBuilder::report
Report * report()
Definition: KDReportsReportBuilder_p.h:53
KDReports::TextDocumentData
Definition: KDReportsTextDocumentData_p.h:56
KDReports::ReportBuilder::~ReportBuilder
virtual ~ReportBuilder()
Definition: KDReportsReportBuilder_p.h:46
KDReportsVariableType.h
QList< QTextOption::Tab >
KDReports::Element
Definition: KDReportsElement.h:39
KDReports::ReportBuilder::setDefaultFont
void setDefaultFont(const QFont &font)
Definition: KDReportsReportBuilder_p.h:75
KDReports::Report
Definition: KDReportsReport.h:80
KDReports::ReportBuilder::contentDocumentCursor
QTextCursor & contentDocumentCursor()
Definition: KDReportsReportBuilder_p.h:81
operator<<
QDebug operator<<(QDebug &dbg, const QTextOption::Tab &tab)
KDReports::ReportBuilder::defaultFont
QFont defaultFont() const
Definition: KDReportsReportBuilder_p.h:77
KDReports::ReportBuilder::cursor
QTextCursor & cursor()
Definition: KDReportsReportBuilder_p.h:48
KDReports::VariableType
VariableType
Definition: KDReportsVariableType.h:29
KDReportsTextDocumentData_p.h
KDREPORTS_EXPORT
#define KDREPORTS_EXPORT
Definition: KDReportsGlobal.h:29
KDReports::ReportBuilder::contentDocumentData
TextDocumentData & contentDocumentData()
Definition: KDReportsReportBuilder_p.h:80
KDReports::ReportBuilder::currentDocument
QTextDocument & currentDocument()
Definition: KDReportsReportBuilder_p.h:71
KDReports
Definition: KDReportsAbstractReportLayout_p.h:30

© 2007-2021 Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
https://www.kdab.com/development-resources/qt-tools/kd-reports/
Generated on Sat Jan 8 2022 02:38:32 for KD Reports API Documentation by doxygen 1.8.17