/** * @file SaveAsWorkflowCmd.h * @brief 另存为工作流 * @date 2012-10-17 */ #ifndef PAI_FRAME_WORKFLOWWIDGET_SAVEASWORKFLOWCMD_H #define PAI_FRAME_WORKFLOWWIDGET_SAVEASWORKFLOWCMD_H #include 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