50 const int attributeNumber = fields.
lookupField( attributeName );
51 const bool isExpression = ( attributeNumber == -1 );
53 bool hasDefault =
false;
54 bool defaultActive =
false;
55 bool allActive =
true;
56 bool noneActive =
true;
61 QString inactiveValues;
63 for (
const typename RendererType::Category &category : categories )
65 const QVariant variantValue = category.value();
69 defaultActive = category.renderState();
71 noneActive = noneActive && !category.renderState();
72 allActive = allActive && category.renderState();
74 const bool isList = variantValue.userType() == QMetaType::Type::QVariantList;
75 const QString quotedValue =
QgsExpression::quotedValue( variantValue,
static_cast<QMetaType::Type
>( variantValue.userType() ) );
77 if ( !category.renderState() )
79 if ( quotedValue !=
"" )
83 const QVariantList list = variantValue.toList();
84 for (
const QVariant &v : list )
86 if ( !inactiveValues.isEmpty() )
87 inactiveValues.append(
',' );
94 if ( !inactiveValues.isEmpty() )
95 inactiveValues.append(
',' );
97 inactiveValues.append( quotedValue );
103 if ( quotedValue !=
"" )
107 const QVariantList list = variantValue.toList();
108 for (
const QVariant &v : list )
110 if ( !activeValues.isEmpty() )
111 activeValues.append(
',' );
118 if ( !activeValues.isEmpty() )
119 activeValues.append(
',' );
121 activeValues.append( quotedValue );
127 const QString attr = isExpression ? attributeName : u
"\"%1\""_s.arg( attributeName );
129 if ( allActive && hasDefault )
139 return u
"(%1) NOT IN (%2) OR (%1) IS NULL"_s.arg( attr, inactiveValues );
141 return u
"(%1) IN (%2)"_s.arg( attr, activeValues );