1
/***************************************************************************
5
copyright : (C) 2010 by Marco Hugentobler
6
email : marco at hugis dot net
7
***************************************************************************/
9
/***************************************************************************
11
* This program is free software; you can redistribute it and/or modify *
12
* it under the terms of the GNU General Public License as published by *
13
* the Free Software Foundation; either version 2 of the License, or *
14
* (at your option) any later version. *
16
***************************************************************************/
18
#ifndef QGSCOMPOSERTABLE_H
19
#define QGSCOMPOSERTABLE_H
21
#include "qgscomposeritem.h"
22
#include "qgsfeature.h"
27
/**A class to display feature attributes in the print composer*/
28
class CORE_EXPORT QgsComposerTable: public QgsComposerItem
31
QgsComposerTable( QgsComposition* composition );
32
virtual ~QgsComposerTable();
34
/** return correct graphics item type. Added in v1.7 */
35
virtual int type() const { return ComposerTable; }
37
/** \brief Reimplementation of QCanvasItem::paint*/
38
virtual void paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget );
40
virtual bool writeXML( QDomElement& elem, QDomDocument & doc ) const = 0;
41
virtual bool readXML( const QDomElement& itemElem, const QDomDocument& doc ) = 0;
43
void setLineTextDistance( double d ) { mLineTextDistance = d; }
44
double lineTextDistance() const { return mLineTextDistance; }
46
void setHeaderFont( const QFont& f ) { mHeaderFont = f;}
47
QFont headerFont() const { return mHeaderFont; }
49
void setContentFont( const QFont& f ) { mContentFont = f; }
50
QFont contentFont() const { return mContentFont; }
52
void setShowGrid( bool show ) { mShowGrid = show;}
53
bool showGrid() const { return mShowGrid; }
55
void setGridStrokeWidth( double w ) { mGridStrokeWidth = w; }
56
double gridStrokeWidth() const { return mGridStrokeWidth; }
58
void setGridColor( const QColor& c ) { mGridColor = c; }
59
QColor gridColor() const { return mGridColor; }
61
/**Adapts the size of the frame to match the content. This is normally done in the paint method, but sometimes \
62
it needs to be done before the first render*/
63
void adjustFrameToSize();
66
/**Distance between table lines and text*/
67
double mLineTextDistance;
73
double mGridStrokeWidth;
76
/**Retrieves feature attributes*/
77
virtual bool getFeatureAttributes( QList<QgsAttributeMap>& attributes ) {return false;} //= 0;
78
virtual QMap<int, QString> getHeaderLabels() const { return QMap<int, QString>(); } //= 0;
79
/**Calculate the maximum width values of the vector attributes*/
80
virtual bool calculateMaxColumnWidths( QMap<int, double>& maxWidthMap, const QList<QgsAttributeMap>& attributeList ) const;
81
/**Adapts the size of the item frame to match the content*/
82
void adaptItemFrame( const QMap<int, double>& maxWidthMap, const QList<QgsAttributeMap>& attributeList );
83
void drawHorizontalGridLines( QPainter* p, int nAttributes );
84
void drawVerticalGridLines( QPainter* p, const QMap<int, double>& maxWidthMap );
86
bool tableWriteXML( QDomElement& itemElem, QDomDocument& doc ) const;
87
bool tableReadXML( const QDomElement& itemElem, const QDomDocument& doc );
90
#endif // QGSCOMPOSERTABLE_H