/**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 the text used in the column headers for the table. * @returns QMap of int to QString, where the int is the column index (starting at 0), * and the string is the text to use for the column's header * @note added in 2.3 * @note not available in python bindings */ // virtual QMap headerLabels() const; //TODO - make this more generic for next API break, eg rename as getRowValues, use QStringList rather than //QgsAttributeMap /**Fetches the text used for the rows of the table. * @returns true if attribute text was successfully retrieved. * @param attributeMaps QList of QgsAttributeMap to store retrieved row data in * @note not available in python bindings */ // virtual bool getFeatureAttributes( QList& attributeMaps ) { Q_UNUSED( attributeMaps ); return false; } /**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 accommodate 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 ); /**Calculates the maximum width of text shown in columns. * @param maxWidthMap QMap of int to double in which to store the maximum widths. The int will be filled * with the column number and the double with the maximum width of text present in the column. * @param attributeMaps list of attribute values for each row shown in the table * @note not available in python bindings * @see adaptItemFrame */ // virtual bool calculateMaxColumnWidths( QMap& maxWidthMap, const QList& attributeMaps ) const; /**Adapts the size of the item frame to match the table's content. * @param maxWidthMap QMap of int to double, where the int contains the column number and the double is the * maximum width of text present in the column. * @param attributeMaps list of attribute values for each row shown in the table * @note not available in python bindings * @see calculateMaxColumnWidths */ // void adaptItemFrame( const QMap& maxWidthMap, const QList& 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 ); /**Draws the vertical grid lines for the table. * @param p destination painter for grid lines * @param maxWidthMap QMap of int to double, where the int contains the column number and the double is the * maximum width of text present in the column. * @note not available in python bindings * @see drawVerticalGridLines * @see calculateMaxColumnWidths */ // 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 ); };