Workaround windows *sigh* because it wants to be different.

This commit is contained in:
Adam Treat 2023-04-24 09:07:28 -04:00
parent 7ce6b6ba89
commit 8208ece6d3

View File

@ -46,22 +46,45 @@ QList<ModelInfo> Download::modelList() const
QString Download::downloadLocalModelsPath() const QString Download::downloadLocalModelsPath() const
{ {
QString exePath = QCoreApplication::applicationDirPath() + QDir::separator(); {
QFileInfo infoExe(exePath); QString exePath = QCoreApplication::applicationDirPath() + QDir::separator();
if (infoExe.isWritable()) QString testWritePath = exePath + QString("test_write.txt");
return exePath; QString canonicalExePath = QFileInfo(exePath).canonicalFilePath() + QDir::separator();
if (QFileInfo::exists(testWritePath))
return canonicalExePath;
QString localPath = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation); QFile testWriteFile(testWritePath);
QDir localDir(localPath); if (testWriteFile.open(QIODeviceBase::ReadWrite)) {
if (!localDir.exists()) testWriteFile.close();
localDir.mkpath(localPath); return canonicalExePath;
QString localDownloadPath = localPath }
+ QDir::separator(); }
QFileInfo infoLocal(localDownloadPath);
if (infoLocal.isWritable()) {
return localDownloadPath; QString localPath = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)
qWarning() << "ERROR: Local download path appears not writeable:" << localDownloadPath; + QDir::separator();
return localDownloadPath; QString testWritePath = localPath + QString("test_write.txt");
QString canonicalLocalPath = QFileInfo(localPath).canonicalFilePath() + QDir::separator();
QDir localDir(localPath);
if (!localDir.exists()) {
if (!localDir.mkpath(localPath)) {
qWarning() << "ERROR: Local download directory can't be created:" << canonicalLocalPath;
return canonicalLocalPath;
}
}
if (QFileInfo::exists(testWritePath))
return canonicalLocalPath;
QFile testWriteFile(testWritePath);
if (testWriteFile.open(QIODeviceBase::ReadWrite)) {
testWriteFile.close();
return canonicalLocalPath;
}
qWarning() << "ERROR: Local download path appears not writeable:" << canonicalLocalPath;
return canonicalLocalPath;
}
} }
void Download::updateModelList() void Download::updateModelList()