/* * @file SaveAsTemplateCmd.h * @brief 另存为工作流模板 * @date: 2012-12-10 * @author: liujunxia */ #ifndef PAI_FRAME_WORKFLOWVIEW_SAVEASTEMPLATECMD_H_ #define PAI_FRAME_WORKFLOWVIEW_SAVEASTEMPLATECMD_H_ #include #include enum TemplateSaveType { SaveTemplate_DoCancel = 0x00000000, /**<取消,不保存 */ SaveTemplate_DoOpenDialog = 0x00000001, /**<不覆盖,继续打开保存对话框 一般是点击了不覆盖后设置的*/ SaveTemplate_Save = 0x00000010, /**< 不保存*/ }; namespace pai { class CPaiWorkflowTemplateTree; namespace objectmodel { class PaiObject; class PaiWorkflowDataModel; } class SaveAsTemplateCmd :public QUndoCommand { public: SaveAsTemplateCmd(pai::CPaiWorkflowTemplateTree* pTemplateTree, pai::objectmodel::PaiWorkflowDataModel *pActiveWorkflow, QUndoCommand *parent = 0); virtual ~SaveAsTemplateCmd(); /** * @brief undo */ void undo(); /** * @brief redo */ void redo(); /** * @brief 获得保存是否成功的结果。 */ private: /** * @brief 处理将当前工作流另存为的操作 * @param[out] 返回是否进行另存并保存成功。 */ bool _HandleSaveAsTemplate(); /** * @brief 拷贝当前工作流 */ pai::objectmodel::PaiWorkflowDataModel* _CopyWorkflow(); /** * @brief 获得重名的工作流模型对象 * @param[out] 工作流模型对象指针,PaiObject类型的 */ pai::objectmodel::PaiObject* _GetOldSameNameWorkflow(); /** * @brief 打开工作流模板保存对话框 */ int OpenSaveDialog(QString &strTemplateName); /** * @brief 打开工作流模板另存为对话框 */ int OpenSaveAsDialog(QString &strTemplateName); /** * @brief 打开工作流保存对话框 * @param bSave 区分Save 和 Save as操作 save 为 true, save as 为 false。 * @param workflowName 工作流名称,也是返回数据 * @param[out] 保存类型,见SaveType */ int OpenSaveDialog(bool bSave, QString &strTemplateName); /** * @brief 验证保存模板的名字 * @param bSave 区分Save 和 Save as操作 save 为 true, save as 为 false。 * @param strTemplateName 工作流的名字 * @param[out] 见SaveType */ int ValidateSaveTemplateName(QString strTemplateName); private: pai::objectmodel::PaiWorkflowDataModel * m_pOldWorkflow; //备份原来的当前工作流 pai::objectmodel::PaiObject* m_pSameNameTemplate; //同名工作流 QString m_strNewTtemplateName; //另存为的工作流的名字 int m_SaveType; //保存类型 bool m_bSaveSuccess; pai::CPaiWorkflowTemplateTree* m_pTemplateTree; pai::objectmodel::PaiWorkflowDataModel *m_pActiveWorkflow; }; } #endif /* SAVEASTEMPLATECMD_H_ */