Utils: Also pass Sort flag to FilePath::dirEntries

Change-Id: Ic21c2ba3ef59c6bb3e19552904187b3c6a096d80
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2021-06-29 11:10:27 +02:00
parent bddcf63da9
commit b8e6d05ded
9 changed files with 29 additions and 21 deletions

View File

@@ -952,14 +952,16 @@ bool FilePath::createDir() const
return dir.mkpath(dir.absolutePath());
}
QList<FilePath> FilePath::dirEntries(const QStringList &nameFilters, QDir::Filters filters) const
QList<FilePath> FilePath::dirEntries(const QStringList &nameFilters,
QDir::Filters filters,
QDir::SortFlags sort) const
{
if (needsDevice()) {
QTC_ASSERT(s_deviceHooks.dirEntries, return {});
return s_deviceHooks.dirEntries(*this, nameFilters, filters);
return s_deviceHooks.dirEntries(*this, nameFilters, filters, sort);
}
const QFileInfoList entryInfoList = QDir(toString()).entryInfoList(nameFilters, filters);
const QFileInfoList entryInfoList = QDir(m_data).entryInfoList(nameFilters, filters, sort);
return Utils::transform(entryInfoList, &FilePath::fromFileInfo);
}

View File

@@ -83,7 +83,8 @@ public:
std::function<bool(const FilePath &, const FilePath &)> copyFile;
std::function<bool(const FilePath &, const FilePath &)> renameFile;
std::function<FilePath(const FilePath &)> searchInPath;
std::function<QList<FilePath>(const FilePath &, const QStringList &, QDir::Filters)> dirEntries;
std::function<QList<FilePath>(const FilePath &, const QStringList &,
QDir::Filters, QDir::SortFlags)> dirEntries;
std::function<QByteArray(const FilePath &, int)> fileContents;
std::function<bool(const FilePath &, const QByteArray &)> writeFileContents;
std::function<QDateTime(const FilePath &)> lastModified;
@@ -141,7 +142,9 @@ public:
bool isReadableFile() const;
bool isReadableDir() const;
bool createDir() const;
QList<FilePath> dirEntries(const QStringList &nameFilters, QDir::Filters filters) const;
QList<FilePath> dirEntries(const QStringList &nameFilters,
QDir::Filters filters,
QDir::SortFlags sort = QDir::NoSort) const;
QList<FilePath> dirEntries(QDir::Filters filters) const;
QByteArray fileContents(int maxSize = -1) const;
bool writeFileContents(const QByteArray &data) const;

View File

@@ -995,17 +995,14 @@ FilePath DockerDevice::searchInPath(const FilePath &filePath) const
QList<FilePath> DockerDevice::directoryEntries(const FilePath &filePath,
const QStringList &nameFilters,
QDir::Filters filters) const
QDir::Filters filters,
QDir::SortFlags sort) const
{
QTC_ASSERT(handlesFile(filePath), return {});
tryCreateLocalFileAccess();
if (hasLocalFileAccess()) {
const FilePath localAccess = mapToLocalAccess(filePath);
const QFileInfoList entryInfoList = QDir(localAccess.toString()).entryInfoList(nameFilters, filters);
return Utils::transform(entryInfoList, [this](const QFileInfo &fi) {
return mapFromLocalAccess(fi.absoluteFilePath());
});
}
if (hasLocalFileAccess())
return mapToLocalAccess(filePath).dirEntries(nameFilters, filters, sort);
QTC_CHECK(false); // FIXME: Implement
return {};
}

View File

@@ -90,7 +90,8 @@ public:
Utils::FilePath searchInPath(const Utils::FilePath &filePath) const override;
QList<Utils::FilePath> directoryEntries(const Utils::FilePath &filePath,
const QStringList &nameFilters,
QDir::Filters filters) const override;
QDir::Filters filters,
QDir::SortFlags sort) const override;
QByteArray fileContents(const Utils::FilePath &filePath, int limit) const override;
bool writeFileContents(const Utils::FilePath &filePath, const QByteArray &data) const override;
QDateTime lastModified(const Utils::FilePath &filePath) const override;

View File

@@ -180,7 +180,8 @@ bool DesktopDevice::handlesFile(const FilePath &filePath) const
QList<FilePath> DesktopDevice::directoryEntries(const FilePath &filePath,
const QStringList &nameFilters,
QDir::Filters filters) const
QDir::Filters filters,
QDir::SortFlags sort) const
{
QTC_CHECK(!filePath.needsDevice());
const QDir dir(filePath.path());

View File

@@ -57,7 +57,8 @@ public:
bool handlesFile(const Utils::FilePath &filePath) const override;
QList<Utils::FilePath> directoryEntries(const Utils::FilePath &filePath,
const QStringList &nameFilters,
QDir::Filters filters) const override;
QDir::Filters filters,
QDir::SortFlags sort) const override;
Utils::Environment systemEnvironment() const override;

View File

@@ -459,11 +459,11 @@ DeviceManager::DeviceManager(bool isInstance) : d(std::make_unique<DeviceManager
return device->searchInPath(filePath);
};
deviceHooks.dirEntries = [](const FilePath &filePath,
const QStringList &nameFilters, QDir::Filters filters) {
deviceHooks.dirEntries = [](const FilePath &filePath, const QStringList &nameFilters,
QDir::Filters filters, QDir::SortFlags sort) {
auto device = DeviceManager::deviceForPath(filePath);
QTC_ASSERT(device, return FilePaths());
return device->directoryEntries(filePath, nameFilters, filters);
return device->directoryEntries(filePath, nameFilters, filters, sort);
};
deviceHooks.fileContents = [](const FilePath &filePath, int maxSize) {

View File

@@ -318,11 +318,13 @@ FilePath IDevice::searchInPath(const FilePath &filePath) const
QList<FilePath> IDevice::directoryEntries(const FilePath &filePath,
const QStringList &nameFilters,
QDir::Filters filters) const
QDir::Filters filters,
QDir::SortFlags sort) const
{
Q_UNUSED(filePath);
Q_UNUSED(nameFilters);
Q_UNUSED(filters);
Q_UNUSED(sort);
QTC_CHECK(false);
return {};
}

View File

@@ -252,7 +252,8 @@ public:
virtual Utils::FilePath searchInPath(const Utils::FilePath &filePath) const;
virtual QList<Utils::FilePath> directoryEntries(const Utils::FilePath &filePath,
const QStringList &nameFilters,
QDir::Filters filters) const;
QDir::Filters filters,
QDir::SortFlags sort = QDir::NoSort) const;
virtual QByteArray fileContents(const Utils::FilePath &filePath, int limit) const;
virtual bool writeFileContents(const Utils::FilePath &filePath, const QByteArray &data) const;
virtual QDateTime lastModified(const Utils::FilePath &filePath) const;