37    return defaultDateTime;
 
 
   85  return prop.
valueAsInt( context, defaultValue, ok );
 
 
   96  return prop.
valueAsBool( context, defaultValue, ok );
 
 
  101  QVariant collection = 
toVariant( definitions );
 
  102  QDomDocument doc = collectionElem.ownerDocument();
 
  104  collectionElem.appendChild( element );
 
 
  111  return loadVariant( collection.toMap(), definitions );
 
 
  126  , mProperties( other.mProperties )
 
  127  , mDirty( other.mDirty )
 
  128  , mHasActiveProperties( other.mHasActiveProperties )
 
  129  , mHasDynamicProperties( other.mHasDynamicProperties )
 
  130  , mCount( other.mCount )
 
  132  mProperties.detach();
 
 
  137  QgsAbstractPropertyCollection::operator=( other );
 
  138  mProperties = other.mProperties;
 
  139  mProperties.detach();
 
  140  mDirty = other.mDirty;
 
  141  mHasActiveProperties = other.mHasActiveProperties;
 
  142  mHasDynamicProperties = other.mHasDynamicProperties;
 
  143  mCount = other.mCount;
 
 
  149  return mProperties == other.mProperties;
 
 
  154  return !( *
this == other );
 
 
  169  QHash<int, QgsProperty>::const_iterator it = mProperties.constBegin();
 
  170  for ( ; it != mProperties.constEnd(); ++it )
 
  173      keys.insert( it.key() );
 
 
  182  mHasActiveProperties = 
false;
 
  183  mHasDynamicProperties = 
false;
 
 
  190    mProperties.insert( key, 
property );
 
  192    mProperties.remove( key );
 
 
  205  if ( mProperties.isEmpty() )
 
  208  auto it = mProperties.constFind( key );
 
  209  if ( it != mProperties.constEnd() )
 
 
  216  if ( mProperties.isEmpty() )
 
  219  return mProperties.value( key );
 
 
  225  return mProperties[ key ];
 
 
  230  if ( mProperties.isEmpty() )
 
  237  return prop.
value( context, defaultValue );
 
 
  243  QHash<int, QgsProperty>::const_iterator it = mProperties.constBegin();
 
  244  for ( ; it != mProperties.constEnd(); ++it )
 
  246    if ( !it.value().isActive() )
 
  249    result = result && it.value().prepare( context );
 
 
  256  QSet< QString > cols;
 
  257  QHash<int, QgsProperty>::const_iterator it = mProperties.constBegin();
 
  258  for ( ; it != mProperties.constEnd(); ++it )
 
  260    if ( !it.value().isActive() )
 
  263    cols.unite( it.value().referencedFields( context, ignoreContext ) );
 
 
  270  if ( mProperties.isEmpty() )
 
  273  auto it = mProperties.constFind( key );
 
  274  if ( it != mProperties.constEnd() )
 
  275    return ( *it ).isActive();
 
 
  279void QgsPropertyCollection::rescan()
 const 
  281  mHasActiveProperties = 
false;
 
  282  mHasDynamicProperties = 
false;
 
  284  if ( !mProperties.isEmpty() )
 
  286    QHash<int, QgsProperty>::const_iterator it = mProperties.constBegin();
 
  287    for ( ; it != mProperties.constEnd(); ++it )
 
  291      if ( it.value().isActive() )
 
  293        mHasActiveProperties = 
true;
 
  296          mHasDynamicProperties = 
true;
 
  309  return mHasActiveProperties;
 
 
  317  return mHasDynamicProperties;
 
 
  322  QVariantMap collection;
 
  324  collection.insert( QStringLiteral( 
"name" ), 
name() );
 
  325  collection.insert( QStringLiteral( 
"type" ), QStringLiteral( 
"collection" ) );
 
  327  QVariantMap properties;
 
  329  QHash<int, QgsProperty>::const_iterator it = mProperties.constBegin();
 
  330  for ( ; it != mProperties.constEnd(); ++it )
 
  334      properties.insert( definitions.value( it.key() ).name(), it.value().toVariant() );
 
  337  collection.insert( QStringLiteral( 
"properties" ), properties );
 
 
  345  QVariantMap collectionMap = collection.toMap();
 
  347  setName( collectionMap.value( QStringLiteral( 
"name" ) ).toString() );
 
  350  QVariantMap properties = collectionMap.value( QStringLiteral( 
"properties" ) ).toMap();
 
  351  for ( 
auto propertyIterator = properties.constBegin(); propertyIterator != properties.constEnd(); ++propertyIterator )
 
  355    QgsPropertiesDefinition::const_iterator it = definitions.constBegin();
 
  356    for ( ; it != definitions.constEnd(); ++it )
 
  358      if ( it->name() == propertyIterator.key() )
 
  370    mProperties.insert( key, prop );
 
  374    mHasActiveProperties = mHasActiveProperties || prop.
isActive();
 
  375    mHasDynamicProperties = mHasDynamicProperties ||
 
 
  418  return mStack.size();
 
 
  423  qDeleteAll( mStack );
 
 
  434  return mStack.value( index );
 
 
  439  return mStack.value( index );
 
 
  444  const auto constMStack = mStack;
 
 
  455  const auto constMStack = mStack;
 
 
  466  const auto constMStack = mStack;
 
 
  477  return static_cast< bool >( 
property( key ) );
 
 
  483  for ( 
int i = mStack.size() - 1; i >= 0; --i )
 
 
  504  return p.
value( context, defaultValue );
 
 
  509  QSet< QString > cols;
 
  510  const auto constMStack = mStack;
 
 
  521  const auto constMStack = mStack;
 
 
  532  const auto constMStack = mStack;
 
 
  542  const auto constMStack = mStack;
 
 
  554  collection.insert( QStringLiteral( 
"type" ), QStringLiteral( 
"stack" ) );
 
  557  QVariantList properties;
 
  559  const auto constMStack = mStack;
 
  562    properties.append( child->toVariant( definitions ) );
 
  565  collection.insert( QStringLiteral( 
"properties" ), properties );
 
 
  574  QVariantMap collectionMap = 
collection.toMap();
 
  576  setName( collectionMap.value( QStringLiteral( 
"name" ) ).toString() );
 
  578  QVariantList properties = collectionMap.value( QStringLiteral( 
"properties" ) ).toList();
 
  580  const auto constProperties = properties;
 
  581  for ( 
const QVariant &
property : constProperties )
 
  585    mStack.append( propertyCollection );
 
 
Abstract base class for QgsPropertyCollection like objects.
 
void setName(const QString &name)
Sets the descriptive name for the property collection.
 
QColor valueAsColor(int key, const QgsExpressionContext &context, const QColor &defaultColor=QColor(), bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as a color.
 
QDateTime valueAsDateTime(int key, const QgsExpressionContext &context, const QDateTime &defaultDateTime=QDateTime(), bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as a datetime.
 
int valueAsInt(int key, const QgsExpressionContext &context, int defaultValue=0, bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as an integer.
 
virtual QgsProperty property(int key) const =0
Returns a matching property from the collection, if one exists.
 
bool valueAsBool(int key, const QgsExpressionContext &context, bool defaultValue=false, bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as an boolean.
 
double valueAsDouble(int key, const QgsExpressionContext &context, double defaultValue=0.0, bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as a double.
 
QgsAbstractPropertyCollection(const QString &name=QString())
Constructor for QgsAbstractPropertyCollection.
 
virtual bool loadVariant(const QVariant &configuration, const QgsPropertiesDefinition &definitions)=0
Loads this property collection from a QVariantMap, wrapped in a QVariant.
 
QString name() const
Returns the descriptive name of the property collection.
 
virtual bool readXml(const QDomElement &collectionElem, const QgsPropertiesDefinition &definitions)
Reads property collection state from an XML element.
 
QString valueAsString(int key, const QgsExpressionContext &context, const QString &defaultString=QString(), bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as a string.
 
virtual bool writeXml(QDomElement &collectionElem, const QgsPropertiesDefinition &definitions) const
Writes the current state of the property collection into an XML element.
 
virtual QVariant toVariant(const QgsPropertiesDefinition &definitions) const =0
Saves this property collection to a QVariantMap, wrapped in a QVariant.
 
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
 
An ordered stack of QgsPropertyCollection containers, where collections added later to the stack will...
 
QgsPropertyCollectionStack & operator=(const QgsPropertyCollectionStack &other)
 
int count() const
Returns the number of collections contained within the stack.
 
QVariant value(int key, const QgsExpressionContext &context, const QVariant &defaultValue=QVariant()) const override
Returns the calculated value of the highest priority property with the specified key from within the ...
 
QgsPropertyCollectionStack()=default
Constructor for QgsPropertyCollectionStack.
 
bool hasProperty(int key) const override
Returns true if the collection contains a property with the specified key.
 
void appendCollection(QgsPropertyCollection *collection)
Appends a collection to the end of the stack, and transfers ownership of the collection to the stack.
 
QgsPropertyCollection * at(int index)
Returns the collection at the corresponding index from the stack.
 
bool prepare(const QgsExpressionContext &context=QgsExpressionContext()) const override
Prepares the collection against a specified expression context.
 
bool hasActiveProperties() const override
Returns true if the collection has any active properties, or false if all properties within the colle...
 
QSet< int > propertyKeys() const override
Returns a list of property keys contained within the collection.
 
~QgsPropertyCollectionStack() override
 
QSet< QString > referencedFields(const QgsExpressionContext &context=QgsExpressionContext(), bool ignoreContext=false) const override
Returns the set of any fields referenced by the active properties from the stack.
 
bool loadVariant(const QVariant &collection, const QgsPropertiesDefinition &definitions) override
Loads this property collection from a QVariantMap, wrapped in a QVariant.
 
QgsProperty property(int key) const override
Returns the highest priority property with a matching key from within the stack.
 
void clear() override
Removes all collections from the stack.
 
bool isActive(int key) const override
Returns true if the stack contains an active property with the specified key.
 
QgsPropertyCollection * collection(const QString &name)
Returns the first collection with a matching name from the stack.
 
bool hasDynamicProperties() const override
Returns true if the collection has any active, non-static properties, or false if either all non-stat...
 
QVariant toVariant(const QgsPropertiesDefinition &definitions) const override
Saves this property collection to a QVariantMap, wrapped in a QVariant.
 
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
 
bool hasProperty(int key) const override
Returns true if the collection contains a property with the specified key.
 
QgsProperty property(int key) const override
Returns a matching property from the collection, if one exists.
 
QgsPropertyCollection & operator=(const QgsPropertyCollection &other)
 
QVariant value(int key, const QgsExpressionContext &context, const QVariant &defaultValue=QVariant()) const override
Returns the calculated value of the property with the specified key from within the collection.
 
void setProperty(int key, const QgsProperty &property)
Adds a property to the collection and takes ownership of it.
 
bool loadVariant(const QVariant &configuration, const QgsPropertiesDefinition &definitions) override
Loads this property collection from a QVariantMap, wrapped in a QVariant.
 
QSet< QString > referencedFields(const QgsExpressionContext &context=QgsExpressionContext(), bool ignoreContext=false) const override
Returns the set of any fields referenced by the active properties from the collection.
 
bool operator!=(const QgsPropertyCollection &other) const
 
bool operator==(const QgsPropertyCollection &other) const
 
QVariant toVariant(const QgsPropertiesDefinition &definitions) const override
Saves this property collection to a QVariantMap, wrapped in a QVariant.
 
bool hasDynamicProperties() const override
Returns true if the collection has any active, non-static properties, or false if either all non-stat...
 
int count() const
Returns the number of properties contained within the collection.
 
void clear() override
Removes all properties from the collection.
 
QSet< int > propertyKeys() const override
Returns a list of property keys contained within the collection.
 
bool isActive(int key) const override
Returns true if the collection contains an active property with the specified key.
 
bool hasActiveProperties() const override
Returns true if the collection has any active properties, or false if all properties within the colle...
 
bool prepare(const QgsExpressionContext &context=QgsExpressionContext()) const override
Prepares the collection against a specified expression context.
 
QgsPropertyCollection(const QString &name=QString())
Constructor for QgsPropertyCollection.
 
A store for object properties.
 
QDateTime valueAsDateTime(const QgsExpressionContext &context, const QDateTime &defaultDateTime=QDateTime(), bool *ok=nullptr) const
Calculates the current value of the property and interprets it as a datetime.
 
@ ExpressionBasedProperty
Expression based property (QgsExpressionBasedProperty)
 
@ StaticProperty
Static property (QgsStaticProperty)
 
@ FieldBasedProperty
Field based property (QgsFieldBasedProperty)
 
QColor valueAsColor(const QgsExpressionContext &context, const QColor &defaultColor=QColor(), bool *ok=nullptr) const
Calculates the current value of the property and interprets it as a color.
 
QString valueAsString(const QgsExpressionContext &context, const QString &defaultString=QString(), bool *ok=nullptr) const
Calculates the current value of the property and interprets it as a string.
 
QVariant value(const QgsExpressionContext &context, const QVariant &defaultValue=QVariant(), bool *ok=nullptr) const
Calculates the current value of the property, including any transforms which are set for the property...
 
bool isActive() const
Returns whether the property is currently active.
 
double valueAsDouble(const QgsExpressionContext &context, double defaultValue=0.0, bool *ok=nullptr) const
Calculates the current value of the property and interprets it as a double.
 
int valueAsInt(const QgsExpressionContext &context, int defaultValue=0, bool *ok=nullptr) const
Calculates the current value of the property and interprets it as an integer.
 
bool valueAsBool(const QgsExpressionContext &context, bool defaultValue=false, bool *ok=nullptr) const
Calculates the current value of the property and interprets it as an boolean.
 
bool loadVariant(const QVariant &property)
Loads this property from a QVariantMap, wrapped in a QVariant.
 
Type propertyType() const
Returns the property type.
 
static QgsProperty fromValue(const QVariant &value, bool isActive=true)
Returns a new StaticProperty created from the specified value.
 
static QDomElement writeVariant(const QVariant &value, QDomDocument &doc)
Write a QVariant to a QDomElement.
 
static QVariant readVariant(const QDomElement &element)
Read a QVariant from a QDomElement.
 
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.