mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-01 14:45:42 +08:00
Ref T660, fixed and renamed to "getRelativeSubDirectories" plus sample
This commit is contained in:
@@ -14,6 +14,7 @@
|
|||||||
#include "samplesjson.h"
|
#include "samplesjson.h"
|
||||||
#include "samplesmetadata.h"
|
#include "samplesmetadata.h"
|
||||||
#include "samplesperformance.h"
|
#include "samplesperformance.h"
|
||||||
|
#include "samplesfile.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
@@ -55,9 +56,10 @@ int main(int argc, char *argv[])
|
|||||||
qtout << "6f .. string concatenation (+=, arg, ..)" << endl;
|
qtout << "6f .. string concatenation (+=, arg, ..)" << endl;
|
||||||
qtout << "6g .. const &QString vs. QStringLiteral" << endl;
|
qtout << "6g .. const &QString vs. QStringLiteral" << endl;
|
||||||
qtout << "7 .. Algorithms" << endl;
|
qtout << "7 .. Algorithms" << endl;
|
||||||
|
qtout << "8 .. File/Directory" << endl;
|
||||||
qtout << "-----" << endl;
|
qtout << "-----" << endl;
|
||||||
qtout << "x .. Bye" << endl;
|
qtout << "x .. Bye" << endl;
|
||||||
QString s = qtin.readLine().toLower().trimmed();
|
const QString s = qtin.readLine().toLower().trimmed();
|
||||||
|
|
||||||
if (s.startsWith("1")) { CSamplesJson::samples(); }
|
if (s.startsWith("1")) { CSamplesJson::samples(); }
|
||||||
else if (s.startsWith("2")) { CSamplesChangeObject::samples(); }
|
else if (s.startsWith("2")) { CSamplesChangeObject::samples(); }
|
||||||
@@ -72,6 +74,7 @@ int main(int argc, char *argv[])
|
|||||||
else if (s.startsWith("6f")) { CSamplesPerformance::samplesStringConcat(qtout); }
|
else if (s.startsWith("6f")) { CSamplesPerformance::samplesStringConcat(qtout); }
|
||||||
else if (s.startsWith("6g")) { CSamplesPerformance::samplesStringLiteralVsConstQString(qtout); }
|
else if (s.startsWith("6g")) { CSamplesPerformance::samplesStringLiteralVsConstQString(qtout); }
|
||||||
else if (s.startsWith("7")) { CSamplesAlgorithm::samples(); }
|
else if (s.startsWith("7")) { CSamplesAlgorithm::samples(); }
|
||||||
|
else if (s.startsWith("8")) { CSamplesFile::samples(qtout); }
|
||||||
else if (s.startsWith("x")) { break; }
|
else if (s.startsWith("x")) { break; }
|
||||||
}
|
}
|
||||||
while (true);
|
while (true);
|
||||||
|
|||||||
29
samples/blackmisc/samplesfile.cpp
Normal file
29
samples/blackmisc/samplesfile.cpp
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/* Copyright (C) 2019
|
||||||
|
* swift Project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
|
||||||
|
* or distributed except according to the terms contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//! \file
|
||||||
|
//! \ingroup sampleblackmisc
|
||||||
|
|
||||||
|
#include "samplesfile.h"
|
||||||
|
#include "blackmisc/directoryutils.h"
|
||||||
|
#include "blackmisc/stringutils.h"
|
||||||
|
|
||||||
|
using namespace BlackMisc;
|
||||||
|
|
||||||
|
namespace BlackSample
|
||||||
|
{
|
||||||
|
int CSamplesFile::samples(QTextStream &out)
|
||||||
|
{
|
||||||
|
const QString dir = "R:/temp";
|
||||||
|
out << "Testing directory search " << dir << endl;
|
||||||
|
const bool f = CDirectoryUtils::containsFileInDir(dir, "*.air", true);
|
||||||
|
out << "Found " << boolToYesNo(f) << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
28
samples/blackmisc/samplesfile.h
Normal file
28
samples/blackmisc/samplesfile.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/* Copyright (C) 2019
|
||||||
|
* swift Project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
|
||||||
|
* or distributed except according to the terms contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//! \file
|
||||||
|
//! \ingroup sampleblackmisc
|
||||||
|
|
||||||
|
#ifndef BLACKSAMPLE_SAMPLESFILE_H
|
||||||
|
#define BLACKSAMPLE_SAMPLESFILE_H
|
||||||
|
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
|
namespace BlackSample
|
||||||
|
{
|
||||||
|
//! Samples for file/directory
|
||||||
|
class CSamplesFile
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! Run the samples
|
||||||
|
static int samples(QTextStream &out);
|
||||||
|
};
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -427,9 +427,9 @@ namespace BlackMisc
|
|||||||
return QUrl::fromPercentEncoding(directory.toUtf8());
|
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(); }
|
if (!dir.exists()) { return QStringList(); }
|
||||||
return dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks);
|
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 (!directory.entryInfoList(nameFilter, QDir::Files | QDir::NoDot | QDir::NoDotDot).isEmpty()) { return true; }
|
||||||
|
|
||||||
if (!recursively) { return false; }
|
if (!recursively) { return false; }
|
||||||
const QStringList subDirs = CDirectoryUtils::getSubDirectories(dir);
|
const QStringList relSubDirs = CDirectoryUtils::getRelativeSubDirectories(dir);
|
||||||
for (const QString &subDir : subDirs)
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -686,7 +687,7 @@ namespace BlackMisc
|
|||||||
|
|
||||||
if (nestedDirs)
|
if (nestedDirs)
|
||||||
{
|
{
|
||||||
const QStringList relativeSubdirs = CDirectoryUtils::getSubDirectories(dirSource);
|
const QStringList relativeSubdirs = CDirectoryUtils::getRelativeSubDirectories(dirSource);
|
||||||
if (!relativeSubdirs.isEmpty())
|
if (!relativeSubdirs.isEmpty())
|
||||||
{
|
{
|
||||||
for (const QString &relativeSubdir : relativeSubdirs)
|
for (const QString &relativeSubdir : relativeSubdirs)
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ namespace BlackMisc
|
|||||||
static QString decodeNormalizedDirectory(const QString &directory);
|
static QString decodeNormalizedDirectory(const QString &directory);
|
||||||
|
|
||||||
//! All sub directories of given dir
|
//! All sub directories of given dir
|
||||||
static QStringList getSubDirectories(const QString &rootDir);
|
static QStringList getRelativeSubDirectories(const QString &rootDir);
|
||||||
|
|
||||||
//! Any file with filter like "*.txt"
|
//! Any file with filter like "*.txt"
|
||||||
static bool containsFileInDir(const QString &dir, const QString &filter, bool recursively);
|
static bool containsFileInDir(const QString &dir, const QString &filter, bool recursively);
|
||||||
|
|||||||
Reference in New Issue
Block a user