/* * GlobalWorkflowItems.cpp * * Created on: 2012-10-12 * Author: liujunxia */ #include "GlobalWorkflowItems.h" #include "ModuleGraphicsItem.h" #include "ModuleInformation.h" #include "ModuleConnection.h" #include "ModuleConnectGraphicsItem.h" #include "CModuleInfoAndStyle.h" #include "WorkflowSceneManager.h" using namespace pai; using namespace pai::graphics2d; using namespace pai::workflow; namespace pai { GlobalWorkflowItems* GlobalWorkflowItems::instance = NULL; GlobalWorkflowItems::GlobalWorkflowItems() { } GlobalWorkflowItems::~GlobalWorkflowItems() { Clear(); if(instance != NULL) { delete instance; } } GlobalWorkflowItems* GlobalWorkflowItems::GetInstance() { if(instance == NULL) { instance = new GlobalWorkflowItems(); } return instance; } void GlobalWorkflowItems::SetCopyGraphicItems(QList itemList) { Clear(); m_pCopyItems = itemList; } QList GlobalWorkflowItems::GetCopyGraphicItems() { return m_pCopyItems; } QList GlobalWorkflowItems::GetConnectLineList(QList CopyItems) { QList lineItemList; lineItemList.clear(); foreach(QGraphicsItem* pItem, CopyItems) { ModuleConnectGraphicsItem* pLineItem = dynamic_cast(pItem); if (NULL == pLineItem) { continue; } CModuleConnection* pConnection = new CModuleConnection(); pLineItem->GetConnection()->CopyTo(*pConnection); lineItemList << pConnection; } return lineItemList; } QList GlobalWorkflowItems::GetStepIdList(QList CopyItems) { QList stepIdList; stepIdList.clear(); foreach(QGraphicsItem* pItem, CopyItems) { ModuleGraphicsItem* pModule = dynamic_cast(pItem); if (NULL == pModule) { continue; } stepIdList << pModule->GetModule()->GetStepID(); } return stepIdList; } QList GlobalWorkflowItems::GetModuleInfoAndStyleList(QList CopyItems) { QList moduleList; moduleList.clear(); foreach(QGraphicsItem* pItem, CopyItems) { ModuleGraphicsItem* pModule = dynamic_cast(pItem); if (NULL == pModule) { continue; } CModuleInformation *pInfo = new CModuleInformation(); pInfo->Clone(*(pModule->GetModule())); PaiModuleStyle *pStyle = new PaiModuleStyle(); pStyle->Copy(*(pModule->GetModuleStyle())); CModuleInfoAndStyle* pModuleInfoStyle = new CModuleInfoAndStyle(); pModuleInfoStyle->SetModuleInformation(pInfo); pModuleInfoStyle->SetModuleStyle(pStyle); pModuleInfoStyle->SetModulePos(pModule->pos()); moduleList << pModuleInfoStyle; } return moduleList; } pai::graphics2d::ModuleGraphicsItem* GlobalWorkflowItems::FindModule(pai::graphics2d::WorkflowSceneManager *pSceneManager, int iStepID) { foreach(QGraphicsItem* pItem, pSceneManager->items()) { if (pItem->type() == pai::graphics2d::ModuleGraphicsItem::Type) { pai::graphics2d::ModuleGraphicsItem* pModuleItem = dynamic_cast (pItem); if (NULL != pModuleItem && pModuleItem->GetModule()->GetStepID() == iStepID) { return pModuleItem; } } } return NULL; } pai::graphics2d::ModuleConnectGraphicsItem* GlobalWorkflowItems::FindConnectionItem(pai::graphics2d::WorkflowSceneManager *pSceneManager, CModuleConnection* pConnection) { foreach(QGraphicsItem* pItem, pSceneManager->items()) { if (pItem->type() == pai::graphics2d::ModuleConnectGraphicsItem::Type) { pai::graphics2d::ModuleConnectGraphicsItem* pConnectItem = dynamic_cast (pItem); if (NULL != pConnectItem && *pConnectItem->GetConnection() == *pConnection) { return pConnectItem; } } } return NULL; } void GlobalWorkflowItems::Clear() { foreach(QGraphicsItem* pItem, m_pCopyItems) { if( pItem == NULL ) continue; if(pItem->type() == ModuleGraphicsItem::Type) { ModuleGraphicsItem* pModule = dynamic_cast(pItem); if (pModule != NULL) { workflow::CModuleInformation* pInfo = pModule->GetModule(); if (pInfo != NULL) delete pInfo; PaiModuleStyle* pStyle = pModule->GetModuleStyle(); if (pStyle != NULL) delete pStyle; } } } qDeleteAll(m_pCopyItems); m_pCopyItems.clear(); } }