logplus/ModuleConsole/include/SubmitWorkflowDialog.h
2026-01-16 17:18:41 +08:00

222 lines
5.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file SubmitWorkflowDialog.h
* @brief 提交工作流对话框
* @date 2014-12-10
*/
#ifndef PAI_FRAME_WORKFLOWVIEW_SUBMITWORKFLOWDIALOG_H_
#define PAI_FRAME_WORKFLOWVIEW_SUBMITWORKFLOWDIALOG_H_
#include "PaiDialog.h"
#include "Job.h"
#include <QCheckBox>
class QStackedWidget;
class QTableWidget;
namespace pai
{
namespace gui
{
class PaiPushButton;
class PaiLabel;
class PaiNameLineEdit;
class PaiCheckBox;
class PaiCollapsibleWidget;
}
}
namespace pai
{
namespace gui
{
/**
* @class SubmitWorkflowDialog
* @brief 提交工作流对话框
*/
class SubmitWorkflowDialog : public PaiDialog
{
Q_OBJECT
public:
/**
* @brief 表示一条资源信息
*/
struct ResItem
{
QString queueName; // 队列名称
QString mainTitle; // 主标题
QString totalTitle; // 总资源量标题
QString freeTitle; // 可用资源量标题
QString usedTitle; // 已经使用资源量标题
long total; // 总资源量
long used; // 已经使用资源量
long required; // 所需资源量
};
/**
* @brief 构造函数
* @param[in] pParent 父窗口句柄
*/
SubmitWorkflowDialog(QWidget *pParent = NULL);
/**
* @brief 析构函数
*/
virtual ~SubmitWorkflowDialog();
/**
* @brief 设置map slot的资源信息
* @param[in] item 槽资源的信息
*/
void SetCpuItem(const ResItem& item);
/**
* @brief 设置配额资源的信息
* @param[in] item 配额资源信息
*/
void SetStorageItem(const ResItem& item);
/**
* @brief 设置作业名称
* @param[in] jobName 作业名称
*/
void SetJobName(const QString& jobName);
/**
* @brief 获取作业名称
* @return 作业名称
*/
QString GetJobName();
/**
* @brief 根据槽信息和配额信息添加Widget
*/
void SetWidgets();
/**
* @brief 获取作业优先级
* @return 作业优先级
*/
pai::ios::job::JobPriority GetPriority();
/**
* @brief 获取队列名称
* @return 队列名称
*/
QString GetQueueName();
private slots:
/**
* @brief 点击NormalRadioButton时触发
* @param[in] toggled true选中false取消选中
*/
void ToggleNormalRadio(bool toggled);
/**
* @brief 点击SpecialRadioButton时触发
* @param[in] toggled true选中false取消选中
*/
void ToggleSpecialRadio(bool toggled);
/**
* @brief 显示所有的特殊队列
*/
void ExpandAllSpecilaQueue();
/**
* @brief 收起所有的特殊队列
*/
void CollapseAllSpecilaQueue();
/**
* @brief 选中当前被选中radioButton所在行
* @param[in] toggled true选中false取消选中
*/
void SelectCurrentRow(bool toggled);
/**
* @brief 选中当前行以及当前行的radioButton
*/
void SelectCurrentRadioBtn();
/**
* @brief 权限checkBox选中
* @param[in] checked true选中false取消选中
*/
void SetPriority(int checked);
private:
/**
* @brief 清理槽Widget
*/
void ClearCpuWidget();
/**
* @brief 设置特殊队列时槽资源的Widget
*/
void SetSpecialCpuWidget();
/**
* @brief 根据队列名称获取队列的槽信息
* @param[in] name 队列名称
* @return 槽信息
*/
ResItem GetSpecialQueueResItem(const QString& name);
/**
* @brief 获取所有特殊队列的槽信息
* @return 所有特殊队列槽信息
*/
QList<ResItem> GetSpecialQueueResItems();
/**
* @brief 设置普通队列的槽Widget
*/
void SetCpuWidget();
/**
* @brief 设置配额的Widget
*/
void SetStorageWidget();
/**
* @brief 根据item信息添加Widget
* @param[in] item 槽或者配额信息
* @param[in] pIcon 槽或者配额对应图标
*/
QWidget* AddItemWidget(const ResItem& item, PaiLabel *pIcon);
/**
* @brief 根据队列槽总数设置continue状态
* @param[in] name 队列名称
*/
void UpdateContinueBtn(const QString& name);
/**
* @brief 根据队列名称获取当前的特殊队列的槽资源
* @param[in] name 队列名称
*/
ResItem GetCurrentItem(const QString& name);
private:
QWidget *m_pCpuWgt; //普通队列槽信息Widget显示容器
QWidget *m_pSpecialCpuWgt; //特殊队列槽信息Widget显示容器
QStackedWidget *m_pStack; //槽信息分页显示布局器
QWidget *m_pStorage; //配额信息Widget显示容器
PaiPushButton *m_pContinuePBtn; //continue按钮
PaiPushButton *m_pCancelPBtn; //Cancel按钮
PaiNameLineEdit *m_pJobNameEdit; //作业名称编辑框
ResItem m_cpuItem; //普通队列槽信息
ResItem m_storageItem; //配额信息
QCheckBox *m_priorityCheckBox; //作业优先级设置checkBox
PaiCollapsibleWidget *m_pExtendCtrl; //所有特殊队列展示控制控件
QTableWidget *m_pTable; //展示特殊队列的表格
pai::ios::job::JobPriority m_priority; //记录当前的作业优先级
QString m_currentSQueue; //当前队列名称
QList<ResItem> m_items; //特殊队列的槽资源信息
};
}
}
#endif