Ref T660, fixed and renamed to "getRelativeSubDirectories" plus sample

This commit is contained in:
Klaus Basan
2019-07-11 02:50:12 +02:00
committed by Mat Sutcliffe
parent 3cb3724556
commit ca7f11eb81
5 changed files with 69 additions and 8 deletions

View File

@@ -427,9 +427,9 @@ namespace BlackMisc
return QUrl::fromPercentEncoding(directory.toUtf8());
}
QStringList CDirectoryUtils::getSubDirectories(const QString &rootDir)
QStringList CDirectoryUtils::getRelativeSubDirectories(const QString &rootDir)
{
QDir dir(rootDir);
const QDir dir(rootDir);
if (!dir.exists()) { return QStringList(); }
return dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks);
}
@@ -443,10 +443,11 @@ namespace BlackMisc
if (!directory.entryInfoList(nameFilter, QDir::Files | QDir::NoDot | QDir::NoDotDot).isEmpty()) { return true; }
if (!recursively) { return false; }
const QStringList subDirs = CDirectoryUtils::getSubDirectories(dir);
for (const QString &subDir : subDirs)
const QStringList relSubDirs = CDirectoryUtils::getRelativeSubDirectories(dir);
for (const QString &relSubDir : relSubDirs)
{
if (CDirectoryUtils::containsFileInDir(subDir, filter, recursively)) { return true; }
const QString absSubDir = CFileUtils::appendFilePaths(directory.absolutePath(), relSubDir);
if (CDirectoryUtils::containsFileInDir(absSubDir, filter, recursively)) { return true; }
}
return false;
}
@@ -686,7 +687,7 @@ namespace BlackMisc
if (nestedDirs)
{
const QStringList relativeSubdirs = CDirectoryUtils::getSubDirectories(dirSource);
const QStringList relativeSubdirs = CDirectoryUtils::getRelativeSubDirectories(dirSource);
if (!relativeSubdirs.isEmpty())
{
for (const QString &relativeSubdir : relativeSubdirs)

View File

@@ -155,7 +155,7 @@ namespace BlackMisc
static QString decodeNormalizedDirectory(const QString &directory);
//! All sub directories of given dir
static QStringList getSubDirectories(const QString &rootDir);
static QStringList getRelativeSubDirectories(const QString &rootDir);
//! Any file with filter like "*.txt"
static bool containsFileInDir(const QString &dir, const QString &filter, bool recursively);