Compare commits

...

2 Commits

Author SHA1 Message Date
Alexey Sokolov 9275912f1f
Merge fb3d5ad476 into fbb266adc2 2024-03-15 06:07:46 +01:00
Alexey Sokolov fb3d5ad476 Read system projectm presets from subdirs
Fix #7151

Note that this requires C++17 patches from #7272 because I don't want to
bother backporting the fix to syntax available in C++11
2023-11-10 22:49:38 +00:00
2 changed files with 13 additions and 9 deletions

View File

@ -27,22 +27,26 @@
#endif
#include <QDir>
#include <QDirIterator>
#include <QtDebug>
#include <set>
ProjectMPresetModel::ProjectMPresetModel(ProjectMVisualisation* vis,
QObject* parent)
: QAbstractItemModel(parent), vis_(vis) {
// Find presets
QDir preset_dir(vis_->preset_url());
QStringList presets(
preset_dir.entryList(QStringList() << "*.milk"
<< "*.prjm",
QDirIterator it(vis_->preset_url(),
QStringList() << "*.milk" << "*.prjm",
QDir::Files | QDir::NoDotAndDotDot | QDir::Readable,
QDir::Name | QDir::IgnoreCase));
QDirIterator::Subdirectories);
std::set<std::pair<QString, QString>> files;
while (it.hasNext()) {
it.next();
files.insert({it.filePath(), it.fileName()});
}
for (const QString& filename : presets) {
all_presets_ << Preset(preset_dir.absoluteFilePath(filename), filename,
false);
for (const auto& [filePath, fileName] : files) {
all_presets_ << Preset(filePath, fileName, false);
}
}

View File

@ -93,7 +93,7 @@ void ProjectMVisualisation::InitProjectM() {
if (!QFile::exists(path)) continue;
// Don't use empty directories
if (QDir(path).entryList(QDir::Files | QDir::NoDotAndDotDot).isEmpty())
if (QDir(path).entryList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot).isEmpty())
continue;
preset_path = path;