Ref T515, utility functions for file name/path etc.

This commit is contained in:
Klaus Basan
2019-01-17 16:41:03 +01:00
committed by Mat Sutcliffe
parent a0c8f3778b
commit 107464d92a
6 changed files with 48 additions and 1 deletions

View File

@@ -729,6 +729,19 @@ namespace BlackMisc
return (fi.exists() && fi.isReadable());
}
QDir CAircraftModel::getFileDirectory() const
{
if (!this->hasFileName()) { return QDir(); }
const QFileInfo fi(CFileUtils::fixWindowsUncPath(this->getFileName()));
return fi.absoluteDir();
}
QString CAircraftModel::getFileDirectoryPath() const
{
if (!this->hasFileName()) { return QStringLiteral(""); }
return this->getFileDirectory().absolutePath();
}
bool CAircraftModel::matchesModelString(const QString &modelString, Qt::CaseSensitivity sensitivity) const
{
if (sensitivity == Qt::CaseInsensitive) { return caseInsensitiveStringCompare(modelString, m_modelString); }

View File

@@ -40,6 +40,7 @@
#include <QStringList>
#include <Qt>
#include <QFileInfo>
#include <QDir>
#include <tuple>
namespace BlackMisc
@@ -420,14 +421,24 @@ namespace BlackMisc
// ---------------- simulator file related functions -------------------
//! File name (corresponding data for simulator, only available if representing simulator model
//! \remark normally parh and name, like with QFile name
const QString &getFileName() const { return m_fileName; }
//! File name as lower case
QString getFileNameLowerCase() const { return m_fileName.toLower(); }
//! File name?
bool hasFileName() const { return !m_fileName.isEmpty(); }
//! Does the corresponding file exist?
bool hasExistingCorrespondingFile() const;
//! Directory
QDir getFileDirectory() const;
//! Directory path if any
QString getFileDirectoryPath() const;
//! File name
void setFileName(const QString &fileName) { m_fileName = fileName; }

View File

@@ -874,6 +874,18 @@ namespace BlackMisc
return count;
}
void CAircraftModelList::sortByFileName()
{
if (CFileUtils::isFileNameCaseSensitive())
{
this->sortBy(&CAircraftModel::getFileName);
}
else
{
this->sortBy(&CAircraftModel::getFileNameLowerCase);
}
}
void CAircraftModelList::updateDistributor(const CDistributor &distributor)
{
for (CAircraftModel &model : *this)
@@ -1166,7 +1178,7 @@ namespace BlackMisc
QSet<QString> workingFiles;
int failedFilesCount = 0;
const bool caseSensitive = CFileUtils::isFileNameCaseSensitiv();
const bool caseSensitive = CFileUtils::isFileNameCaseSensitive();
for (const CAircraftModel &model : *this)
{
bool ok = false;

View File

@@ -337,6 +337,9 @@ namespace BlackMisc
//! Models with aliases
int countAliases() const;
//! Sort by file path
void sortByFileName();
//! Update distributor, all models in list are set to given distributor
void updateDistributor(const CDistributor &distributor);