mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-13 07:35:41 +08:00
Ref T415, adjusted FP UI so multiple formats can be loaded
This commit is contained in:
@@ -476,56 +476,27 @@ namespace BlackGui
|
|||||||
|
|
||||||
void CFlightPlanComponent::loadFromDisk()
|
void CFlightPlanComponent::loadFromDisk()
|
||||||
{
|
{
|
||||||
CStatusMessage m;
|
CStatusMessageList msgs;
|
||||||
const QString fileName = QFileDialog::getOpenFileName(nullptr,
|
const QString fileName = QFileDialog::getOpenFileName(nullptr, tr("Load flight plan"), this->getDefaultFilename(true), "Flight plans (*.json *.sfp *.vfp);;swift (*.json *.txt);;vPilot (*.vfp);;SB4 (*.sfp)");
|
||||||
tr("Load flight plan"), getDefaultFilename(true),
|
if (fileName.isEmpty()) { return; }
|
||||||
tr("swift (*.json *.txt)"));
|
CFlightPlan fp = CFlightPlan::loadFromMultipleFormats(fileName, &msgs);
|
||||||
do
|
if (!fp.hasCallsign()) { fp.setCallsign(ui->le_Callsign->text()); } // set callsign if it wasn't set
|
||||||
|
|
||||||
|
if (msgs.isSuccess())
|
||||||
{
|
{
|
||||||
if (fileName.isEmpty())
|
this->fillWithFlightPlanData(fp);
|
||||||
{
|
this->updateDirectorySettings(fileName);
|
||||||
m = CStatusMessage(this, CStatusMessage::SeverityDebug, "Load canceled", true);
|
}
|
||||||
break;
|
else
|
||||||
}
|
{
|
||||||
|
this->showOverlayMessages(msgs, OverlayMessageMs);
|
||||||
const QString json(CFileUtils::readFileToString(fileName));
|
|
||||||
if (!Json::looksLikeSwiftJson(json))
|
|
||||||
{
|
|
||||||
m = CStatusMessage(this, CStatusMessage::SeverityWarning, "Reading '%1' yields no data", true) << fileName;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CVariant variant;
|
|
||||||
variant.convertFromJson(Json::jsonObjectFromString(json));
|
|
||||||
if (variant.canConvert<CFlightPlan>())
|
|
||||||
{
|
|
||||||
const CFlightPlan fp = variant.value<CFlightPlan>();
|
|
||||||
this->fillWithFlightPlanData(fp);
|
|
||||||
this->updateDirectorySettings(fileName);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m = CStatusMessage(this, CStatusMessage::SeverityWarning, "Wrong format for flight plan in '%1'") << fileName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const CJsonException &ex)
|
|
||||||
{
|
|
||||||
m = ex.toStatusMessage(this, "Parse error in " + fileName);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
while (false);
|
|
||||||
if (m.isFailure()) { CLogMessage::preformatted(m); }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlightPlanComponent::saveToDisk()
|
void CFlightPlanComponent::saveToDisk()
|
||||||
{
|
{
|
||||||
CStatusMessage m;
|
CStatusMessage m;
|
||||||
const QString fileName = QFileDialog::getSaveFileName(nullptr,
|
const QString fileName = QFileDialog::getSaveFileName(nullptr, tr("Save flight plan"), this->getDefaultFilename(false), tr("swift (*.json;*.txt)"));
|
||||||
tr("Save flight plan"), getDefaultFilename(false),
|
|
||||||
tr("swift (*.json *.txt)"));
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (fileName.isEmpty())
|
if (fileName.isEmpty())
|
||||||
@@ -832,7 +803,7 @@ namespace BlackGui
|
|||||||
{
|
{
|
||||||
// some logic to find a useful default name
|
// some logic to find a useful default name
|
||||||
const QString dir = m_directories.get().getFlightPlanDirectoryOrDefault();
|
const QString dir = m_directories.get().getFlightPlanDirectoryOrDefault();
|
||||||
if (load) { return CFileUtils::appendFilePaths(dir, CFileUtils::jsonWildcardAppendix()); }
|
if (load) { return dir; }
|
||||||
|
|
||||||
// Save file path
|
// Save file path
|
||||||
QString name("Flight plan");
|
QString name("Flight plan");
|
||||||
|
|||||||
Reference in New Issue
Block a user