181 lines
4.4 KiB
C++
181 lines
4.4 KiB
C++
/*
|
|
* 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<QGraphicsItem*> itemList)
|
|
{
|
|
Clear();
|
|
m_pCopyItems = itemList;
|
|
}
|
|
QList<QGraphicsItem*> GlobalWorkflowItems::GetCopyGraphicItems()
|
|
{
|
|
return m_pCopyItems;
|
|
}
|
|
|
|
QList<CModuleConnection*> GlobalWorkflowItems::GetConnectLineList(QList<QGraphicsItem*> CopyItems)
|
|
{
|
|
QList<CModuleConnection*> lineItemList;
|
|
lineItemList.clear();
|
|
foreach(QGraphicsItem* pItem, CopyItems)
|
|
{
|
|
ModuleConnectGraphicsItem* pLineItem = dynamic_cast<ModuleConnectGraphicsItem*>(pItem);
|
|
|
|
if (NULL == pLineItem)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
CModuleConnection* pConnection = new CModuleConnection();
|
|
pLineItem->GetConnection()->CopyTo(*pConnection);
|
|
|
|
lineItemList << pConnection;
|
|
}
|
|
return lineItemList;
|
|
}
|
|
|
|
QList<int> GlobalWorkflowItems::GetStepIdList(QList<QGraphicsItem*> CopyItems)
|
|
{
|
|
QList<int> stepIdList;
|
|
stepIdList.clear();
|
|
foreach(QGraphicsItem* pItem, CopyItems)
|
|
{
|
|
ModuleGraphicsItem* pModule = dynamic_cast<ModuleGraphicsItem*>(pItem);
|
|
if (NULL == pModule)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
stepIdList << pModule->GetModule()->GetStepID();
|
|
}
|
|
return stepIdList;
|
|
}
|
|
|
|
QList<CModuleInfoAndStyle *> GlobalWorkflowItems::GetModuleInfoAndStyleList(QList<QGraphicsItem*> CopyItems)
|
|
{
|
|
QList<CModuleInfoAndStyle*> moduleList;
|
|
moduleList.clear();
|
|
foreach(QGraphicsItem* pItem, CopyItems)
|
|
{
|
|
ModuleGraphicsItem* pModule = dynamic_cast<ModuleGraphicsItem*>(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<pai::graphics2d::ModuleGraphicsItem*> (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<pai::graphics2d::ModuleConnectGraphicsItem*> (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<ModuleGraphicsItem*>(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();
|
|
}
|
|
}
|
|
|