mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 20:15:35 +08:00
Ref T620, check for empty string as path, QDir("") exists
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user