mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-23 23:45:35 +08:00
refs #585, utility function to make directory path relative and find first file existing
This commit is contained in:
@@ -121,6 +121,26 @@ namespace BlackMisc
|
||||
return n;
|
||||
}
|
||||
|
||||
QStringList CFileUtils::makeDirectoriesRelative(const QStringList &directories, const QString &rootDirectory, Qt::CaseSensitivity cs)
|
||||
{
|
||||
if (rootDirectory.isEmpty() || rootDirectory == "/") { return directories; }
|
||||
const QString rd(rootDirectory.endsWith('/') ? rootDirectory.left(rootDirectory.length() - 1) : rootDirectory);
|
||||
const int p = rd.length();
|
||||
QStringList relativeDirectories;
|
||||
for (const QString &dir : directories)
|
||||
{
|
||||
if (dir.startsWith(rd, cs) && dir.length() > p + 1)
|
||||
{
|
||||
relativeDirectories.append(dir.mid(p + 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
relativeDirectories.append(dir); // absolute
|
||||
}
|
||||
}
|
||||
return relativeDirectories;
|
||||
}
|
||||
|
||||
Qt::CaseSensitivity CFileUtils::osFileNameCaseSensitivity()
|
||||
{
|
||||
return CBuildConfig::isRunningOnWindowsNtPlatform() ? Qt::CaseInsensitive : Qt::CaseSensitive;
|
||||
@@ -159,6 +179,19 @@ namespace BlackMisc
|
||||
return false;
|
||||
}
|
||||
|
||||
QString CFileUtils::findFirstExisting(const QStringList &filesOrDirectory)
|
||||
{
|
||||
if (filesOrDirectory.isEmpty()) { return ""; }
|
||||
for (const QString &f : filesOrDirectory)
|
||||
{
|
||||
if (f.isEmpty()) { continue; }
|
||||
const QString fn(normalizeFilePathToQtStandard(f));
|
||||
const QFileInfo fi(fn);
|
||||
if (fi.exists()) { return fi.absoluteFilePath(); }
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
QString CFileUtils::findFirstFile(const QDir &dir, bool recursive, const QStringList &nameFilters, const QStringList &excludeDirectories, std::function<bool(const QFileInfo &)> predicate)
|
||||
{
|
||||
if (isExcludedDirectory(dir, excludeDirectories)) { return QString(); }
|
||||
|
||||
Reference in New Issue
Block a user