diff --git a/src/blackgui/models/listmodelbase.cpp b/src/blackgui/models/listmodelbase.cpp index c2b11d792..aa740c7fc 100644 --- a/src/blackgui/models/listmodelbase.cpp +++ b/src/blackgui/models/listmodelbase.cpp @@ -215,13 +215,16 @@ namespace BlackGui template CWorker *CListModelBase::updateAsync(const ContainerType &container, bool sort) { + Q_UNUSED(sort); auto sortColumn = this->getSortColumn(); auto sortOrder = this->getSortOrder(); - CWorker *worker = BlackMisc::CWorker::fromTask(this, "ModelSort", [this, container, sort, sortColumn, sortOrder]() + CWorker *worker = BlackMisc::CWorker::fromTask(this, "ModelSort", [this, container, sortColumn, sortOrder]() { ContainerType sortedContainer = this->sortContainerByColumn(container, sortColumn, sortOrder); - QMetaObject::invokeMethod(this, "ps_updateContainer", - Q_ARG(BlackMisc::CVariant, CVariant::from(sortedContainer)), Q_ARG(bool, false)); + }); + worker->thenWithResult(this, [this](const ContainerType &sortedContainer) + { + this->ps_updateContainer(CVariant::from(sortedContainer), false); }); worker->then(this, &CListModelBase::asyncUpdateFinished); return worker; diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index 7b4357234..303958e1c 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -220,14 +220,17 @@ namespace BlackGui template BlackMisc::CWorker *CViewBase::updateContainerAsync(const ContainerType &container, bool sort, bool resize) { + Q_UNUSED(sort); ModelClass *model = this->derivedModel(); auto sortColumn = model->getSortColumn(); auto sortOrder = model->getSortOrder(); - BlackMisc::CWorker *worker = BlackMisc::CWorker::fromTask(this, "ViewSort", [this, model, container, sort, resize, sortColumn, sortOrder]() + BlackMisc::CWorker *worker = BlackMisc::CWorker::fromTask(this, "ViewSort", [model, container, sortColumn, sortOrder]() { - ContainerType sortedContainer = model->sortContainerByColumn(container, sortColumn, sortOrder); - QMetaObject::invokeMethod(this, "ps_updateContainer", - Q_ARG(BlackMisc::CVariant, CVariant::from(sortedContainer)), Q_ARG(bool, false), Q_ARG(bool, resize)); + return model->sortContainerByColumn(container, sortColumn, sortOrder); + }); + worker->thenWithResult(this, [this, resize](const ContainerType &sortedContainer) + { + this->ps_updateContainer(CVariant::from(sortedContainer), false, resize); }); worker->then(this, &CViewBase::asyncUpdateFinished); return worker; diff --git a/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp b/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp index 2544cde99..44414087a 100644 --- a/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp +++ b/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp @@ -48,11 +48,11 @@ namespace BlackMisc { bool ok; auto aircraftCfgEntriesList = parseImpl(rootDirectory, excludedDirectories, &ok); - if (!ok) { return; } - bool c = QMetaObject::invokeMethod(this, "updateCfgEntriesList", - Q_ARG(BlackMisc::Simulation::FsCommon::CAircraftCfgEntriesList, aircraftCfgEntriesList)); - Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot invoke updateCfgEntriesList"); - Q_UNUSED(c); + return std::make_pair(aircraftCfgEntriesList, ok); + }); + m_parserWorker->thenWithResult>(this, [this](const std::pair &pair) + { + if (pair.second) { this->updateCfgEntriesList(pair.first); } }); } else if (mode == ModeBlocking)