logplus/ModuleConsole/command/src/GlobalWorkflowItems.cpp
2026-01-16 17:18:41 +08:00

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();
}
}