void LinkTable::execute(const QVariantMap ¶meters) { quint32 sourceId = parameters["sourceid"].toUInt(); quint32 targetId = parameters["targetid"].toUInt(); std::pair<QString, QObject *> modelPair = modelregistry()->getModel(sourceId); if (modelPair.first != sUNDEF) { TableModel *sourceTable = dynamic_cast<TableModel *>(modelPair.second); if (!sourceTable) return; modelPair = modelPair = modelregistry()->getModel(targetId); if (modelPair.first == "featurecoverage") { CoverageLayerModel *targetMap = dynamic_cast<CoverageLayerModel *>(modelPair.second); if (!targetMap) return; QString linktype = parameters["linktype"].toString(); if (sourceTable->supportsLinkType(linktype) && targetMap->supportsLinkType(linktype)) { sourceTable->connect(sourceTable, &TableModel::linkSendMessage, targetMap, &CoverageLayerModel::linkAcceptMessage); } } } }