QGIS API Documentation  2.10.1-Pisa
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
qgscomposertablev2.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscomposertablev2.h
3  ------------------
4  begin : July 2014
5  copyright : (C) 2014 by Nyall Dawson, Marco Hugentobler
6  email : nyall dot dawson at gmail dot com
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 QGSCOMPOSERTABLEV2_H
19 #define QGSCOMPOSERTABLEV2_H
20 
21 #include "qgscomposermultiframe.h"
22 #include <QFont>
23 #include <QColor>
24 #include <QPair>
25 
27 
33 
39 
44 
49 class CORE_EXPORT QgsComposerTableV2: public QgsComposerMultiFrame
50 {
51  Q_OBJECT
52 
53  public:
54 
58  {
62  HeaderRight
63  };
64 
68  {
69  FirstFrame = 0,
71  NoHeaders
72  };
73 
77  {
78  HeadersOnly = 0,
80  ShowMessage
81  };
82 
83  QgsComposerTableV2( QgsComposition* composition, bool createUndoCommands );
85 
86  virtual ~QgsComposerTableV2();
87 
92  void setCellMargin( const double margin );
93 
98  double cellMargin() const { return mCellMargin; }
99 
104  void setEmptyTableBehaviour( const EmptyTableMode mode );
105 
111  EmptyTableMode emptyTableBehaviour() const { return mEmptyTableMode; }
112 
120  void setEmptyTableMessage( const QString message );
121 
129  QString emptyTableMessage() const { return mEmptyTableMessage; }
130 
135  void setShowEmptyRows( const bool showEmpty );
136 
141  bool showEmptyRows() const { return mShowEmptyRows; }
142 
148  void setHeaderFont( const QFont& font );
149 
155  QFont headerFont() const { return mHeaderFont; }
156 
163  void setHeaderFontColor( const QColor& color );
164 
171  QColor headerFontColor() const { return mHeaderFontColor; }
172 
177  void setHeaderHAlignment( const HeaderHAlignment alignment );
178 
183  HeaderHAlignment headerHAlignment() const { return mHeaderHAlignment; }
184 
190  void setHeaderMode( const HeaderMode mode );
191 
197  HeaderMode headerMode() const { return mHeaderMode; }
198 
204  void setContentFont( const QFont& font );
205 
211  QFont contentFont() const { return mContentFont; }
212 
219  void setContentFontColor( const QColor& color );
220 
227  QColor contentFontColor() const { return mContentFontColor; }
228 
235  void setShowGrid( const bool showGrid );
236 
243  bool showGrid() const { return mShowGrid; }
244 
251  void setGridStrokeWidth( const double width );
252 
259  double gridStrokeWidth() const { return mGridStrokeWidth; }
260 
267  void setGridColor( const QColor& color );
268 
275  QColor gridColor() const { return mGridColor; }
276 
282  void setBackgroundColor( const QColor& color );
283 
289  QColor backgroundColor() const { return mBackgroundColor; }
290 
295  QgsComposerTableColumns* columns() { return &mColumns; }
296 
301  void setColumns( QgsComposerTableColumns columns );
302 
308  virtual QMap<int, QString> headerLabels() const;
309 
315  virtual bool getTableContents( QgsComposerTableContents &contents ) = 0;
316 
320  QgsComposerTableContents* contents() { return &mTableContents; }
321 
322  //reimplemented to return fixed table width
323  virtual QSizeF fixedFrameSize( const int frameIndex = -1 ) const override;
324 
325  //reimplemented to return min frame height
326  virtual QSizeF minFrameSize( const int frameIndex = -1 ) const override;
327 
328  virtual bool writeXML( QDomElement& elem, QDomDocument & doc, bool ignoreFrames = false ) const override;
329  virtual bool readXML( const QDomElement& itemElem, const QDomDocument& doc, bool ignoreFrames = false ) override;
330  virtual QSizeF totalSize() const override;
331  virtual void render( QPainter* p, const QRectF& renderExtent, const int frameIndex ) override;
332 
333  public slots:
334 
340  virtual void refreshAttributes();
341 
342  void recalculateFrameSizes() override;
343 
344  protected:
346  double mCellMargin;
347 
350 
353 
356 
359 
362 
365 
368 
371 
374 
376  bool mShowGrid;
377 
380 
383 
386 
389 
392 
395 
397 
400  virtual bool calculateMaxColumnWidths();
401 
406  //not const, as needs to call calculateMaxColumnWidths()
407  double totalWidth();
408 
413  double totalHeight() const;
414 
419  int rowsVisible( const int frameIndex ) const;
420 
427  int rowsVisible( const double frameHeight, const bool includeHeader ) const;
428 
435  QPair<int, int> rowRange( const QRectF &extent, const int frameIndex ) const;
436 
443  void drawHorizontalGridLines( QPainter* painter, const int rows, const bool drawHeaderLines ) const;
444 
457  void drawVerticalGridLines( QPainter* painter, const QMap<int, double>& maxWidthMap, const int numberRows, const bool hasHeader, const bool mergeCells = false ) const;
458 
461  void recalculateTableSize();
462 
468  bool contentsContainsRow( const QgsComposerTableContents &contents, const QgsComposerTableRow &row ) const;
469 
470  friend class TestQgsComposerTableV2;
471 };
472 
473 #endif // QGSCOMPOSERTABLEV2_H
QColor mContentFontColor
Table contents font color.
QFont mContentFont
Table contents font.
virtual void recalculateFrameSizes()
Recalculates the portion of the multiframe item which is shown in each of it's component frames...
QColor backgroundColor() const
Returns the color used for the background of the table.
bool showEmptyRows() const
Returns whether empty rows are drawn in the table.
bool mShowGrid
True if grid should be shown.
QColor gridColor() const
Returns the color used for grid lines in the table.
double mGridStrokeWidth
Width of grid lines.
QFont headerFont() const
Returns the font used to draw header text in the table.
QFont mHeaderFont
Header font.
virtual QSizeF totalSize() const =0
Returns the total size of the multiframe's content.
EmptyTableMode mEmptyTableMode
Behaviour for empty tables.
QColor mHeaderFontColor
Header font color.
double mCellMargin
Margin between cell borders and cell text.
HeaderMode mHeaderMode
Header display mode.
QList< QgsComposerTableRow > QgsComposerTableContents
List of QgsComposerTableRows, representing rows and column cell contents for a QgsComposerTable.
bool mShowEmptyRows
True if empty rows should be shown in the table.
double gridStrokeWidth() const
Returns the width of grid lines in the table.
double cellMargin() const
Returns the margin distance between cell borders and their contents.
Abstract base class for composer items with the ability to distribute the content to several frames (...
HeaderHAlignment mHeaderHAlignment
Alignment for table headers.
A class to display a table in the print composer, and allow the table to span over multiple frames...
QMap< int, double > mMaxColumnWidthMap
Map of maximum width for each column.
QColor contentFontColor() const
Returns the color used to draw text in table body cells.
Stores properties of a column in a QgsComposerTable.
QString emptyTableMessage() const
Returns the message for empty tables with no content rows.
Graphics scene for map printing.
virtual QSizeF minFrameSize(const int frameIndex=-1) const
Returns the minimum size for a frames, if desired.
QColor mGridColor
Color for grid lines.
QFont contentFont() const
Returns the font used to draw text in table body cells.
QgsComposerTableContents mTableContents
Contents to show in table.
QString mEmptyTableMessage
String to show in empty tables.
QgsComposerTableColumns mColumns
Columns to show in table.
virtual bool writeXML(QDomElement &elem, QDomDocument &doc, bool ignoreFrames=false) const =0
Stores state information about multiframe in DOM element.
virtual Q_DECL_DEPRECATED void render(QPainter *p, const QRectF &renderExtent)
Renders a portion of the multiframe's content into a painter.
QList< QgsComposerTableColumn * > QgsComposerTableColumns
List of column definitions for a QgsComposerTable.
virtual QSizeF fixedFrameSize(const int frameIndex=-1) const
Returns the fixed size for a frame, if desired.
QgsComposerTableColumns * columns()
Returns a pointer to the list of QgsComposerTableColumns shown in the table.
bool showGrid() const
Returns whether grid lines are drawn in the table.
virtual bool readXML(const QDomElement &itemElem, const QDomDocument &doc, bool ignoreFrames=false)=0
Reads multiframe state information from a DOM element.
HeaderMode headerMode() const
Returns the display mode for headers in the table.
QList< QVariant > QgsComposerTableRow
List of QVariants, representing a the contents of a single row in a QgsComposerTable.
QColor mBackgroundColor
Color for table background.
QgsComposerTableContents * contents()
Returns the current contents of the table.
HeaderHAlignment headerHAlignment() const
Returns the horizontal alignment for table headers.
QColor headerFontColor() const
Returns the color used to draw header text in the table.
EmptyTableMode emptyTableBehaviour() const
Returns the behaviour mode for empty tables.