00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef QGSCOMPOSERTABLE_H
00019 #define QGSCOMPOSERTABLE_H
00020
00021 #include "qgscomposeritem.h"
00022 #include "qgsfeature.h"
00023 #include <QSet>
00024
00025
00026
00028 class CORE_EXPORT QgsComposerTable: public QgsComposerItem
00029 {
00030 public:
00031 QgsComposerTable( QgsComposition* composition );
00032 virtual ~QgsComposerTable();
00033
00035 virtual void paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget );
00036
00037 virtual bool writeXML( QDomElement& elem, QDomDocument & doc ) const = 0;
00038 virtual bool readXML( const QDomElement& itemElem, const QDomDocument& doc ) = 0;
00039
00040 void setLineTextDistance( double d ) { mLineTextDistance = d; }
00041 double lineTextDistance() const { return mLineTextDistance; }
00042
00043 void setHeaderFont( const QFont& f ) { mHeaderFont = f;}
00044 QFont headerFont() const { return mHeaderFont; }
00045
00046 void setContentFont( const QFont& f ) { mContentFont = f; }
00047 QFont contentFont() const { return mContentFont; }
00048
00049 void setShowGrid( bool show ) { mShowGrid = show;}
00050 bool showGrid() const { return mShowGrid; }
00051
00052 void setGridStrokeWidth( double w ) { mGridStrokeWidth = w; }
00053 double gridStrokeWidth() const { return mGridStrokeWidth; }
00054
00055 void setGridColor( const QColor& c ) { mGridColor = c; }
00056 QColor gridColor() const { return mGridColor; }
00057
00060 void adjustFrameToSize();
00061
00062 protected:
00064 double mLineTextDistance;
00065
00066 QFont mHeaderFont;
00067 QFont mContentFont;
00068
00069 bool mShowGrid;
00070 double mGridStrokeWidth;
00071 QColor mGridColor;
00072
00074 virtual bool getFeatureAttributes( QList<QgsAttributeMap>& attributes ) = 0;
00075 virtual QMap<int, QString> getHeaderLabels() const = 0;
00077 virtual bool calculateMaxColumnWidths( QMap<int, double>& maxWidthMap, const QList<QgsAttributeMap>& attributeList ) const;
00079 void adaptItemFrame( const QMap<int, double>& maxWidthMap, const QList<QgsAttributeMap>& attributeList );
00080 void drawHorizontalGridLines( QPainter* p, int nAttributes );
00081 void drawVerticalGridLines( QPainter* p, const QMap<int, double>& maxWidthMap );
00082
00083 bool tableWriteXML( QDomElement& itemElem, QDomDocument& doc ) const;
00084 bool tableReadXML( const QDomElement& itemElem, const QDomDocument& doc );
00085 };
00086
00087 #endif // QGSCOMPOSERTABLE_H