diff --git a/openbr/core/utility.cpp b/openbr/core/utility.cpp index e6f2508..9c6db3a 100644 --- a/openbr/core/utility.cpp +++ b/openbr/core/utility.cpp @@ -19,6 +19,25 @@ QStringList br::getFiles(QDir dir, bool recursive) return files; } +QList br::getFilesWithLabels(QDir dir) +{ + dir = QDir(dir.canonicalPath()); + + QStringList files; + foreach (const QString &file, dir.entryList(QDir::Files)) + files.append(dir.absoluteFilePath(file)); + + QList filesWithLabels; + filesWithLabels.append(br::FilesWithLabel(dir.dirName(),files)); + + foreach (const QString &folder, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) { + QDir subdir(dir); + bool success = subdir.cd(folder); if (!success) qFatal("cd failure."); + filesWithLabels.append(getFilesWithLabels(subdir)); + } + return filesWithLabels; +} + QStringList br::getFiles(const QString ®exp) { QFileInfo fileInfo(regexp); diff --git a/openbr/core/utility.h b/openbr/core/utility.h index b6b1d1e..3f69bf3 100644 --- a/openbr/core/utility.h +++ b/openbr/core/utility.h @@ -10,7 +10,10 @@ namespace br { +typedef QPair FilesWithLabel; + BR_EXPORT QStringList getFiles(QDir dir, bool recursive); +BR_EXPORT QList > getFilesWithLabels(QDir dir); BR_EXPORT QStringList getFiles(const QString ®exp); } // namespace br diff --git a/openbr/plugins/gallery/empty.cpp b/openbr/plugins/gallery/empty.cpp index c73aaae..b488d3d 100644 --- a/openbr/plugins/gallery/empty.cpp +++ b/openbr/plugins/gallery/empty.cpp @@ -113,10 +113,11 @@ class EmptyGallery : public Gallery static TemplateList getTemplates(const QDir &dir) { - const QStringList files = getFiles(dir, true); - TemplateList templates; templates.reserve(files.size()); - foreach (const QString &file, files) - templates.append(File(file, dir.dirName())); + const QList filesWithLabels = getFilesWithLabels(dir); + TemplateList templates; + foreach (const FilesWithLabel &filesWithLabel, filesWithLabels) + foreach (const QString &file, filesWithLabel.second) + templates.append(File(file, filesWithLabel.first)); return templates; } };