Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgstablecell.h 3 : : -------------- 4 : : begin : January 2020 5 : : copyright : (C) 2020 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : #ifndef QGSTABLECELL_H 16 : : #define QGSTABLECELL_H 17 : : 18 : : #include "qgis_core.h" 19 : : #include "qgis_sip.h" 20 : : #include "qgstextformat.h" 21 : : #include <QVariant> 22 : : #include <QColor> 23 : : #include <memory> 24 : : 25 : : class QgsNumericFormat; 26 : : class QgsReadWriteContext; 27 : : 28 : : /** 29 : : * \ingroup core 30 : : * \class QgsTableCell 31 : : * \brief Encapsulates the contents and formatting of a single table cell. 32 : : * 33 : : * \since QGIS 3.12 34 : : */ 35 : : class CORE_EXPORT QgsTableCell 36 : : { 37 : : 38 : : public: 39 : : 40 : : /** 41 : : * Constructor for QgsTableCell, with the specified \a content. 42 : : */ 43 : : QgsTableCell( const QVariant &content = QVariant() ); 44 : : 45 : : //! Copy constructor 46 : : QgsTableCell( const QgsTableCell &other ); 47 : : 48 : : ~QgsTableCell(); 49 : : 50 : : QgsTableCell &operator=( const QgsTableCell &other ); 51 : : 52 : : /** 53 : : * Returns the cell's content. 54 : : * 55 : : * \see setContent() 56 : : */ 57 : 0 : QVariant content() const { return mContent; } 58 : : 59 : : /** 60 : : * Sets the cell's \a content. 61 : : * 62 : : * \see content() 63 : : */ 64 : : void setContent( const QVariant &content ) { mContent = content; } 65 : : 66 : : /** 67 : : * Returns the cell's background color, or an invalid color if a default color should be used for the background. 68 : : * 69 : : * \see setBackgroundColor() 70 : : */ 71 : 0 : QColor backgroundColor() const { return mBackgroundColor; } 72 : : 73 : : /** 74 : : * Sets the cell's background \a color. 75 : : * 76 : : * Set an invalid \a color if a default color should be used for the background. 77 : : * 78 : : * \see backgroundColor() 79 : : */ 80 : : void setBackgroundColor( const QColor &color ) { mBackgroundColor = color; } 81 : : 82 : : /** 83 : : * Returns the cell's foreground color, or an invalid color if a default color should be used for the foreground. 84 : : * 85 : : * \see setForegroundColor() 86 : : */ 87 : 0 : QColor foregroundColor() const { return mForegroundColor; } 88 : : 89 : : /** 90 : : * Sets the cell's foreground \a color. 91 : : * 92 : : * Set an invalid \a color if a default color should be used for the foreground. 93 : : * 94 : : * \see foregroundColor() 95 : : */ 96 : : void setForegroundColor( const QColor &color ) { mForegroundColor = color; } 97 : : 98 : : /** 99 : : * Returns the cell's text format. 100 : : * 101 : : * \note The text format will only be used if hasTextFormat() returns TRUE. 102 : : * 103 : : * \see setTextFormat() 104 : : * \since QGIS 3.16 105 : : */ 106 : 0 : QgsTextFormat textFormat() const { return mTextFormat; } 107 : : 108 : : /** 109 : : * Sets the cell's text \a format. 110 : : * 111 : : * \note The text format will only be used if hasTextFormat() returns TRUE. 112 : : * 113 : : * \see textFormat() 114 : : * \since QGIS 3.16 115 : : */ 116 : : void setTextFormat( const QgsTextFormat &format ) { mTextFormat = format; } 117 : : 118 : : /** 119 : : * Returns the numeric format used for numbers in the cell, or NULLPTR if no format is set. 120 : : * 121 : : * \see setNumericFormat() 122 : : */ 123 : : const QgsNumericFormat *numericFormat() const; 124 : : 125 : : /** 126 : : * Sets the numeric \a format used for numbers in the cell, or NULLPTR if no specific format is set. 127 : : * 128 : : * Ownership of \a format is transferred to the cell. 129 : : * 130 : : * \see numericFormat() 131 : : */ 132 : : void setNumericFormat( QgsNumericFormat *format SIP_TRANSFER ); 133 : : 134 : : /** 135 : : * Returns the horizontal alignment for text in the cell. 136 : : * 137 : : * \see setHorizontalAlignment() 138 : : * \see verticalAlignment() 139 : : * \since QGIS 3.16 140 : : */ 141 : : Qt::Alignment horizontalAlignment() const; 142 : : 143 : : /** 144 : : * Sets the horizontal \a alignment for text in the cell. 145 : : * 146 : : * \see horizontalAlignment() 147 : : * \see setVerticalAlignment() 148 : : * \since QGIS 3.16 149 : : */ 150 : : void setHorizontalAlignment( Qt::Alignment alignment ); 151 : : 152 : : /** 153 : : * Returns the vertical alignment for text in the cell. 154 : : * 155 : : * \see setVerticalAlignment() 156 : : * \see horizontalAlignment() 157 : : * \since QGIS 3.16 158 : : */ 159 : : Qt::Alignment verticalAlignment() const; 160 : : 161 : : /** 162 : : * Sets the vertical \a alignment for text in the cell. 163 : : * 164 : : * \see verticalAlignment() 165 : : * \see setHorizontalAlignment() 166 : : * \since QGIS 3.16 167 : : */ 168 : : void setVerticalAlignment( Qt::Alignment alignment ); 169 : : 170 : : /** 171 : : * Returns the properties of the cell. 172 : : * 173 : : * \see setProperties() 174 : : */ 175 : : QVariantMap properties( const QgsReadWriteContext &context ) const; 176 : : 177 : : /** 178 : : * Sets the \a properties for the cell. 179 : : * 180 : : * \see properties() 181 : : */ 182 : : void setProperties( const QVariantMap &properties, const QgsReadWriteContext &context ); 183 : : 184 : : 185 : : #ifdef SIP_RUN 186 : : SIP_PYOBJECT __repr__(); 187 : : % MethodCode 188 : : QString str = QStringLiteral( "<QgsTableCell: %1>" ).arg( sipCpp->content().toString() ); 189 : : sipRes = PyUnicode_FromString( str.toUtf8().constData() ); 190 : : % End 191 : : #endif 192 : : 193 : : private: 194 : : 195 : : QVariant mContent; 196 : : QColor mBackgroundColor; 197 : : QColor mForegroundColor; 198 : : QgsTextFormat mTextFormat; 199 : : std::unique_ptr< QgsNumericFormat > mFormat; 200 : : 201 : : Qt::Alignment mHAlign = Qt::AlignLeft; 202 : : Qt::Alignment mVAlign = Qt::AlignVCenter; 203 : : 204 : : }; 205 : : 206 : : /** 207 : : * A row of table cells 208 : : * 209 : : * \since QGIS 3.12 210 : : */ 211 : : typedef QVector<QgsTableCell> QgsTableRow; 212 : : 213 : : #ifndef SIP_RUN 214 : : 215 : : /** 216 : : * A set of table rows. 217 : : * 218 : : * \since QGIS 3.12 219 : : */ 220 : : typedef QVector<QgsTableRow> QgsTableContents; 221 : : #else 222 : : 223 : : /** 224 : : * A set of table rows. 225 : : * 226 : : * \since QGIS 3.12 227 : : */ 228 : : typedef QVector<QVector<QgsTableRow>> QgsTableContents; 229 : : #endif 230 : : 231 : : 232 : : #endif // QGSTABLECELL_H