mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-01 22:55:41 +08:00
refs #457 Use cases for CWorker non-void tasks and thenWithResult().
This commit is contained in:
@@ -215,13 +215,16 @@ namespace BlackGui
|
|||||||
template <typename ObjectType, typename ContainerType>
|
template <typename ObjectType, typename ContainerType>
|
||||||
CWorker *CListModelBase<ObjectType, ContainerType>::updateAsync(const ContainerType &container, bool sort)
|
CWorker *CListModelBase<ObjectType, ContainerType>::updateAsync(const ContainerType &container, bool sort)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(sort);
|
||||||
auto sortColumn = this->getSortColumn();
|
auto sortColumn = this->getSortColumn();
|
||||||
auto sortOrder = this->getSortOrder();
|
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);
|
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<ContainerType>(this, [this](const ContainerType &sortedContainer)
|
||||||
|
{
|
||||||
|
this->ps_updateContainer(CVariant::from(sortedContainer), false);
|
||||||
});
|
});
|
||||||
worker->then(this, &CListModelBase::asyncUpdateFinished);
|
worker->then(this, &CListModelBase::asyncUpdateFinished);
|
||||||
return worker;
|
return worker;
|
||||||
|
|||||||
@@ -220,14 +220,17 @@ namespace BlackGui
|
|||||||
|
|
||||||
template <class ModelClass, class ContainerType, class ObjectType> BlackMisc::CWorker *CViewBase<ModelClass, ContainerType, ObjectType>::updateContainerAsync(const ContainerType &container, bool sort, bool resize)
|
template <class ModelClass, class ContainerType, class ObjectType> BlackMisc::CWorker *CViewBase<ModelClass, ContainerType, ObjectType>::updateContainerAsync(const ContainerType &container, bool sort, bool resize)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(sort);
|
||||||
ModelClass *model = this->derivedModel();
|
ModelClass *model = this->derivedModel();
|
||||||
auto sortColumn = model->getSortColumn();
|
auto sortColumn = model->getSortColumn();
|
||||||
auto sortOrder = model->getSortOrder();
|
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);
|
return 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));
|
worker->thenWithResult<ContainerType>(this, [this, resize](const ContainerType &sortedContainer)
|
||||||
|
{
|
||||||
|
this->ps_updateContainer(CVariant::from(sortedContainer), false, resize);
|
||||||
});
|
});
|
||||||
worker->then(this, &CViewBase::asyncUpdateFinished);
|
worker->then(this, &CViewBase::asyncUpdateFinished);
|
||||||
return worker;
|
return worker;
|
||||||
|
|||||||
@@ -48,11 +48,11 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
bool ok;
|
bool ok;
|
||||||
auto aircraftCfgEntriesList = parseImpl(rootDirectory, excludedDirectories, &ok);
|
auto aircraftCfgEntriesList = parseImpl(rootDirectory, excludedDirectories, &ok);
|
||||||
if (!ok) { return; }
|
return std::make_pair(aircraftCfgEntriesList, ok);
|
||||||
bool c = QMetaObject::invokeMethod(this, "updateCfgEntriesList",
|
});
|
||||||
Q_ARG(BlackMisc::Simulation::FsCommon::CAircraftCfgEntriesList, aircraftCfgEntriesList));
|
m_parserWorker->thenWithResult<std::pair<CAircraftCfgEntriesList, bool>>(this, [this](const std::pair<CAircraftCfgEntriesList, bool> &pair)
|
||||||
Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot invoke updateCfgEntriesList");
|
{
|
||||||
Q_UNUSED(c);
|
if (pair.second) { this->updateCfgEntriesList(pair.first); }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (mode == ModeBlocking)
|
else if (mode == ModeBlocking)
|
||||||
|
|||||||
Reference in New Issue
Block a user