196 lines
6.4 KiB
C++
196 lines
6.4 KiB
C++
/**
|
||
* @file SaveHelper.h
|
||
* @brief 辅助Save和Save As, 用来弹出保存对话框。
|
||
* @date 2012-10-17
|
||
*/
|
||
#ifndef PAI_FRAME_WORKFLOWWIDGET_SAVEHELPER_H
|
||
#define PAI_FRAME_WORKFLOWWIDGET_SAVEHELPER_H
|
||
|
||
#include <QUuid>
|
||
|
||
#include <QString>
|
||
// #include "ErrorCode.h"
|
||
|
||
namespace pai
|
||
{
|
||
namespace objectmodel
|
||
{
|
||
class PaiObject;
|
||
class PaiProject;
|
||
class PaiSurvey;
|
||
class PaiWorkflowDataModel;
|
||
}
|
||
namespace graphics2d
|
||
{
|
||
class WorkflowWidget;
|
||
}
|
||
namespace gui
|
||
{
|
||
class PaiTextEdit;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @enum SaveType
|
||
* @brief 保存类型
|
||
*/
|
||
enum SaveType
|
||
{
|
||
SaveType_DoCancel = 0x00000000, ///< 取消,不保存
|
||
SaveType_DoOpenDialog = 0x00000001, ///< 不覆盖,继续打开保存对话框 一般是点击了不覆盖后设置的
|
||
SaveType_IsJobOpen = 0x00000010, ///< 从作业打开的
|
||
SaveType_IsWorkOpen = 0x00000100, ///< 从工作流节点打开的
|
||
SaveType_ExistSameName = 0x00001000, ///< 存在同名工作流
|
||
SaveType_IsCurrentWorkflow = 0x00010000, ///< 同名工作流是当前要保存的工作流
|
||
SaveType_IsNewWorkflow = 0x00100000, ///< 当前工作流是新创建未保存过的工作流
|
||
SaveType_IsJobSave = 0x01000000 ///< 当前工作流是从作业管理界面直接保存的
|
||
};
|
||
|
||
namespace pai
|
||
{
|
||
/**
|
||
* @class SaveHelper
|
||
* @brief 辅助Save和Save As, 用来弹出保存对话框。
|
||
*/
|
||
class PAI_WORKFLOWWIDGET_EXPORT SaveHelper
|
||
{
|
||
public:
|
||
/**
|
||
* @brief 构造函数
|
||
*/
|
||
SaveHelper();
|
||
|
||
/**
|
||
* @brief 析构函数
|
||
*/
|
||
virtual ~SaveHelper();
|
||
|
||
/**
|
||
* @brief 设置当前正在编辑的工作流页面视图
|
||
* @param[in] pWorkflowWidget 正在编辑的工作流页面视图
|
||
*/
|
||
static void SetActiveWorkflowView(pai::graphics2d::WorkflowWidget* pWorkflowWidget);
|
||
|
||
/**
|
||
* @brief 得到当前激活的正在编辑的工作流页面视图
|
||
* @return 正在编辑的工作流页面视图
|
||
*/
|
||
static pai::graphics2d::WorkflowWidget* GetActiveWorkflowView();
|
||
|
||
/**
|
||
* @brief 只是保存当前工作流,先后操作工作流模型保存json和数据库部分。
|
||
* @param[in] pWorkflow 要保存的工作流模型
|
||
* @param[in] isTemplate 要保存的工作流是否是模板
|
||
* @return 保存结果
|
||
*/
|
||
static bool SaveWorkflow(pai::objectmodel::PaiWorkflowDataModel *pWorkflow, bool isTemplate = false);
|
||
|
||
/**
|
||
* @brief 保存当前编辑的工作流为指定名称文件
|
||
* @param[in] pWorkflow 要保存的工作流模型
|
||
* @param[in] jsonFilePath 保存文件名
|
||
* @return 保存结果
|
||
*/
|
||
static bool SaveWorkflowJson(pai::objectmodel::PaiWorkflowDataModel *pWorkflow, const QString& jsonFilePath);
|
||
|
||
/**
|
||
* @brief 获得属性编辑框
|
||
* @return 属性编辑框
|
||
*/
|
||
static pai::gui::PaiTextEdit* GetPropertiesTextEdit();
|
||
|
||
/**
|
||
* @brief 打开工作流保存对话框
|
||
* @param[in,out] workflowName 工作流名称
|
||
* @param[in] ppSurvey 工区指针
|
||
* @param[in] pActiveWorkflow 当前工作流
|
||
* @return 保存结果
|
||
*/
|
||
static int OpenSaveDialog(QString &workflowName,
|
||
pai::objectmodel::PaiSurvey** ppSurvey,
|
||
pai::objectmodel::PaiWorkflowDataModel*pActiveWorkflow);
|
||
|
||
/**
|
||
* @brief 打开工作流另存为对话框
|
||
* @param[in,out] workflowName 工作流名称
|
||
* @param[in] ppSurvey 工区指针
|
||
* @param[in] pActiveWorkflow 当前工作流
|
||
* @return 另存为结果
|
||
*/
|
||
static int OpenSaveAsDialog(QString &workflowName,
|
||
pai::objectmodel::PaiSurvey** ppSurvey ,
|
||
pai::objectmodel::PaiWorkflowDataModel*pActiveWorkflow);
|
||
|
||
/**
|
||
* @brief 得到当前修改过的打开的工作流对象集合
|
||
* @param[in] viewID 工作流插件ID
|
||
* @return 当前修改过的打开的工作流对象集合
|
||
*/
|
||
static QList< pai::objectmodel::PaiWorkflowDataModel* > GetModifiedWorkflows(QUuid viewID);
|
||
|
||
/**
|
||
* @brief 设置保存失败时的异常信息
|
||
* @param[in] what 异常信息
|
||
* @param[in] which 错误类型
|
||
*/
|
||
// static void SetSaveException(const QString & what, const int which = pai::error::ERR_SUCCESS);
|
||
|
||
/**
|
||
* @brief 获取保存失败时的异常信息e.what()
|
||
* @return 异常信息
|
||
*/
|
||
static QString GetSaveExceptionWhat();
|
||
|
||
/**
|
||
* @brief 获取保存失败时的异常信息e.which()
|
||
* @return 错误类型
|
||
*/
|
||
static int GetSaveExceptionWhich();
|
||
|
||
/**
|
||
* @brief 获取当前工作流所对应的工区
|
||
* @param[in] 当前工作流的DBID
|
||
* @return pSurvey 工区指针
|
||
*/
|
||
static pai::objectmodel::PaiSurvey* GetSurveyByWfDBID(long long workflowDBID);
|
||
|
||
private:
|
||
/**
|
||
* @brief 弹出信息提示对话框,在单元测试的场景下后台输出该语句
|
||
* @param[in] title 错误标题
|
||
* @param[in] message 错误内容
|
||
*/
|
||
static void ShowMessage(const QString& title, const QString& message);
|
||
|
||
/**
|
||
* @brief 打开工作流保存对话框
|
||
* @param[in] save true Save操作, false save as操作
|
||
* @param[in,out] workflowName 工作流名称,也是返回数据
|
||
* @param[in] ppSurvey 要返回的工区双指针
|
||
* @return 保存类型,见SaveType
|
||
*/
|
||
static int OpenSaveDialog(bool save, QString &workflowName, pai::objectmodel::PaiSurvey **ppSurvey, pai::objectmodel::PaiWorkflowDataModel *pActiveWorkflow);
|
||
|
||
/**
|
||
* @brief 验证保存工作流的名字
|
||
* @param[in] save true Save操作, false save as操作
|
||
* @param[in] strWorkflowName 工作流的名字
|
||
* @param[in] pSurvey 指定工区指针
|
||
* @return 见SaveType
|
||
*/
|
||
static int ValidateSaveWorkflowName(bool save,
|
||
const QString& workflowName,
|
||
pai::objectmodel::PaiWorkflowDataModel *pActiveWorkflow,
|
||
pai::objectmodel::PaiSurvey *pSurvey = NULL);
|
||
|
||
private:
|
||
static pai::graphics2d::WorkflowWidget *m_pActiveWorkflowWidget; ///< 当前正在编辑的工作流页面视图
|
||
static QString m_ExceptionWhat; ///< 对应捕获异常时的e.what()信息
|
||
static int m_ExceptionWhich; ///< 对应捕获异常时的e.whicht()信息
|
||
|
||
};
|
||
|
||
}
|
||
|
||
#endif ///< PAI_FRAME_WORKFLOWWIDGET_SAVEHELPER_H
|