diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kugar/lib/mreportengine.h | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kugar/lib/mreportengine.h')
-rw-r--r-- | kugar/lib/mreportengine.h | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/kugar/lib/mreportengine.h b/kugar/lib/mreportengine.h new file mode 100644 index 00000000..c8280c1d --- /dev/null +++ b/kugar/lib/mreportengine.h @@ -0,0 +1,210 @@ +/*************************************************************************** + mreportengine.h - Kugar report engine + ------------------- + begin : Sun Aug 15 1999 + copyright : (C) 1999 by Mutiny Bay Software + email : info@mutinybaysoftware.com + copyright : (C) 2002 Alexander Dymo + email : cloudtemple@mksat.net +***************************************************************************/ + +#ifndef MREPORTENGINE_H +#define MREPORTENGINE_H + +#include <qobject.h> +#include <qpicture.h> +#include <qpaintdevicemetrics.h> +#include <qsize.h> +#include <qmemarray.h> +#include <qdom.h> +#include <qguardedptr.h> + +#include "mlineobject.h" +#include "mlabelobject.h" +#include "mspecialobject.h" +#include "mfieldobject.h" +#include "mreportsection.h" +#include "mreportdetail.h" +#include "mpagecollection.h" + +/**Kugar report engine + *@author Mutiny Bay Software + */ + +namespace Kugar +{ + +class MReportEngine : public QObject +{ + Q_OBJECT + +public: + enum PageOrientation { Portrait, Landscape }; + + enum PageSize { + A4, B5, Letter, Legal, Executive, + A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, + B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, + DLE, Folio, Ledger, Tabloid, NPageSize + }; + + MReportEngine(); + MReportEngine( const MReportEngine& mReportEngine ); + MReportEngine operator=( const MReportEngine& mReportEngine ); + virtual ~MReportEngine(); + + bool setReportData( const QString & ); + bool setReportData( QIODevice * ); + bool setReportData( const QDomDocument& ); + bool setReportTemplate( const QString & ); + bool setReportTemplate( QIODevice * ); + int getRenderSteps() + { + return records.length() / 2; + } + MPageCollection* renderReport(); + + void addRef(); + void removeRef(); +public slots: + void slotCancelRendering(); + +signals: + void signalRenderStatus( int ); + void preferedTemplate( const QString & ); + +protected: + void recalcDimensions(); + void recalcAttribute( const QString& name, QDomNamedNodeMap attributes ); + +private: + + MPageCollection *m_pageCollection; + bool m_needRegeneration; + /** Report data document */ + QDomDocument rd; + /** Report template document */ + QDomDocument rt; + + /** Report painter */ + QPainter p; + + /** Report page size */ + int pageSize; + /** Report page orientation */ + int pageOrientation; + /** Report top margin */ + int topMargin; + /** Report top margin */ + int bottomMargin; + /** Report top margin */ + int leftMargin; + /** Report top margin */ + int rightMargin; + + /** Report page width */ + int pageWidth; + /** Report page height */ + int pageHeight; + + float widthDelta; + float heightDelta; + + /** Report header */ + MReportSection rHeader; + /** Page header */ + MReportSection pHeader; + /** Detail headers */ + QPtrList<MReportSection> dHeaders; + /** Detail sections */ + QPtrList<MReportDetail> details; + /** Detail footers */ + QPtrList<MReportSection> dFooters; + /** Page footer */ + MReportSection pFooter; + /** Report footer */ + MReportSection rFooter; + + /** Stores the combined heights of the detail levels */ + int heightOfDetails; + + /** Current y position on page */ + int currY; + /** Current height of page excluding margins */ + int currHeight; + /** Current page number */ + int currPage; + /** Current report date */ + QDate currDate; + + /** Grand total array */ + QPtrList<QMemArray<double> > grandTotal; + + /** Cancel rendering flag */ + bool cancelRender; + int m_refCount; +private: + // The set of records being rendered. + QDomNodeList records; + /** Clears report formatting */ + void clearFormatting(); + /** Starts a new page of the report */ + void startPage( MPageCollection* pages ); + /** Finishes the current page of the report */ + void endPage( MPageCollection* pages ); + /** Finishes the current page and adds a new page */ + void newPage( MPageCollection* pages ); + /** Draws the report header object to the current page */ + void drawReportHeader( MPageCollection* pages ); + /** Draws the page header to the current page */ + void drawPageHeader( MPageCollection* pages ); + /** Draws the page footer to the current page */ + void drawPageFooter( MPageCollection* pages ); + /** Draws the report footer to the current page */ + void drawReportFooter( MPageCollection* pages ); + + /** Gets the metrics for the selected page size */ + QSize getPageMetrics( int size, int orientation ); + + void initData(); + void initTemplate(); + + /** Sets the main layout attributes for the report */ + void setReportAttributes( QDomNode* report ); + + int scaleDeltaWidth( int width ) const; + int scaleDeltaHeight( int width ) const; + + /** Sets the layout attributes for the given report section */ + void setSectionAttributes( MReportSection* section, QDomNode* report ); + /** Sets the layout attributes for the detail headers and footers */ + void setDetMiscAttributes( MReportSection* section, QDomNode* report ); + /** Sets the layout attributes for the detail section */ + void setDetailAttributes( QDomNode* report ); + /** Sets a line's layout attributes */ + void setLineAttributes( MLineObject* line, QDomNamedNodeMap* attr ); + /** Sets a label's layout attributes */ + void setLabelAttributes( MLabelObject* label, QDomNamedNodeMap* attr ); + /** Sets a special field's layout attributes */ + void setSpecialAttributes( MSpecialObject* field, QDomNamedNodeMap* attr ); + /** Sets a field's layout attributes */ + void setFieldAttributes( MFieldObject* field, QDomNamedNodeMap* attr ); + /** Sets a calculated field's layout attributes */ + void setCalculatedFieldAttributes( MCalcObject* field, QDomNamedNodeMap* attr ); + + /** Copies member data from one object to another. + * Used by the copy constructor and assignment operator + */ + void copy( const MReportEngine* mReportEngine ); + + /** Finds the detail header object, which is apropriate for the given level */ + MReportSection *findDetailHeader( int level ); + /** Finds the detail object, which is apropriate for the given level */ + MReportDetail *findDetail( int level ); + /** Finds the detail footer object, which is apropriate for the given level */ + MReportSection *findDetailFooter( int level ); +}; + +} + +#endif |