mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-24 06:25:37 +08:00
Ref T451, fixed temp. disabled model
* display info message * aircraft model list implementing ICallsignObjectList (for message) * fixed wrong flag in requestTempDisable
This commit is contained in:
committed by
Mat Sutcliffe
parent
25df1921eb
commit
a90d4465a2
@@ -423,6 +423,8 @@ namespace BlackGui
|
|||||||
if (sGui && sGui->getIContextSimulator())
|
if (sGui && sGui->getIContextSimulator())
|
||||||
{
|
{
|
||||||
sGui->getIContextSimulator()->disableModelsForMatching(models, true);
|
sGui->getIContextSimulator()->disableModelsForMatching(models, true);
|
||||||
|
const CStatusMessage m = CLogMessage(this).info(u"Disabled %1 model(s): %2") << models.size() << models.getCallsignsAsString(", ", true);
|
||||||
|
this->showOverlayHTMLMessage(m, OverlayMessageMs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ namespace BlackGui
|
|||||||
QTimer m_updateTimer;
|
QTimer m_updateTimer;
|
||||||
bool m_missedRenderedAircraftUpdate = true; //! Rendered aircraft need update
|
bool m_missedRenderedAircraftUpdate = true; //! Rendered aircraft need update
|
||||||
BlackMisc::CTokenBucket m_bucket { 3, BlackMisc::PhysicalQuantities::CTime(5.0, BlackMisc::PhysicalQuantities::CTimeUnit::s()), 1};
|
BlackMisc::CTokenBucket m_bucket { 3, BlackMisc::PhysicalQuantities::CTime(5.0, BlackMisc::PhysicalQuantities::CTimeUnit::s()), 1};
|
||||||
BlackMisc::CSettingReadOnly<BlackGui::Settings::TViewUpdateSettings> m_settings { this, &CMappingComponent::settingsChanged }; //!< settings changed
|
BlackMisc::CSettingReadOnly<Settings::TViewUpdateSettings> m_settings { this, &CMappingComponent::settingsChanged }; //!< settings changed
|
||||||
Views::CCheckBoxDelegate *m_currentMappingsViewDelegate = nullptr; //! checkbox in view
|
Views::CCheckBoxDelegate *m_currentMappingsViewDelegate = nullptr; //! checkbox in view
|
||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
|
#include <QStringBuilder>
|
||||||
|
|
||||||
using namespace BlackMisc;
|
using namespace BlackMisc;
|
||||||
using namespace BlackMisc::Simulation;
|
using namespace BlackMisc::Simulation;
|
||||||
@@ -387,14 +388,14 @@ namespace BlackGui
|
|||||||
|
|
||||||
void CAircraftModelView::toggleHighlightStashedModels()
|
void CAircraftModelView::toggleHighlightStashedModels()
|
||||||
{
|
{
|
||||||
bool h = derivedModel()->highlightModelStrings();
|
const bool h = derivedModel()->highlightModelStrings();
|
||||||
derivedModel()->setHighlightModelStrings(!h);
|
derivedModel()->setHighlightModelStrings(!h);
|
||||||
emit toggledHighlightStashedModels();
|
emit toggledHighlightStashedModels();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CAircraftModelView::toggleHighlightInvalidModels()
|
void CAircraftModelView::toggleHighlightInvalidModels()
|
||||||
{
|
{
|
||||||
bool h = this->highlightModelStrings();
|
const bool h = this->highlightModelStrings();
|
||||||
this->setHighlightModelStrings(!h);
|
this->setHighlightModelStrings(!h);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -418,7 +419,7 @@ namespace BlackGui
|
|||||||
|
|
||||||
void CAircraftModelView::requestTempDisable()
|
void CAircraftModelView::requestTempDisable()
|
||||||
{
|
{
|
||||||
if (!m_menus.testFlag(MenuCanStashModels)) { return; }
|
if (!m_menus.testFlag(MenuDisableModelsTemp)) { return; }
|
||||||
if (!this->hasSelection()) { return; }
|
if (!this->hasSelection()) { return; }
|
||||||
const CAircraftModelList models(this->selectedObjects());
|
const CAircraftModelList models(this->selectedObjects());
|
||||||
emit this->requestTempDisableModelsForMatching(models);
|
emit this->requestTempDisableModelsForMatching(models);
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ namespace BlackGui
|
|||||||
|
|
||||||
void CSimulatedAircraftView::requestTempDisable()
|
void CSimulatedAircraftView::requestTempDisable()
|
||||||
{
|
{
|
||||||
if (!m_menus.testFlag(MenuCanStashModels)) { return; }
|
if (!m_menus.testFlag(MenuDisableModelsTemp)) { return; }
|
||||||
if (!this->hasSelection()) { return; }
|
if (!this->hasSelection()) { return; }
|
||||||
const CAircraftModelList models(this->selectedObjects().getModels());
|
const CAircraftModelList models(this->selectedObjects().getModels());
|
||||||
emit this->requestTempDisableModelsForMatching(models);
|
emit this->requestTempDisableModelsForMatching(models);
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "blackmisc/simulation/simulatedaircraftlist.h"
|
#include "blackmisc/simulation/simulatedaircraftlist.h"
|
||||||
|
#include "blackmisc/simulation/aircraftmodellist.h"
|
||||||
#include "blackmisc/simulation/interpolationsetuplist.h"
|
#include "blackmisc/simulation/interpolationsetuplist.h"
|
||||||
#include "blackmisc/aviation/callsignobjectlist.h"
|
#include "blackmisc/aviation/callsignobjectlist.h"
|
||||||
#include "blackmisc/aviation/callsign.h"
|
|
||||||
#include "blackmisc/aviation/atcstationlist.h"
|
#include "blackmisc/aviation/atcstationlist.h"
|
||||||
#include "blackmisc/aviation/aircraftsituationlist.h"
|
#include "blackmisc/aviation/aircraftsituationlist.h"
|
||||||
#include "blackmisc/aviation/flightplanlist.h"
|
#include "blackmisc/aviation/flightplanlist.h"
|
||||||
@@ -68,6 +68,14 @@ namespace BlackMisc
|
|||||||
return this->getCallsigns().getCallsignStrings(sorted);
|
return this->getCallsigns().getCallsignStrings(sorted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class OBJ, class CONTAINER>
|
||||||
|
QString ICallsignObjectList<OBJ, CONTAINER>::getCallsignsAsString(const QString &separator, bool sorted) const
|
||||||
|
{
|
||||||
|
if (this->container().isEmpty()) { return QString(); }
|
||||||
|
const QStringList callsigns = this->getCallsignStrings(sorted);
|
||||||
|
return callsigns.join(separator);
|
||||||
|
}
|
||||||
|
|
||||||
template <class OBJ, class CONTAINER>
|
template <class OBJ, class CONTAINER>
|
||||||
CONTAINER ICallsignObjectList<OBJ, CONTAINER>::findByCallsign(const CCallsign &callsign) const
|
CONTAINER ICallsignObjectList<OBJ, CONTAINER>::findByCallsign(const CCallsign &callsign) const
|
||||||
{
|
{
|
||||||
@@ -292,6 +300,7 @@ namespace BlackMisc
|
|||||||
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CAtcStation, BlackMisc::Aviation::CAtcStationList>;
|
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CAtcStation, BlackMisc::Aviation::CAtcStationList>;
|
||||||
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CAircraftSituation, BlackMisc::Aviation::CAircraftSituationList>;
|
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CAircraftSituation, BlackMisc::Aviation::CAircraftSituationList>;
|
||||||
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CFlightPlan, BlackMisc::Aviation::CFlightPlanList>;
|
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CFlightPlan, BlackMisc::Aviation::CFlightPlanList>;
|
||||||
|
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CAircraftModel, BlackMisc::Simulation::CAircraftModelList>;
|
||||||
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CSimulatedAircraft, BlackMisc::Simulation::CSimulatedAircraftList>;
|
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CSimulatedAircraft, BlackMisc::Simulation::CSimulatedAircraftList>;
|
||||||
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign, BlackMisc::Simulation::CInterpolationSetupList>;
|
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign, BlackMisc::Simulation::CInterpolationSetupList>;
|
||||||
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Network::CClient, BlackMisc::Network::CClientList>;
|
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Network::CClient, BlackMisc::Network::CClientList>;
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
class CSimulatedAircraft;
|
class CSimulatedAircraft;
|
||||||
class CSimulatedAircraftList;
|
class CSimulatedAircraftList;
|
||||||
|
class CAircraftModel;
|
||||||
|
class CAircraftModelList;
|
||||||
class CInterpolationAndRenderingSetupPerCallsign;
|
class CInterpolationAndRenderingSetupPerCallsign;
|
||||||
class CInterpolationSetupList;
|
class CInterpolationSetupList;
|
||||||
}
|
}
|
||||||
@@ -63,6 +65,9 @@ namespace BlackMisc
|
|||||||
//! Get callsign string list
|
//! Get callsign string list
|
||||||
QStringList getCallsignStrings(bool sorted = false) const;
|
QStringList getCallsignStrings(bool sorted = false) const;
|
||||||
|
|
||||||
|
//! Get callsigns as strings
|
||||||
|
QString getCallsignsAsString(const QString &separator, bool sorted = false) const;
|
||||||
|
|
||||||
//! Find 0..n stations by callsign
|
//! Find 0..n stations by callsign
|
||||||
CONTAINER findByCallsign(const CCallsign &callsign) const;
|
CONTAINER findByCallsign(const CCallsign &callsign) const;
|
||||||
|
|
||||||
@@ -134,6 +139,7 @@ namespace BlackMisc
|
|||||||
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CAtcStation, BlackMisc::Aviation::CAtcStationList>;
|
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CAtcStation, BlackMisc::Aviation::CAtcStationList>;
|
||||||
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CAircraftSituation, BlackMisc::Aviation::CAircraftSituationList>;
|
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CAircraftSituation, BlackMisc::Aviation::CAircraftSituationList>;
|
||||||
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CFlightPlan, BlackMisc::Aviation::CFlightPlanList>;
|
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CFlightPlan, BlackMisc::Aviation::CFlightPlanList>;
|
||||||
|
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CAircraftModel, BlackMisc::Simulation::CAircraftModelList>;
|
||||||
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CSimulatedAircraft, BlackMisc::Simulation::CSimulatedAircraftList>;
|
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CSimulatedAircraft, BlackMisc::Simulation::CSimulatedAircraftList>;
|
||||||
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign, BlackMisc::Simulation::CInterpolationSetupList>;
|
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign, BlackMisc::Simulation::CInterpolationSetupList>;
|
||||||
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Network::CClient, BlackMisc::Network::CClientList>;
|
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Network::CClient, BlackMisc::Network::CClientList>;
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
#include <QJsonValue>
|
#include <QJsonValue>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QMultiMap>
|
#include <QMultiMap>
|
||||||
|
#include <QFileInfo>
|
||||||
|
#include <QDir>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
||||||
using namespace BlackMisc::Network;
|
using namespace BlackMisc::Network;
|
||||||
@@ -361,7 +363,7 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
const QMap<QString, int> modelStrings = this->countPerModelString();
|
const QMap<QString, int> modelStrings = this->countPerModelString();
|
||||||
CAircraftModelList duplicates;
|
CAircraftModelList duplicates;
|
||||||
for (const auto &pair : makePairsRange(modelStrings))
|
for (const auto pair : makePairsRange(modelStrings))
|
||||||
{
|
{
|
||||||
if (pair.second > 1)
|
if (pair.second > 1)
|
||||||
{
|
{
|
||||||
@@ -1153,6 +1155,88 @@ namespace BlackMisc
|
|||||||
return msgs;
|
return msgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CStatusMessageList CAircraftModelList::validateFiles(CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmpty, int stopAtFailedFiles, bool &stopped, bool alreadySorted) const
|
||||||
|
{
|
||||||
|
invalidModels.clear();
|
||||||
|
validModels.clear();
|
||||||
|
stopped = false;
|
||||||
|
|
||||||
|
CStatusMessageList msgs;
|
||||||
|
QSet<QString> failedFiles;
|
||||||
|
QSet<QString> workingFiles;
|
||||||
|
int failedFilesCount = 0;
|
||||||
|
|
||||||
|
const bool caseSensitive = CFileUtils::isFileNameCaseSensitiv();
|
||||||
|
for (const CAircraftModel &model : *this)
|
||||||
|
{
|
||||||
|
bool ok = false;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (!model.hasModelString())
|
||||||
|
{
|
||||||
|
const CStatusMessage m(this, CStatusMessage::SeverityError, "No model string");
|
||||||
|
msgs.push_back(m);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!model.hasFileName())
|
||||||
|
{
|
||||||
|
if (ignoreEmpty) { continue; }
|
||||||
|
const CStatusMessage m(this, CStatusMessage::SeverityError, QStringLiteral("'%1', no file name").arg(model.getModelStringAndDbKey()), true);
|
||||||
|
msgs.push_back(m);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString fn(caseSensitive ? model.getFileName() : model.getFileNameLowerCase());
|
||||||
|
if (failedFiles.contains(fn))
|
||||||
|
{
|
||||||
|
const CStatusMessage m(this, CStatusMessage::SeverityError, QStringLiteral("'%1', known failed file '%2' skipped").arg(model.getModelStringAndDbKey(), model.getFileName()), true);
|
||||||
|
msgs.push_back(m);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (workingFiles.contains(fn) || model.hasExistingCorrespondingFile())
|
||||||
|
{
|
||||||
|
ok = true;
|
||||||
|
workingFiles.insert(fn);
|
||||||
|
// const CStatusMessage m(this, CStatusMessage::SeverityInfo, QStringLiteral("'%1', file '%2' existing").arg(model.getModelStringAndDbKey(), model.getFileName()), true);
|
||||||
|
// msgs.push_back(m);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
failedFiles.insert(fn);
|
||||||
|
failedFilesCount++;
|
||||||
|
const CStatusMessage m(this, CStatusMessage::SeverityError, QStringLiteral("'%1', file '%2' not existing").arg(model.getModelStringAndDbKey(), model.getFileName()), true);
|
||||||
|
msgs.push_back(m);
|
||||||
|
}
|
||||||
|
while (false);
|
||||||
|
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
validModels.push_back(model);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
invalidModels.push_back(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stopAtFailedFiles > 0 && failedFilesCount >= stopAtFailedFiles)
|
||||||
|
{
|
||||||
|
stopped = true;
|
||||||
|
const CStatusMessage m(this, CStatusMessage::SeverityWarning, QStringLiteral("Stopping after %1 failed files").arg(failedFilesCount));
|
||||||
|
msgs.push_back(m);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Summary
|
||||||
|
const CStatusMessage m(this, CStatusMessage::SeverityInfo, QStringLiteral("Valid models: %1").arg(validModels.size()));
|
||||||
|
msgs.push_back(m);
|
||||||
|
|
||||||
|
// done
|
||||||
|
return msgs;
|
||||||
|
}
|
||||||
|
|
||||||
QJsonObject CAircraftModelList::toMemoizedJson() const
|
QJsonObject CAircraftModelList::toMemoizedJson() const
|
||||||
{
|
{
|
||||||
CAircraftModel::MemoHelper::CMemoizer helper;
|
CAircraftModel::MemoHelper::CMemoizer helper;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
#include "blackmisc/simulation/simulatorinfo.h"
|
#include "blackmisc/simulation/simulatorinfo.h"
|
||||||
#include "blackmisc/aviation/aircrafticaocodelist.h"
|
#include "blackmisc/aviation/aircrafticaocodelist.h"
|
||||||
#include "blackmisc/aviation/airlineicaocodelist.h"
|
#include "blackmisc/aviation/airlineicaocodelist.h"
|
||||||
|
#include "blackmisc/aviation/callsignobjectlist.h"
|
||||||
#include "blackmisc/db/datastoreobjectlist.h"
|
#include "blackmisc/db/datastoreobjectlist.h"
|
||||||
#include "blackmisc/blackmiscexport.h"
|
#include "blackmisc/blackmiscexport.h"
|
||||||
#include "blackmisc/collection.h"
|
#include "blackmisc/collection.h"
|
||||||
@@ -53,6 +54,7 @@ namespace BlackMisc
|
|||||||
public CSequence<CAircraftModel>,
|
public CSequence<CAircraftModel>,
|
||||||
public Db::IDatastoreObjectList<CAircraftModel, CAircraftModelList, int>,
|
public Db::IDatastoreObjectList<CAircraftModel, CAircraftModelList, int>,
|
||||||
public IOrderableList<CAircraftModel, CAircraftModelList>,
|
public IOrderableList<CAircraftModel, CAircraftModelList>,
|
||||||
|
public Aviation::ICallsignObjectList<CAircraftModel, CAircraftModelList>,
|
||||||
public Mixin::MetaType<CAircraftModelList>
|
public Mixin::MetaType<CAircraftModelList>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -397,6 +399,9 @@ namespace BlackMisc
|
|||||||
//! Validate distributors
|
//! Validate distributors
|
||||||
CStatusMessageList validateDistributors(const CDistributorList &distributors, CAircraftModelList &validModels, CAircraftModelList &invalidModels) const;
|
CStatusMessageList validateDistributors(const CDistributorList &distributors, CAircraftModelList &validModels, CAircraftModelList &invalidModels) const;
|
||||||
|
|
||||||
|
//! Validate distributors
|
||||||
|
CStatusMessageList validateFiles(CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmpty, int stopAtFailedFiles, bool &stopped, bool alreadySorted = false) const;
|
||||||
|
|
||||||
//! To compact JSON format
|
//! To compact JSON format
|
||||||
QJsonObject toMemoizedJson() const;
|
QJsonObject toMemoizedJson() const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user