* add missing support for non-integer and compound keys
* update unit tests
* unify time handling: iterator / minimumValue / maximumValue / uniqueValues
rename the confusing "Capitalize First Letter" option to
"Force First Letter to Capital"
This change is intended to clarify the role of the "capitalize
first letter" option, and to provide an option which actually
does what users expect the "capitalize first letter" option
to do.
Fixes#16539
Previously, we always displayed the name of the layer we toggled off, even if
it was not modified, which could be confusing.
Now we will display up to two layer names that have been modified.
We cannot use QgsDataSourceUri::connectionInfo() as it returns an empty string
for OGR datasources. So use QgsTransaction::connectionString() as in other places.
In the text edit of the feature picker, if one currently enters an invalid value,
the whole feature picker becomes disabled, which requires to close and re-open
the expression string builder dialog.
So instead of doing this, use the preview label to indicate that a valid
feature is needed to evaluate the expression, for expressions that require feature
fields.
Previous related pull requests are:
https://github.com/qgis/QGIS/pull/37518https://github.com/qgis/QGIS/pull/37139
to allow layers to be added from them
Otherwise it's impossible to select multiple gpkg files from the
browser to add them all at once, and users have to add them
one-by-one
Previously the code was calculating the exact zoom level (a double
value) and then rounding this to an integer in order to determine
which rules should be applied.
This appears to violate the vector tile styling specifications,
which are designed to "round down" the zoom level, so that styling
rules like:
- layer zoom range: 12-22
- interpolated expression:
case when @zoom_level > 12 and @zoom_level <= 14 then 1
when @zoom_level > 14 and @zoom_level < 18 then 2
when @zoom_level >=18 then 4 end
work correctly when the exact zoom level is just less than 12, e.g. 11.8
So now we use floor when converting a zoom level to int so that the
styling rules work correctly.
Additionally, this adds a new @vector_tile_zoom expression variable
which contains the original double value of the calculated tile zoom
(not the integer one used for layer visibility). Many mapbox GL styling
rules rely on non-integer zoom levels for interpolation, e.g.
Case when @vector_tile_zoom >= 11.2 then 4 ...
This change allows for smooth interpolation between zoom levels which
matches the web map appearance, instead of "jumpy" fixed level interpolation
we previously had.
The settings were being restored, but the dialog was not updating
the reflect the loaded settings, so clicking OK caused the previous
settings to overwrite the loaded ones immediately.
Fixes#35343