logplus/Workflow/WFEngine/Component/WorkflowWidget/include/SaveAsWorkflowCmd.h
2026-01-16 17:18:41 +08:00

102 lines
2.6 KiB
C++

/**
* @file SaveAsWorkflowCmd.h
* @brief 另存为工作流
* @date 2012-10-17
*/
#ifndef PAI_FRAME_WORKFLOWWIDGET_SAVEASWORKFLOWCMD_H
#define PAI_FRAME_WORKFLOWWIDGET_SAVEASWORKFLOWCMD_H
#include <QUndoCommand>
namespace pai
{
namespace objectmodel
{
class PaiObject;
class PaiSurvey;
class PaiWorkflowDataModel;
}
}
namespace pai
{
/**
* @class SaveAsWorkflowCmd
* @brief 保存工作流
*/
class SaveAsWorkflowCmd :public QUndoCommand
{
public:
/**
* @brief 构造函数
* @param[in] viewID 工作流常见ID
* @param[in] pActiveWorkflow 活动工作流
* @param[in] pParent 父亲
*/
SaveAsWorkflowCmd(QUuid viewID,
pai::objectmodel::PaiWorkflowDataModel *pActiveWorkflow,
QUndoCommand *pParent = NULL);
/**
* @brief 析构函数
*/
virtual ~SaveAsWorkflowCmd();
/**
* @brief undo
*/
void undo();
/**
* @brief redo
*/
void redo();
/**
* @brief 获得保存是否成功的结果。
* @return 保存结果
*/
bool GetSaveAsResult() const;
private:
/**
* @brief 处理将当前工作流另存为的操作
*/
bool HandleSaveAsWorkflow();
/**
* @brief 获得重名的工作流模型对象
* @return 工作流模型对象指针
*/
pai::objectmodel::PaiObject* GetOldSameNameWorkflow() const;
/**
* @brief 保存失败后恢复原来状态
*/
void RestoreWorkflow();
/**
* @brief 拷贝当前工作流,并将拷贝后的工作流设置为新的当前工作流
*/
void CopyWorkflow();
/**
* @brief 处理工作流tab页内工作流模型和tab页名以及树节点选择
*/
bool HandleExtensionTabAndNodeSelection();
private:
QUuid m_ViewID; ///< 视图ID
pai::objectmodel::PaiSurvey *m_pSurvey; ///< 工区
pai::objectmodel::PaiWorkflowDataModel *m_pOldWorkflow; ///< 备份原来的当前工作流
pai::objectmodel::PaiObject *m_pOldSameNameWorkflow; ///< 同名工作流
QString m_NewWorkflowName; ///< 另存为的工作流的名字
int m_SaveType; ///< 保存类型
bool m_SaveSuccess; ///< 保存结果
pai::objectmodel::PaiWorkflowDataModel *m_pActiveWorkflow; ///< 活动工作流
};
}
#endif ///< PAI_FRAME_WORKFLOWWIDGET_SAVEASWORKFLOWCMD_H