int main(int argc, const char * argv[]) { vector<string> files = {"BOA.txt","Chase.txt","FifthThird.txt"}; Parser p(files); ReportBuilder r; p.Parse(&r); r.PrintResults(); return 0; };
void KDReports::Frame::build( ReportBuilder& builder ) const { // prepare the frame QTextFrameFormat format; if ( d->m_width ) { if ( d->m_widthUnit == Millimeters ) { format.setWidth( QTextLength( QTextLength::FixedLength, mmToPixels( d->m_width ) ) ); } else { format.setWidth( QTextLength( QTextLength::PercentageLength, d->m_width ) ); } } if ( d->m_height ) { if ( d->m_heightUnit == Millimeters ) { format.setHeight( QTextLength( QTextLength::FixedLength, mmToPixels( d->m_height ) ) ); } else { format.setHeight( QTextLength( QTextLength::PercentageLength, d->m_height ) ); } } format.setPadding( mmToPixels( padding() ) ); format.setBorder( d->m_border ); // TODO borderBrush like in AbstractTableElement format.setPosition( QTextFrameFormat::InFlow ); QTextCursor& textDocCursor = builder.cursor(); QTextFrame *frame = textDocCursor.insertFrame(format); QTextCursor contentsCursor = frame->firstCursorPosition(); ReportBuilder contentsBuilder( builder.currentDocumentData(), contentsCursor, builder.report() ); contentsBuilder.copyStateFrom( builder ); foreach( const KDReports::ElementData& ed, d->m_elements ) { switch ( ed.m_type ) { case KDReports::ElementData::Inline: contentsBuilder.addInlineElement( *ed.m_element ); break; case KDReports::ElementData::Block: contentsBuilder.addBlockElement( *ed.m_element, ed.m_align ); break; case KDReports::ElementData::Variable: contentsBuilder.addVariable( ed.m_variableType ); break; } } textDocCursor.movePosition( QTextCursor::End ); }
void KDReports::AutoTableElement::build( ReportBuilder& builder ) const { if( !d->m_tableModel ) { return; } QTextDocument& textDoc = builder.currentDocument(); QTextCursor& textDocCursor = builder.cursor(); textDocCursor.beginEditBlock(); QTextTableFormat tableFormat; const int headerRowCount = d->m_horizontalHeaderVisible ? 1 : 0; const int headerColumnCount = d->m_verticalHeaderVisible ? 1 : 0; tableFormat.setHeaderRowCount( headerRowCount ); tableFormat.setProperty( KDReports::HeaderColumnsProperty, headerColumnCount ); tableFormat.setAlignment( textDocCursor.blockFormat().alignment() ); fillTableFormat( tableFormat, textDocCursor ); while (d->m_tableModel->canFetchMore(QModelIndex())) d->m_tableModel->fetchMore(QModelIndex()); const int rows = d->m_tableModel->rowCount(); const int columns = d->m_tableModel->columnCount(); QTextTable* textTable = textDocCursor.insertTable( rows + headerRowCount, columns + headerColumnCount, tableFormat ); QTextCharFormat tableHeaderFormat; tableHeaderFormat.setBackground( d->m_headerBackground ); //qDebug( "rows = %d, columns = %d", textTable->rows(), textTable->columns() ); if( d->m_horizontalHeaderVisible ) { for( int column = 0; column < columns; column++ ) { QTextTableCell cell = textTable->cellAt( 0, column + headerColumnCount ); Q_ASSERT( cell.isValid() ); cell.setFormat( tableHeaderFormat ); d->fillCellFromHeaderData( column, Qt::Horizontal, cell, textDoc, textTable, builder ); } } if( d->m_verticalHeaderVisible ) { for( int row = 0; row < rows; row++ ) { QTextTableCell cell = textTable->cellAt( row + headerRowCount, 0 ); Q_ASSERT( cell.isValid() ); cell.setFormat( tableHeaderFormat ); d->fillCellFromHeaderData( row, Qt::Vertical, cell, textDoc, textTable, builder ); } } QVector<QBitArray> coveredCells; coveredCells.resize(rows); for( int row = 0; row < rows; row++ ) coveredCells[row].resize(columns); // The normal data for( int row = 0; row < rows; row++ ) { for( int column = 0; column < columns; column++ ) { if (coveredCells[row].testBit(column)) continue; QTextTableCell cell = textTable->cellAt( row + headerRowCount, column + headerColumnCount ); Q_ASSERT( cell.isValid() ); const QSize span = d->fillTableCell( row, column, cell, textDoc, textTable, builder ); if (span.isValid()) { for (int r = row; r < row + span.height() && r < rows; ++r) { for (int c = column; c < column + span.width() && c < columns; ++c) { coveredCells[r].setBit(c); } } } } } textDocCursor.movePosition( QTextCursor::End ); textDocCursor.endEditBlock(); builder.currentDocumentData().registerAutoTable( textTable, this ); }