Ref T620, check for empty string as path, QDir("") exists

This commit is contained in:
Klaus Basan
2019-04-21 18:34:17 +02:00
parent a553dfc708
commit 5caea5ad9b
4 changed files with 25 additions and 1 deletions

View File

@@ -46,6 +46,7 @@
#include <QCompleter>
#include <QStringBuilder>
#include <QPointer>
#include <QMessageBox>
#include <Qt>
using namespace BlackMisc;
@@ -535,6 +536,19 @@ namespace BlackGui
m = CStatusMessage(this, CStatusMessage::SeverityDebug, u"Save canceled", true);
break;
}
QFileInfo fi(fileName);
QDir fpDir = fi.absoluteDir();
if (CDirectoryUtils::isInApplicationDirectory(fpDir.absolutePath()))
{
const int ret = QMessageBox::warning(this, "swift flight plan",
"You try to save inside the swift directory '" + fpDir.absolutePath() +
"'\n\nThis is not recommended!"
"\n\nDo you want to really do this?",
QMessageBox::Save | QMessageBox::Cancel);
if (ret != QMessageBox::Save) { return; }
}
CFlightPlan fp;
this->validateAndInitializeFlightPlan(fp); // get data

View File

@@ -96,6 +96,7 @@ namespace BlackMisc
QString CDirectories::existingOrDefaultDir(const QString &checkDir, const QString &defaultDir) const
{
if (checkDir.isEmpty()) { return defaultDir; } // empty dir returns true ????
const QDir d(checkDir);
if (d.exists()) { return checkDir; }
return defaultDir;

View File

@@ -39,6 +39,12 @@ namespace BlackMisc
return binDir;
}
bool CDirectoryUtils::isInApplicationDirectory(const QString &path)
{
if (path.isEmpty()) { return false; }
return path.contains(qApp->applicationDirPath(), CFileUtils::osFileNameCaseSensitivity());
}
const QString &CDirectoryUtils::pluginsDirectory()
{
static const QString pDir(CFileUtils::appendFilePaths(binDirectory(), "plugins"));
@@ -386,7 +392,7 @@ namespace BlackMisc
{
const QStringList pathes(QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation));
QString d = pathes.first();
d = QDir::cleanPath(d + QDir::separator() + "swift");
d = QDir::cleanPath(CFileUtils::appendFilePaths(d, "swift"));
QDir dir(d);
if (dir.exists()) { return dir.absolutePath(); }
return pathes.first();

View File

@@ -37,6 +37,9 @@ namespace BlackMisc
//! \see https://dev.swift-project.org/w/dev/swiftpc/dirstructure/
static const QString &binDirectory();
//! Path in application directory
static bool isInApplicationDirectory(const QString &path);
//! Plugins directory
static const QString &pluginsDirectory();