mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-12 00:06:43 -04:00
205 lines
7.4 KiB
C++
205 lines
7.4 KiB
C++
/***************************************************************************
|
|
QgsLayoutTableColumn.h
|
|
------------------
|
|
begin : November 2017
|
|
copyright : (C) 2017 by Nyall Dawson
|
|
email : nyall dot dawson at gmail dot com
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#ifndef QGSLAYOUTTABLECOLUMN_H
|
|
#define QGSLAYOUTTABLECOLUMN_H
|
|
|
|
#include <QObject>
|
|
#include <QDomDocument>
|
|
#include <QDomElement>
|
|
#include <QColor>
|
|
|
|
#include "qgis_core.h"
|
|
#include "qgis_sip.h"
|
|
|
|
/**
|
|
* \ingroup core
|
|
* Stores properties of a column for a QgsLayoutTable. Some properties of aQgsLayoutTableColumn
|
|
* are applicable only in certain contexts. For instance, the attribute and setAttribute methods only
|
|
* have an effect for QgsLayoutItemAttributeTables, and have no effect for QgsLayoutItemTextTables.
|
|
* \since QGIS 3.0
|
|
*/
|
|
class CORE_EXPORT QgsLayoutTableColumn : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
/**
|
|
* Constructor for QgsLayoutTableColumn.
|
|
* \param heading column heading
|
|
*/
|
|
QgsLayoutTableColumn( const QString &heading = QString() );
|
|
|
|
/**
|
|
* Writes the column's properties to xml for storage.
|
|
* \param columnElem an existing QDomElement in which to store the column's properties.
|
|
* \param doc QDomDocument for the destination xml.
|
|
* \see readXml()
|
|
*/
|
|
bool writeXml( QDomElement &columnElem, QDomDocument &doc ) const;
|
|
|
|
/**
|
|
* Reads the column's properties from xml.
|
|
* \param columnElem a QDomElement holding the column's desired properties.
|
|
* \see writeXml()
|
|
*/
|
|
bool readXml( const QDomElement &columnElem );
|
|
|
|
/**
|
|
* Returns the width for the column in mm,
|
|
* or 0 if column width is automatically calculated.
|
|
* \see setWidth()
|
|
*/
|
|
double width() const { return mWidth; }
|
|
|
|
/**
|
|
* Sets the width for a column in mm. Set the \a width to 0 if the column width is to be automatically calculated.
|
|
* \see width()
|
|
*/
|
|
void setWidth( const double width ) { mWidth = width; }
|
|
|
|
/**
|
|
* Returns the heading for a column, which is the value displayed in the column's
|
|
* header cell.
|
|
* \see setHeading()
|
|
*/
|
|
QString heading() const { return mHeading; }
|
|
|
|
/**
|
|
* Sets the \a heading for a column, which is the value displayed in the column's
|
|
* header cell.
|
|
* \see heading()
|
|
*/
|
|
void setHeading( const QString &heading ) { mHeading = heading; }
|
|
|
|
/**
|
|
* Returns the horizontal alignment for a column, which controls the alignment
|
|
* used for drawing column values within cells.
|
|
* \see setHAlignment()
|
|
* \see vAlignment()
|
|
*/
|
|
Qt::AlignmentFlag hAlignment() const { return mHAlignment; }
|
|
|
|
/**
|
|
* Sets the horizontal \a alignment for a column, which controls the alignment
|
|
* used for drawing column values within cells.
|
|
* \see hAlignment()
|
|
* \see setVAlignment()
|
|
*/
|
|
void setHAlignment( Qt::AlignmentFlag alignment ) { mHAlignment = alignment; }
|
|
|
|
/**
|
|
* Returns the vertical alignment for a column, which controls the alignment
|
|
* used for drawing column values within cells.
|
|
* \see setVAlignment()
|
|
* \see hAlignment()
|
|
*/
|
|
Qt::AlignmentFlag vAlignment() const { return mVAlignment; }
|
|
|
|
/**
|
|
* Sets the vertical \a alignment for a column, which controls the alignment
|
|
* used for drawing column values within cells.
|
|
* \see vAlignment()
|
|
* \see setHAlignment()
|
|
*/
|
|
void setVAlignment( Qt::AlignmentFlag alignment ) { mVAlignment = alignment; }
|
|
|
|
/**
|
|
* Returns the attribute name or expression used for the column's values. This property
|
|
* is only used when the column is part of a QgsLayoutItemAttributeTable.
|
|
* \note only applicable when used in a QgsLayoutItemAttributeTable
|
|
* \see setAttribute()
|
|
*/
|
|
QString attribute() const { return mAttribute; }
|
|
|
|
/**
|
|
* Sets the \a attribute name or expression used for the column's values. This property
|
|
* is only used when the column is part of a QgsLayoutItemAttributeTable.
|
|
* \note only applicable when used in a QgsLayoutItemAttributeTable
|
|
* \see attribute()
|
|
*/
|
|
void setAttribute( const QString &attribute ) { mAttribute = attribute; }
|
|
|
|
/**
|
|
* Returns the sort order for the column. This property is only used when the column
|
|
* is part of a QgsLayoutItemAttributeTable and when sortByRank is > 0.
|
|
* \note only applicable when used in a QgsLayoutItemAttributeTable
|
|
* \see setSortOrder()
|
|
* \see sortByRank()
|
|
*/
|
|
Qt::SortOrder sortOrder() const { return mSortOrder; }
|
|
|
|
/**
|
|
* Sets the sort \a order for the column. This property is only used when the column
|
|
* is part of a QgsLayoutItemAttributeTable and when sortByRank() is > 0.
|
|
* \note only applicable when used in a QgsLayoutItemAttributeTable
|
|
* \see sortOrder()
|
|
* \see setSortByRank()
|
|
*/
|
|
void setSortOrder( Qt::SortOrder order ) { mSortOrder = order; }
|
|
|
|
/**
|
|
* Returns the sort rank for the column. If the sort rank is > 0 then the column
|
|
* will be sorted in the table. The sort rank specifies the priority given to the
|
|
* column when the table is sorted by multiple columns, with lower sort ranks
|
|
* having higher priority. This property is only used when the column
|
|
* is part of a QgsLayoutItemAttributeTable.
|
|
*
|
|
* If sort rank is <= 0 then the column is not being sorted.
|
|
*
|
|
* \note only applicable when used in a QgsLayoutItemAttributeTable
|
|
* \see setSortByRank()
|
|
* \see sortOrder()
|
|
*/
|
|
int sortByRank() const { return mSortByRank; }
|
|
|
|
/**
|
|
* Sets the sort \a rank for the column. If the sort rank is > 0 then the column
|
|
* will be sorted in the table. The sort rank specifies the priority given to the
|
|
* column when the table is sorted by multiple columns, with lower sort ranks
|
|
* having higher priority. This property is only used when the column
|
|
* is part of a QgsComposerAttributeTable.
|
|
* If the sort \a rank is <= 0 then the column is not being sorted.
|
|
*
|
|
* \note only applicable when used in a QgsLayoutItemAttributeTable
|
|
* \see sortByRank()
|
|
* \see setSortOrder()
|
|
*/
|
|
void setSortByRank( int rank ) { mSortByRank = rank; }
|
|
|
|
/**
|
|
* Creates a duplicate column which is a deep copy of this column.
|
|
* \returns a new QgsLayoutTableColumn with same properties as this column.
|
|
*/
|
|
QgsLayoutTableColumn *clone() SIP_FACTORY;
|
|
|
|
private:
|
|
|
|
QColor mBackgroundColor = Qt::transparent; //currently unused
|
|
Qt::AlignmentFlag mHAlignment = Qt::AlignLeft;
|
|
Qt::AlignmentFlag mVAlignment = Qt::AlignVCenter;
|
|
QString mHeading;
|
|
QString mAttribute;
|
|
int mSortByRank = 0;
|
|
Qt::SortOrder mSortOrder = Qt::AscendingOrder;
|
|
double mWidth = 0.0;
|
|
|
|
};
|
|
|
|
#endif //QGSLAYOUTTABLECOLUMN_H
|