/**A class to display feature attributes in the print composer*/ class QgsComposerTable: QgsComposerItem { %TypeHeaderCode #include %End public: /*! Controls how headers are horizontally aligned in a table */ enum HeaderHAlignment { FollowColumn, /*!< header uses the same alignment as the column */ HeaderLeft, /*!< align headers left */ HeaderCenter, /*!< align headers to center */ HeaderRight /*!< align headers right */ }; QgsComposerTable( QgsComposition* composition /TransferThis/ ); virtual ~QgsComposerTable(); /** return correct graphics item type. Added in v1.7 */ virtual int type() const; /** \brief Reimplementation of QCanvasItem::paint*/ virtual void paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget ); virtual bool writeXML( QDomElement& elem, QDomDocument & doc ) const = 0; virtual bool readXML( const QDomElement& itemElem, const QDomDocument& doc ) = 0; /**Sets the margin distance between cell borders and their contents. * @param d margin for cell contents * @see lineTextDistance */ void setLineTextDistance( double d ); /**Returns the margin distance between cell borders and their contents. * @returns margin for cell contents * @see setLineTextDistance */ double lineTextDistance() const; /**Sets the font used to draw header text in the table. * @param f font for header cells * @see headerFont * @see setContentFont */ void setHeaderFont( const QFont& f ); /**Returns the font used to draw header text in the table. * @returns font for header cells * @see setHeaderFont * @see contentFont */ QFont headerFont() const; /**Sets the horizontal alignment for table headers * @param alignment Horizontal alignment for table header cells * @note added in 2.3 * @see headerHAlignment */ void setHeaderHAlignment( const HeaderHAlignment alignment ); /**Returns the horizontal alignment for table headers * @returns Horizontal alignment for table header cells * @note added in 2.3 * @see setHeaderHAlignment */ HeaderHAlignment headerHAlignment() const; /**Sets the font used to draw text in table body cells. * @param f font for table cells * @see contentFont * @see setHeaderFont */ void setContentFont( const QFont& f ); /**Returns the font used to draw text in table body cells. * @returns font for table cells * @see setContentFont * @see headerFont */ QFont contentFont() const; /**Sets whether grid lines should be drawn in the table * @param show set to true to show grid lines * @see showGrid * @see setGridStrokeWidth * @see setGridColor */ void setShowGrid( bool show ); /**Returns whether grid lines are drawn in the table * @returns true if grid lines are shown * @see setShowGrid * @see gridStrokeWidth * @see gridColor */ bool showGrid() const; /**Sets the width for grid lines in the table. * @param w grid line width * @see gridStrokeWidth * @see setShowGrid * @see setGridColor */ void setGridStrokeWidth( double w ); /**Returns the width of grid lines in the table. * @returns grid line width * @see setGridStrokeWidth * @see showGrid * @see gridColor */ double gridStrokeWidth() const; /**Sets color used for grid lines in the table. * @param c grid line color * @see gridColor * @see setShowGrid * @see setGridStrokeWidth */ void setGridColor( const QColor& c ); /**Returns the color used for grid lines in the table. * @returns grid line color * @see setGridColor * @see showGrid * @see gridStrokeWidth */ QColor gridColor() const; /**Returns a pointer to the list of QgsComposerTableColumns shown in the table * @returns pointer to list of columns in table * @note added in 2.3 * @see setColumns */ QList* columns(); /**Replaces the columns in the table with a specified list of QgsComposerTableColumns. * @param columns list of QgsComposerTableColumns to show in table * @note added in 2.3 * @see columns */ void setColumns( QList columns ); public slots: /**Refreshes the attributes shown in the table by querying the vector layer for new data. * This also causes the column widths and size of the table to change to accomodate the * new data. * @note added in 2.3 * @see adjustFrameToSize */ virtual void refreshAttributes(); /**Adapts the size of the frame to match the content. First, the optimal width of the columns * is recalculated by checking the maximum width of attributes shown in the table. Then, the * table is resized to fit its contents. This slot utilises the table's attribute cache so * that a re-query of the vector layer is not required. * @note added in 2.3 * @see refreshAttributes */ virtual void adjustFrameToSize(); protected: /**Retrieves feature attributes*/ // virtual bool getFeatureAttributes( QList& attributeMaps ); /**Calculate the maximum width values of the vector attributes*/ // virtual bool calculateMaxColumnWidths( QMap& maxWidthMap, const QList< QMap >& attributeMaps ) const; /**Adapts the size of the item frame to match the content*/ // void adaptItemFrame( const QMap& maxWidthMap, const QList< QMap >& attributeMaps ); /**Draws the horizontal grid lines for the table. * @param p destination painter for grid lines * @param nAttributes number of attribute rows shown in table * @see drawVerticalGridLines */ void drawHorizontalGridLines( QPainter* p, int nAttributes ); // void drawVerticalGridLines( QPainter* p, const QMap& maxWidthMap ); /**Writes common table properties to xml for storage. * @param itemElem an existing QDomElement in which to store the table's properties. * @param doc QDomDocument for the destination xml. * @see tableReadXML * @see writeXML */ bool tableWriteXML( QDomElement& itemElem, QDomDocument& doc ) const; /**Reads the table's common properties from xml. * @param itemElem a QDomElement holding the table's desired properties. * @param doc QDomDocument for the source xml. * @see tableWriteXML * @see readXML */ bool tableReadXML( const QDomElement& itemElem, const QDomDocument& doc ); };