feat(appearance): list wallpapers from every XDG data directory

main
reionwong 3 weeks ago
parent 43a89b72cb
commit ce28822adc

@ -2,6 +2,7 @@
#include <QDir> #include <QDir>
#include <QDirIterator> #include <QDirIterator>
#include <QStandardPaths>
Wallpaper::Wallpaper(QObject *parent) Wallpaper::Wallpaper(QObject *parent)
: Appearance(parent) : Appearance(parent)
@ -43,14 +44,23 @@ void Wallpaper::setColor(const QString &color)
QStringList Wallpaper::backgrounds() const QStringList Wallpaper::backgrounds() const
{ {
// Every XDG data directory, so a user's own wallpapers in
// ~/.local/share/backgrounds/cutefishos show up next to the shipped ones.
const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
QStringLiteral("backgrounds/cutefishos"),
QStandardPaths::LocateDirectory);
QStringList result; QStringList result;
QDirIterator iterator(QStringLiteral("/usr/share/backgrounds/cutefishos"), for (const QString &dir : dirs) {
{QStringLiteral("*.jpg"), QStringLiteral("*.png")}, QDirIterator iterator(dir,
QDir::Files, {QStringLiteral("*.jpg"), QStringLiteral("*.png")},
QDirIterator::Subdirectories); QDir::Files,
while (iterator.hasNext()) QDirIterator::Subdirectories);
result.append(iterator.next()); while (iterator.hasNext())
result.append(iterator.next());
}
result.removeDuplicates();
result.sort(); result.sort();
return result; return result;
} }

Loading…
Cancel
Save