23 #include <QAbstractTextDocumentLayout>
26 #include <QTextCursor>
27 #include <QTextTableCell>
30 class CellContentMap :
public QMap<QPair<int , int >, Cell>
34 void getSize(
int &rows,
int &columns)
const
38 for (const_iterator it =
begin(); it !=
end(); ++it) {
39 rows = qMax(rows, it.key().first + 1);
40 columns = qMax(columns, it.key().second + 1);
46 class KDReports::TableElementPrivate
49 KDReports::CellContentMap m_cellContentMap;
50 int m_headerRowCount = 0;
51 int m_headerColumnCount = 0;
57 : d(new TableElementPrivate)
63 , d(new TableElementPrivate(*other.d))
88 d->m_headerRowCount = count;
93 return d->m_headerRowCount;
98 d->m_headerColumnCount = count;
103 return d->m_headerColumnCount;
109 return d->m_cellContentMap[coord];
114 if (d->m_cellContentMap.isEmpty())
121 d->m_cellContentMap.getSize(rowCount, columnCount);
128 fillTableFormat(tableFormat, textDocCursor);
133 CellContentMap::const_iterator it = d->m_cellContentMap.constBegin();
134 for (; it != d->m_cellContentMap.constEnd(); ++it) {
135 const int row = it.key().first;
136 const int column = it.key().second;
137 const Cell &cell = it.value();
146 tableCellFormat.setTableCellColumnSpan(cell.
columnSpan());
147 tableCellFormat.setTableCellRowSpan(cell.
rowSpan());
153 cell.
build(cellBuilder);