QGIS API Documentation  2.9.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
qgscomposertable.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscomposertable.h
3  ------------------
4  begin : January 2010
5  copyright : (C) 2010 by Marco Hugentobler
6  email : marco at hugis dot net
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
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. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSCOMPOSERTABLE_H
19 #define QGSCOMPOSERTABLE_H
20 
21 #include "qgscomposeritem.h"
22 #include "qgscomposition.h"
23 #include "qgsfeature.h"
24 #include <QSet>
25 #include <QObject>
26 
28 
30 class CORE_EXPORT QgsComposerTable: public QgsComposerItem
31 {
32  Q_OBJECT
33 
34  public:
35 
39  {
43  HeaderRight
44  };
45 
46  QgsComposerTable( QgsComposition* composition );
47  virtual ~QgsComposerTable();
48 
50  virtual int type() const override { return ComposerTable; }
51 
53  virtual void paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget ) override;
54 
55  virtual bool writeXML( QDomElement& elem, QDomDocument & doc ) const override = 0;
56  virtual bool readXML( const QDomElement& itemElem, const QDomDocument& doc ) override = 0;
57 
62  void setLineTextDistance( double d );
63 
68  double lineTextDistance() const { return mLineTextDistance; }
69 
75  void setHeaderFont( const QFont& f );
76 
82  QFont headerFont() const { return mHeaderFont; }
83 
91  void setHeaderFontColor( const QColor& color );
92 
100  QColor headerFontColor() const { return mHeaderFontColor; }
101 
107  void setHeaderHAlignment( const HeaderHAlignment alignment );
108 
114  HeaderHAlignment headerHAlignment() const { return mHeaderHAlignment; }
115 
121  void setContentFont( const QFont& f );
122 
128  QFont contentFont() const { return mContentFont; }
129 
137  void setContentFontColor( const QColor& color );
138 
146  QColor contentFontColor() const { return mContentFontColor; }
147 
154  void setShowGrid( bool show );
155 
162  bool showGrid() const { return mShowGrid; }
163 
170  void setGridStrokeWidth( double w );
171 
178  double gridStrokeWidth() const { return mGridStrokeWidth; }
179 
186  void setGridColor( const QColor& c ) { mGridColor = c; }
187 
194  QColor gridColor() const { return mGridColor; }
195 
202  virtual QMap<int, QString> headerLabels() const;
203 
204  //TODO - make this more generic for next API break, eg rename as getRowValues, use QStringList rather than
205  //QgsAttributeMap
206 
212  virtual bool getFeatureAttributes( QList<QgsAttributeMap>& attributeMaps ) { Q_UNUSED( attributeMaps ); return false; }
213 
219  QList<QgsComposerTableColumn*>* columns() { return &mColumns; }
220 
226  void setColumns( QList<QgsComposerTableColumn*> columns );
227 
228  public slots:
229 
236  virtual void refreshAttributes();
237 
245  virtual void adjustFrameToSize();
246 
247  protected:
250 
251  QFont mHeaderFont;
255 
257 
258  bool mShowGrid;
260  QColor mGridColor;
261 
262  QList<QgsAttributeMap> mAttributeMaps;
263  QMap<int, double> mMaxColumnWidthMap;
264 
265  QList<QgsComposerTableColumn*> mColumns;
266 
274  virtual bool calculateMaxColumnWidths( QMap<int, double>& maxWidthMap, const QList<QgsAttributeMap>& attributeMaps ) const;
275 
283  void adaptItemFrame( const QMap<int, double>& maxWidthMap, const QList<QgsAttributeMap>& attributeMaps );
284 
290  void drawHorizontalGridLines( QPainter* p, int nAttributes );
291 
300  void drawVerticalGridLines( QPainter* p, const QMap<int, double>& maxWidthMap );
301 
308  bool tableWriteXML( QDomElement& itemElem, QDomDocument& doc ) const;
309 
316  bool tableReadXML( const QDomElement& itemElem, const QDomDocument& doc );
317 };
318 
319 #endif // QGSCOMPOSERTABLE_H