mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-18 03:15:34 +08:00
Ref T660, make sure all file paths (for FSX/P3D) are Qt standard (not Windows native)
This commit is contained in:
committed by
Mat Sutcliffe
parent
18778ed97e
commit
b76d89bf27
@@ -62,7 +62,7 @@ namespace BlackMisc
|
|||||||
if (fileNameAndPath.isEmpty()) { return false; }
|
if (fileNameAndPath.isEmpty()) { return false; }
|
||||||
QFile file(fileNameAndPath);
|
QFile file(fileNameAndPath);
|
||||||
if (!file.open(QIODevice::WriteOnly)) { return false; }
|
if (!file.open(QIODevice::WriteOnly)) { return false; }
|
||||||
qint64 c = file.write(data);
|
const qint64 c = file.write(data);
|
||||||
file.close();
|
file.close();
|
||||||
return c == data.count();
|
return c == data.count();
|
||||||
}
|
}
|
||||||
@@ -79,7 +79,7 @@ namespace BlackMisc
|
|||||||
QFile file(fileNameAndPath);
|
QFile file(fileNameAndPath);
|
||||||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { return {}; }
|
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { return {}; }
|
||||||
QTextStream stream(&file);
|
QTextStream stream(&file);
|
||||||
QString content(stream.readAll());
|
const QString content(stream.readAll());
|
||||||
file.close();
|
file.close();
|
||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
@@ -205,8 +205,8 @@ namespace BlackMisc
|
|||||||
QString CFileUtils::normalizeFilePathToQtStandard(const QString &filePath)
|
QString CFileUtils::normalizeFilePathToQtStandard(const QString &filePath)
|
||||||
{
|
{
|
||||||
if (filePath.isEmpty()) { return {}; }
|
if (filePath.isEmpty()) { return {}; }
|
||||||
QString n(filePath);
|
QString n = QDir::cleanPath(filePath);
|
||||||
n = n.replace('\\', '/').replace("//", "/");
|
n = n.replace('\\', '/').replace("//", "/"); // should be done alreay by cleanPath, paranoia
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ namespace BlackMisc
|
|||||||
QString fsxPath;
|
QString fsxPath;
|
||||||
if (CBuildConfig::isCompiledWithFsxSupport())
|
if (CBuildConfig::isCompiledWithFsxSupport())
|
||||||
{
|
{
|
||||||
FsRegistryPathPair fsxRegistryPathPairs =
|
const FsRegistryPathPair fsxRegistryPathPairs =
|
||||||
{
|
{
|
||||||
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Microsoft\\Microsoft Games\\Flight Simulator\\10.0"), QStringLiteral("AppPath") },
|
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Microsoft\\Microsoft Games\\Flight Simulator\\10.0"), QStringLiteral("AppPath") },
|
||||||
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Microsoft\\Microsoft Games\\Flight Simulator - Steam Edition\\10.0"), QStringLiteral("AppPath") },
|
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Microsoft\\Microsoft Games\\Flight Simulator - Steam Edition\\10.0"), QStringLiteral("AppPath") },
|
||||||
@@ -59,13 +59,13 @@ namespace BlackMisc
|
|||||||
|
|
||||||
for (const auto ®istryPair : fsxRegistryPathPairs)
|
for (const auto ®istryPair : fsxRegistryPathPairs)
|
||||||
{
|
{
|
||||||
QSettings fsxRegistry(registryPair.first, QSettings::NativeFormat);
|
const QSettings fsxRegistry(registryPair.first, QSettings::NativeFormat);
|
||||||
fsxPath = fsxRegistry.value(registryPair.second).toString().trimmed();
|
fsxPath = fsxRegistry.value(registryPair.second).toString().trimmed();
|
||||||
|
|
||||||
if (!fsxPath.isEmpty()) break;
|
if (!fsxPath.isEmpty()) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return fsxPath;
|
return CFileUtils::normalizeFilePathToQtStandard(fsxPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString &CFsCommonUtil::fsxDirFromRegistry()
|
const QString &CFsCommonUtil::fsxDirFromRegistry()
|
||||||
@@ -76,7 +76,7 @@ namespace BlackMisc
|
|||||||
|
|
||||||
QString fsxDirImpl()
|
QString fsxDirImpl()
|
||||||
{
|
{
|
||||||
QString dir(CFsCommonUtil::fsxDirFromRegistry());
|
const QString dir(CFsCommonUtil::fsxDirFromRegistry());
|
||||||
if (!dir.isEmpty()) { return dir; }
|
if (!dir.isEmpty()) { return dir; }
|
||||||
QStringList someDefaultDirs(
|
QStringList someDefaultDirs(
|
||||||
{
|
{
|
||||||
@@ -99,7 +99,7 @@ namespace BlackMisc
|
|||||||
|
|
||||||
QString fsxSimObjectsDirFromRegistryImpl()
|
QString fsxSimObjectsDirFromRegistryImpl()
|
||||||
{
|
{
|
||||||
const QString fsxPath = CFsCommonUtil::fsxDirFromRegistry();
|
const QString fsxPath = CFileUtils::normalizeFilePathToQtStandard(CFsCommonUtil::fsxDirFromRegistry());
|
||||||
if (fsxPath.isEmpty()) { return {}; }
|
if (fsxPath.isEmpty()) { return {}; }
|
||||||
return CFsCommonUtil::fsxSimObjectsDirFromSimDir(fsxPath);
|
return CFsCommonUtil::fsxSimObjectsDirFromSimDir(fsxPath);
|
||||||
}
|
}
|
||||||
@@ -126,7 +126,7 @@ namespace BlackMisc
|
|||||||
QString CFsCommonUtil::fsxSimObjectsDirFromSimDir(const QString &simDir)
|
QString CFsCommonUtil::fsxSimObjectsDirFromSimDir(const QString &simDir)
|
||||||
{
|
{
|
||||||
if (simDir.isEmpty()) { return {}; }
|
if (simDir.isEmpty()) { return {}; }
|
||||||
return CFileUtils::appendFilePaths(simDir, "SimObjects");
|
return CFileUtils::appendFilePaths(CFileUtils::normalizeFilePathToQtStandard(simDir), "SimObjects");
|
||||||
}
|
}
|
||||||
|
|
||||||
const QStringList &CFsCommonUtil::fsxSimObjectsExcludeDirectoryPatterns()
|
const QStringList &CFsCommonUtil::fsxSimObjectsExcludeDirectoryPatterns()
|
||||||
@@ -155,7 +155,7 @@ namespace BlackMisc
|
|||||||
};
|
};
|
||||||
for (const auto ®istryPair : p3dRegistryPathPairs)
|
for (const auto ®istryPair : p3dRegistryPathPairs)
|
||||||
{
|
{
|
||||||
QSettings p3dRegistry(registryPair.first, QSettings::NativeFormat);
|
const QSettings p3dRegistry(registryPair.first, QSettings::NativeFormat);
|
||||||
p3dPath = p3dRegistry.value(registryPair.second).toString().trimmed();
|
p3dPath = p3dRegistry.value(registryPair.second).toString().trimmed();
|
||||||
|
|
||||||
if (!p3dPath.isEmpty()) break;
|
if (!p3dPath.isEmpty()) break;
|
||||||
@@ -166,7 +166,7 @@ namespace BlackMisc
|
|||||||
|
|
||||||
const QString &CFsCommonUtil::p3dDirFromRegistry()
|
const QString &CFsCommonUtil::p3dDirFromRegistry()
|
||||||
{
|
{
|
||||||
static const QString p3dPath(p3dDirFromRegistryImpl());
|
static const QString p3dPath = CFileUtils::normalizeFilePathToQtStandard(p3dDirFromRegistryImpl());
|
||||||
return p3dPath;
|
return p3dPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,7 +220,7 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
// finding the user settings only works on P3D machine
|
// finding the user settings only works on P3D machine
|
||||||
QStringList allPaths = CFsCommonUtil::allFsxSimObjectPaths().toList();
|
QStringList allPaths = CFsCommonUtil::allFsxSimObjectPaths().toList();
|
||||||
const QString sod = simObjectsDir.isEmpty() ? CFsCommonUtil::fsxSimObjectsDir() : simObjectsDir;
|
const QString sod = CFileUtils::normalizeFilePathToQtStandard(simObjectsDir.isEmpty() ? CFsCommonUtil::fsxSimObjectsDir() : simObjectsDir);
|
||||||
if (!sod.isEmpty() && !allPaths.contains(sod, Qt::CaseInsensitive))
|
if (!sod.isEmpty() && !allPaths.contains(sod, Qt::CaseInsensitive))
|
||||||
{
|
{
|
||||||
// case insensitive is important here
|
// case insensitive is important here
|
||||||
@@ -237,7 +237,7 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
// finding the user settings only works on P3D machine
|
// finding the user settings only works on P3D machine
|
||||||
QStringList allPaths = CFsCommonUtil::allP3dAddOnXmlSimObjectPaths(versionHint).toList();
|
QStringList allPaths = CFsCommonUtil::allP3dAddOnXmlSimObjectPaths(versionHint).toList();
|
||||||
const QString sod = simObjectsDir.isEmpty() ? CFsCommonUtil::p3dSimObjectsDir() : simObjectsDir;
|
const QString sod = CFileUtils::normalizeFilePathToQtStandard(simObjectsDir.isEmpty() ? CFsCommonUtil::p3dSimObjectsDir() : simObjectsDir);
|
||||||
if (!sod.isEmpty() && !allPaths.contains(sod, Qt::CaseInsensitive))
|
if (!sod.isEmpty() && !allPaths.contains(sod, Qt::CaseInsensitive))
|
||||||
{
|
{
|
||||||
// case insensitive is important here
|
// case insensitive is important here
|
||||||
@@ -253,7 +253,7 @@ namespace BlackMisc
|
|||||||
QString CFsCommonUtil::p3dSimObjectsDirFromSimDir(const QString &simDir)
|
QString CFsCommonUtil::p3dSimObjectsDirFromSimDir(const QString &simDir)
|
||||||
{
|
{
|
||||||
if (simDir.isEmpty()) { return {}; }
|
if (simDir.isEmpty()) { return {}; }
|
||||||
return CFileUtils::appendFilePaths(simDir, "SimObjects");
|
return CFileUtils::normalizeFilePathToQtStandard(CFileUtils::appendFilePaths(simDir, "SimObjects"));
|
||||||
}
|
}
|
||||||
|
|
||||||
const QStringList &CFsCommonUtil::p3dSimObjectsExcludeDirectoryPatterns()
|
const QStringList &CFsCommonUtil::p3dSimObjectsExcludeDirectoryPatterns()
|
||||||
@@ -407,7 +407,7 @@ namespace BlackMisc
|
|||||||
}
|
}
|
||||||
|
|
||||||
QString targetDir = CFileUtils::appendFilePathsAndFixUnc(simObjectDir, "Misc");
|
QString targetDir = CFileUtils::appendFilePathsAndFixUnc(simObjectDir, "Misc");
|
||||||
QDir td(targetDir);
|
const QDir td(targetDir);
|
||||||
if (!td.exists())
|
if (!td.exists())
|
||||||
{
|
{
|
||||||
messages.push_back(CStatusMessage(getLogCategories(), CStatusMessage::SeverityError, u"Cannot access target directory '%1'") << targetDir);
|
messages.push_back(CStatusMessage(getLogCategories(), CStatusMessage::SeverityError, u"Cannot access target directory '%1'") << targetDir);
|
||||||
|
|||||||
Reference in New Issue
Block a user