KD Reports API Documentation  2.0
KDReportsSpreadsheetReportLayout_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 KDREPORTSSPREADSHEETREPORTLAYOUT_H
18 #define KDREPORTSSPREADSHEETREPORTLAYOUT_H
19 
21 #include "KDReportsReport.h"
22 #include "KDReportsTableLayout_p.h"
23 #include <QBrush>
24 
25 namespace KDReports {
26 class Report;
27 class MainTable;
28 
29 class SpreadsheetReportLayout : public AbstractReportLayout
30 {
31 public:
33 
35  void setLayoutDirty() override;
37  void setDefaultFont(const QFont &font) override;
39  QFont defaultFont() const override;
41  void paintPageContent(int pageNumber, QPainter &painter) override;
43  int numberOfPages() override; // not const, since it can trigger a layout
45  qreal idealWidth() override;
47  void setPageContentSize(QSizeF size) override;
49  void ensureLayouted() override;
51  void updateTextValue(const QString &id, const QString &newValue) override;
53  qreal layoutAsOnePage(qreal width) override;
55  bool scaleTo(int numPagesHorizontally, int numPagesVertically) override;
57  void setFixedRowHeight(qreal height) override;
59  int maximumNumberOfPagesForHorizontalScaling() const override;
61  int maximumNumberOfPagesForVerticalScaling() const override;
63  void setUserRequestedFontScalingFactor(qreal factor) override;
65  qreal userRequestedFontScalingFactor() const override;
67  QString anchorAt(int pageNumber, QPoint pos) override;
69  QString toHtml() const override;
71  void finishHtmlExport() override;
72 
73  void setModel(QAbstractItemModel *model);
74  void setVerticalHeaderVisible(bool visible);
75  void setHorizontalHeaderVisible(bool visible);
76  void setCellPadding(qreal padding);
77  void setIconSize(QSize iconSize);
78  void setCellBorder(qreal border, const QBrush &borderBrush);
79  void setHeaderBackground(const QBrush &headerBackground);
80 
81  KDReports::Report::TableBreakingPageOrder tableBreakingPageOrder() const { return m_tableBreakingPageOrder; }
83  void setHorizontalHeaderFont(const QFont &font);
84  void setVerticalHeaderFont(const QFont &font);
85 
86 private:
87  void drawBorder(const QRectF &cellRect, QPainter &painter) const;
88  void breakHorizontally();
89  // Return sum of m_tableLayout.m_columnWidths; caller must ensure updateColumnWidths was called before.
90  qreal totalWidth() const;
91  qreal cellWidth(int col, int horizSpan) const;
92  qreal paintTableVerticalHeader(qreal x, qreal y, QPainter &painter, int row);
93  void paintTableHorizontalHeader(const QRectF &cellRect, QPainter &painter, int col);
94  void paintIcon(QPainter &painter, const QRectF &cellContentsRect, const QVariant &cellDecoration) const;
95  void paintTextAndIcon(QPainter &painter, const QRectF &cellContentsRect, const QString &cellText, const QVariant &cellDecoration, const QVariant &decorationAlignment, Qt::Alignment alignment);
96 
97  KDReports::TableLayout m_tableLayout;
98  KDReports::Report::TableBreakingPageOrder m_tableBreakingPageOrder;
99  int m_numHorizontalPages; // for scaleTo(). 1 if not set.
100  int m_numVerticalPages; // for scaleTo(). "Maximum" number of vertical pages. 0 if not set.
101  bool m_layoutDirty;
102  qreal m_userRequestedFontScalingFactor; // for scaleFontsBy(), 1.0 otherwise.
103  QSizeF m_pageContentSize;
104 
105  // table-specific settings used during painting (and not during layouting)
106  struct TableSettings
107  {
108  TableSettings()
109  : m_border(1.0)
110  , m_borderBrush(Qt::gray)
111  , m_headerBackground(Qt::gray)
112  {
113  }
114  qreal m_border;
115  QBrush m_borderBrush;
116  QBrush m_headerBackground;
117  };
118  TableSettings m_tableSettings;
119 
120  // The result of the layout:
121  // a list of rects, each rect points to an "area" of the table
122  // (in number of cells). For instance
123  // Page 0 -> QRect(0,0,20,10), page 1 -> QRect(20,0,15,10)
124  QList<QRect> m_pageRects;
125  friend class MainTable;
126 };
127 
128 }
129 
130 #endif // KDREPORTSSPREADSHEETREPORTLAYOUT_H
KDReports::SpreadsheetReportLayout::layoutAsOnePage
qreal layoutAsOnePage(qreal width) override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:540
KDReports::SpreadsheetReportLayout::paintPageContent
void paintPageContent(int pageNumber, QPainter &painter) override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:201
KDReports::SpreadsheetReportLayout::setModel
void setModel(QAbstractItemModel *model)
Definition: KDReportsSpreadsheetReportLayout.cpp:628
KDReports::SpreadsheetReportLayout::userRequestedFontScalingFactor
qreal userRequestedFontScalingFactor() const override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:595
KDReports::SpreadsheetReportLayout::ensureLayouted
void ensureLayouted() override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:350
KDReports::SpreadsheetReportLayout::finishHtmlExport
void finishHtmlExport() override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:560
KDReports::SpreadsheetReportLayout::setPageContentSize
void setPageContentSize(QSizeF size) override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:341
KDReports::TableLayout
Definition: KDReportsTableLayout_p.h:30
KDReports::SpreadsheetReportLayout::SpreadsheetReportLayout
SpreadsheetReportLayout(KDReports::Report *report)
Definition: KDReportsSpreadsheetReportLayout.cpp:29
QList< QRect >
KDReports::SpreadsheetReportLayout::toHtml
QString toHtml() const override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:555
KDReports::SpreadsheetReportLayout::setHorizontalHeaderFont
void setHorizontalHeaderFont(const QFont &font)
KDReports::SpreadsheetReportLayout::maximumNumberOfPagesForVerticalScaling
int maximumNumberOfPagesForVerticalScaling() const override
Reimplemented for internal purposes. .
KDReports::SpreadsheetReportLayout::updateTextValue
void updateTextValue(const QString &id, const QString &newValue) override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:533
KDReports::Report
Definition: KDReportsReport.h:80
KDReports::SpreadsheetReportLayout::setLayoutDirty
void setLayoutDirty() override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:41
KDReports::SpreadsheetReportLayout::setUserRequestedFontScalingFactor
void setUserRequestedFontScalingFactor(qreal factor) override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:587
KDReports::SpreadsheetReportLayout::setVerticalHeaderFont
void setVerticalHeaderFont(const QFont &font)
KDReportsReport.h
KDReports::SpreadsheetReportLayout::anchorAt
QString anchorAt(int pageNumber, QPoint pos) override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:600
KDReports::SpreadsheetReportLayout::setHorizontalHeaderVisible
void setHorizontalHeaderVisible(bool visible)
KDReports::SpreadsheetReportLayout::setVerticalHeaderVisible
void setVerticalHeaderVisible(bool visible)
KDReportsTableLayout_p.h
KDReports::SpreadsheetReportLayout::numberOfPages
int numberOfPages() override
Reimplemented for internal purposes. .
KDReports::SpreadsheetReportLayout::setTableBreakingPageOrder
void setTableBreakingPageOrder(KDReports::Report::TableBreakingPageOrder order)
Definition: KDReportsSpreadsheetReportLayout.cpp:608
KDReports::SpreadsheetReportLayout::scaleTo
bool scaleTo(int numPagesHorizontally, int numPagesVertically) override
Reimplemented for internal purposes. .
KDReports::SpreadsheetReportLayout::maximumNumberOfPagesForHorizontalScaling
int maximumNumberOfPagesForHorizontalScaling() const override
Reimplemented for internal purposes. .
KDReports::SpreadsheetReportLayout::idealWidth
qreal idealWidth() override
Reimplemented for internal purposes. .
KDReports::SpreadsheetReportLayout::setCellPadding
void setCellPadding(qreal padding)
KDReports::SpreadsheetReportLayout::setCellBorder
void setCellBorder(qreal border, const QBrush &borderBrush)
Definition: KDReportsSpreadsheetReportLayout.cpp:659
KDReports::SpreadsheetReportLayout::setDefaultFont
void setDefaultFont(const QFont &font) override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:46
KDReports::SpreadsheetReportLayout::tableBreakingPageOrder
KDReports::Report::TableBreakingPageOrder tableBreakingPageOrder() const
Definition: KDReportsSpreadsheetReportLayout_p.h:95
KDReportsAbstractReportLayout_p.h
KDReports::SpreadsheetReportLayout::setHeaderBackground
void setHeaderBackground(const QBrush &headerBackground)
KDReports::SpreadsheetReportLayout::MainTable
friend class MainTable
Definition: KDReportsSpreadsheetReportLayout_p.h:139
KDReports::SpreadsheetReportLayout::setFixedRowHeight
void setFixedRowHeight(qreal height) override
Reimplemented for internal purposes. .
KDReports::SpreadsheetReportLayout::setIconSize
void setIconSize(QSize iconSize)
Definition: KDReportsSpreadsheetReportLayout.cpp:654
KDReports::Report::TableBreakingPageOrder
TableBreakingPageOrder
Definition: KDReportsReport.h:611
KDReports::SpreadsheetReportLayout::defaultFont
QFont defaultFont() const override
Reimplemented for internal purposes. .
Definition: KDReportsSpreadsheetReportLayout.cpp:54
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