Move the code that attempts to fill missing song metadata out of the
tagreader worker. In the main process, it will be controllable using
settings and calling context.
The methods were moved into a new SongPathParser class that checks new
settings to determine if action should be taken.
Rather than assume UTF-8, use QTextStream to read data. This checks the
byte order mark of the file to determine encoding.
As an optimization, since the playlist already needs to be searched for \r
characters, just create a string list and work from that.
In the initial implementation, DeviceLister::DeviceIcons returned a
string list and some listers would concatenate other lists to form that
list. When DeviceIcons was changed to return a variant list, that
logic wasn't changed in many places, so instead of appending, string
list variants are being added icon list.
An earlier change attempted to fix qdbusxml2cpp parsing errors by adding
directions to arguments. However, signal arguments are always out and it
was the annotations that were incorrect.
Fixes: f17b79a10 (dbus: Fix qdbusxml2cpp unknown type warnings., 2021-04-19)
Reference: https://dbus.freedesktop.org/doc/dbus-specification.html
QRandomGenerator::generate() returns an unbounded int32, while the legacy
qrand method always returned a positive number. When generating a tag
reader ID with QRandomGenerator, cast the random value to an unsigned so
that it is formatted as a positive number in the name.
Note that most usages of QRandomGenrator in the codebase use bounded()
instead of generate(), and should work as expected.
The com.trolltech was renamed to org.qtproject. The code generation tool
still handles the old name, but prints a deprecation error.
Reference: https://bugreports.qt.io/browse/QTBUG-23274
QRandomGenerator was introduced in 5.10 and qrand has since been
deprecated. QRandomGenerator::global() returns a global instance that
has been securely seeded. QRandomGenerator provides methods that
generate values within ranges, so taking a modulus of the result isn't
necessary.
This policy is already enabled by default. This may have originally
been a typo since it was added in the same commit where CMP0011 was set
to OLD in the top-level cmake file (b63d1cf9f1).
This policy allowed included files and modules to affect policy in the
parent scope. Besides the top level, 3rdparty/libprojectm is the only
place where old policy is set.
Reference: https://cmake.org/cmake/help/latest/policy/CMP0011.html