diff --git a/src/blackcore/context/contextsimulator.h b/src/blackcore/context/contextsimulator.h index 87338ecbc..4b86f05da 100644 --- a/src/blackcore/context/contextsimulator.h +++ b/src/blackcore/context/contextsimulator.h @@ -210,6 +210,9 @@ namespace BlackCore //! Model set completer string virtual QStringList getModelSetCompleterStrings(bool sorted) const = 0; + //! Remove models from set + virtual int removeModelsFromSet(const BlackMisc::Simulation::CAircraftModelList &removeModels) = 0; + //! \copydoc CAircraftMatcher::disableModelsForMatching virtual void disableModelsForMatching(const BlackMisc::Simulation::CAircraftModelList &removedModels, bool incremental) = 0; diff --git a/src/blackcore/context/contextsimulatorempty.h b/src/blackcore/context/contextsimulatorempty.h index 73247d3f0..992d0506b 100644 --- a/src/blackcore/context/contextsimulatorempty.h +++ b/src/blackcore/context/contextsimulatorempty.h @@ -147,6 +147,14 @@ namespace BlackCore return QStringList(); } + //! \copydoc IContextSimulator::removeModelsFromSet + virtual int removeModelsFromSet(const BlackMisc::Simulation::CAircraftModelList &removeModels) override + { + Q_UNUSED(removeModels); + logEmptyContextWarning(Q_FUNC_INFO); + return 0; + } + //! \copydoc CAircraftMatcher::disableModelsForMatching virtual void disableModelsForMatching(const BlackMisc::Simulation::CAircraftModelList &removedModels, bool incremental) override { diff --git a/src/blackcore/context/contextsimulatorimpl.cpp b/src/blackcore/context/contextsimulatorimpl.cpp index c2deea242..b26ee6176 100644 --- a/src/blackcore/context/contextsimulatorimpl.cpp +++ b/src/blackcore/context/contextsimulatorimpl.cpp @@ -279,6 +279,23 @@ namespace BlackCore return known; } + int CContextSimulator::removeModelsFromSet(const CAircraftModelList &removeModels) + { + if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } + if (removeModels.isEmpty()) { return 0; } + const CSimulatorInfo simulator = m_modelSetSimulator.get(); + if (!simulator.isSingleSimulator()) { return 0; } + + CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().synchronizeCache(simulator); + CAircraftModelList models = CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().getCachedModels(simulator); + const int removed = models.removeModelsWithString(removeModels, Qt::CaseInsensitive); + if (removed > 0) + { + CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().setCachedModels(models, simulator); + } + return removed; + } + QStringList CContextSimulator::getModelSetCompleterStrings(bool sorted) const { if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << sorted; } diff --git a/src/blackcore/context/contextsimulatorimpl.h b/src/blackcore/context/contextsimulatorimpl.h index ea2b9260d..aab8b5355 100644 --- a/src/blackcore/context/contextsimulatorimpl.h +++ b/src/blackcore/context/contextsimulatorimpl.h @@ -94,6 +94,7 @@ namespace BlackCore virtual QStringList getModelSetStrings() const override; virtual QStringList getModelSetCompleterStrings(bool sorted) const override; virtual bool isKnownModelInSet(const QString &modelString) const override; + virtual int removeModelsFromSet(const BlackMisc::Simulation::CAircraftModelList &removeModels) override; virtual void disableModelsForMatching(const BlackMisc::Simulation::CAircraftModelList &removedModels, bool incremental) override; virtual BlackMisc::Simulation::CAircraftModelList getDisabledModelsForMatching() const override; virtual void restoreDisabledModels() override; diff --git a/src/blackcore/context/contextsimulatorproxy.cpp b/src/blackcore/context/contextsimulatorproxy.cpp index d6e7e57dd..d67734112 100644 --- a/src/blackcore/context/contextsimulatorproxy.cpp +++ b/src/blackcore/context/contextsimulatorproxy.cpp @@ -165,6 +165,11 @@ namespace BlackCore return m_dBusInterface->callDBusRet(QLatin1String("getModelSetCompleterStrings"), sorted); } + int CContextSimulatorProxy::removeModelsFromSet(const CAircraftModelList &removeModels) + { + return m_dBusInterface->callDBusRet(QLatin1String("removeModelsFromSet"), removeModels); + } + bool CContextSimulatorProxy::isKnownModelInSet(const QString &modelString) const { return m_dBusInterface->callDBusRet(QLatin1String("isKnownModelInSet"), modelString); diff --git a/src/blackcore/context/contextsimulatorproxy.h b/src/blackcore/context/contextsimulatorproxy.h index d630d8ef5..df28f9018 100644 --- a/src/blackcore/context/contextsimulatorproxy.h +++ b/src/blackcore/context/contextsimulatorproxy.h @@ -73,6 +73,7 @@ namespace BlackCore virtual void setModelSetLoaderSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) override; virtual QStringList getModelSetStrings() const override; virtual QStringList getModelSetCompleterStrings(bool sorted) const override; + virtual int removeModelsFromSet(const BlackMisc::Simulation::CAircraftModelList &removeModels) override; virtual bool isKnownModelInSet(const QString &modelString) const override; virtual BlackMisc::Simulation::CAircraftModelList getModelSetModelsStartingWith(const QString &modelString) const override; virtual int getModelSetCount() const override;