Ref T660, utility functions

This commit is contained in:
Klaus Basan
2019-07-10 03:10:17 +02:00
committed by Mat Sutcliffe
parent b71fb71fdc
commit 878a207f85
4 changed files with 33 additions and 0 deletions

View File

@@ -434,6 +434,23 @@ namespace BlackMisc
return dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks);
}
bool CDirectoryUtils::containsFileInDir(const QString &dir, const QString &filter, bool recursively)
{
QDir directory(dir);
if (!directory.exists()) { return false; }
const QStringList nameFilter({ filter });
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)
{
if (CDirectoryUtils::containsFileInDir(subDir, filter, recursively)) { return true; }
}
return false;
}
QStringList CDirectoryUtils::verifyRuntimeDirectoriesAndFiles()
{
QStringList failed;

View File

@@ -157,6 +157,9 @@ namespace BlackMisc
//! All sub directories of given dir
static QStringList getSubDirectories(const QString &rootDir);
//! Any file with filter like "*.txt"
static bool containsFileInDir(const QString &dir, const QString &filter, bool recursively);
//! Check if the (most important) runtime directories are available
static QStringList verifyRuntimeDirectoriesAndFiles();

View File

@@ -454,6 +454,16 @@ namespace BlackMisc
return candidate;
}
bool containsAny(const QString &testString, const QStringList &any, Qt::CaseSensitivity cs)
{
if (testString.isEmpty() || any.isEmpty()) { return false; }
for (const QString &a : any)
{
if (testString.contains(a, cs)) { return true; }
}
return false;
}
} // ns
//! \endcond

View File

@@ -295,6 +295,9 @@ namespace BlackMisc
//! Default string if string is empty
BLACKMISC_EXPORT const QString &defaultIfEmpty(const QString &candidate, const QString &defaultIfEmpty);
//! Contains any string of the list?
BLACKMISC_EXPORT bool containsAny(const QString &testString, const QStringList &any, Qt::CaseSensitivity cs);
namespace Mixin
{
/*!