diff --git a/openbr/core/utility.cpp b/openbr/core/utility.cpp index e6f2508..8d96b20 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, QtUtils::naturalSort(dir.entryList(QDir::Files))) + files.append(dir.absoluteFilePath(file)); + + QList > filesWithLabels; + filesWithLabels.append(QPair(dir.dirName(),files)); + + foreach (const QString &folder, QtUtils::naturalSort(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..ac9642c 100644 --- a/openbr/core/utility.h +++ b/openbr/core/utility.h @@ -11,6 +11,7 @@ namespace br { 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..8d96107 100644 --- a/openbr/plugins/gallery/empty.cpp +++ b/openbr/plugins/gallery/empty.cpp @@ -20,6 +20,8 @@ #include #include +typedef QPair FilesWithLabel; + namespace br { @@ -113,10 +115,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; templates.reserve(filesWithLabels.size()); + foreach (const FilesWithLabel &filesWithLabel, filesWithLabels) + foreach (const QString &file, filesWithLabel.second) + templates.append(File(file, filesWithLabel.first)); return templates; } };