222 lines
5.5 KiB
C++
222 lines
5.5 KiB
C++
/**
|
||
* @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
|