240 lines
5.3 KiB
C++
240 lines
5.3 KiB
C++
/**
|
||
* @file PaiJobErrorInfoItem.h
|
||
* @brief 日志错误信息item
|
||
* @date 2013-04-20
|
||
*/
|
||
#ifndef PAI_FRAME_WORKFLOWWIDGET_PAIJOBERRORINFOITEM_H
|
||
#define PAI_FRAME_WORKFLOWWIDGET_PAIJOBERRORINFOITEM_H
|
||
|
||
#include <QGraphicsItem>
|
||
#include <QWidget>
|
||
#include <QRectF>
|
||
#include <QGraphicsProxyWidget>
|
||
#include <QScrollArea>
|
||
#include <QObject>
|
||
#include <QApplication>
|
||
#include <QScrollBar>
|
||
#include <QPushButton>
|
||
|
||
namespace pai
|
||
{
|
||
namespace gui
|
||
{
|
||
class PaiJobErrorInofWidget;
|
||
class PaiJobErrorInfoItem;
|
||
}
|
||
}
|
||
|
||
namespace pai
|
||
{
|
||
namespace gui
|
||
{
|
||
/**
|
||
* @class PaiArrowButton
|
||
* @brief 上下箭头按钮
|
||
*/
|
||
class PaiArrowButton : public QPushButton
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
/**
|
||
*@brief 构造函数
|
||
*@param[in] text 按钮内容
|
||
*@param[in] pParent 按钮父窗口指针
|
||
*/
|
||
PaiArrowButton(QString text, QWidget *pParent = NULL);
|
||
|
||
/**
|
||
* @brief 设置向上图标
|
||
* @param[in] icon 向上图标
|
||
*/
|
||
void SetUpIcon(const QString& icon);
|
||
|
||
/**
|
||
* @brief 设置向下图标
|
||
* @param[in] icon 向下图标
|
||
*/
|
||
void SetDownIcon(const QString& icon);
|
||
|
||
protected:
|
||
/**
|
||
* @brief 鼠标进入按钮事件
|
||
* param[in] pEvent 鼠标进入按钮时触发
|
||
*/
|
||
virtual void enterEvent(QEvent *pEvent);
|
||
|
||
/**
|
||
* @brief 鼠标离开按钮事件
|
||
* param[in] pEvent 鼠标离开按钮时触发
|
||
*/
|
||
virtual void leaveEvent(QEvent *pEvent);
|
||
|
||
private:
|
||
/**
|
||
*@brief 设置按钮的图标和大小
|
||
*@param[in] icon 图标
|
||
*/
|
||
void SetBtnIcon(const QString& icon);
|
||
|
||
private:
|
||
QString m_UpIcon; ///< 向上图标
|
||
QString m_DownIcon; ///< 向下图标
|
||
};
|
||
|
||
/**
|
||
* @class PaiJobErrorInfoItemAgentWgt
|
||
* @brief 代理widget
|
||
*/
|
||
class PaiJobErrorInfoItemAgentWgt : public QWidget
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
/**
|
||
*@brief 构造函数
|
||
*@param[in] pParent 父窗口
|
||
*@param[in] pItem 场景中错误信息项
|
||
*/
|
||
PaiJobErrorInfoItemAgentWgt(QWidget *pParent = NULL, PaiJobErrorInfoItem *pItem = NULL);
|
||
/**
|
||
*@brief 析构函数
|
||
*/
|
||
virtual ~PaiJobErrorInfoItemAgentWgt();
|
||
|
||
/**
|
||
*@brief 设置滚动区域
|
||
*@param[in] pScrollBar 滚动条
|
||
*/
|
||
void setScroBarValue(QScrollBar *pScrollBar);
|
||
|
||
public slots:
|
||
/**
|
||
*@brief 点击向上按钮执行的操作
|
||
*@param[in] show 显示或者隐藏
|
||
*/
|
||
void UpErrorBar(bool show);
|
||
|
||
/**
|
||
*@brief 点击向下按钮执行的操作
|
||
*@param[in] show 显示或者隐藏
|
||
*/
|
||
void DownErrorBar(bool show);
|
||
|
||
/**
|
||
* @biref 当所有infoBar被关闭时调用
|
||
*/
|
||
void HideItem();
|
||
|
||
private:
|
||
QScrollBar *m_pVerScrollBar; ///< 滚动条
|
||
PaiArrowButton *m_pBtnUp; ///< 向上箭头按钮
|
||
PaiArrowButton *m_pBtnDown; ///< 向下箭头按钮
|
||
PaiJobErrorInfoItem *m_pJobItem; ///< 场景中错误信息项
|
||
};
|
||
|
||
/**
|
||
* @class PaiJobErrorInfoItem
|
||
* @brief A1区场景中的错误信息item
|
||
*/
|
||
class PaiJobErrorInfoItem : public QGraphicsItem
|
||
{
|
||
public:
|
||
/**
|
||
*@brief item的类型
|
||
*/
|
||
enum
|
||
{
|
||
Type = UserType + 1459 ///< 当前item类型
|
||
};
|
||
|
||
/**
|
||
*@brief 构造函数
|
||
*@param[in] pParent 父窗口指针
|
||
*/
|
||
PaiJobErrorInfoItem(QGraphicsItem *pParent = NULL);
|
||
|
||
/**
|
||
*@brief 析构函数
|
||
*/
|
||
virtual ~PaiJobErrorInfoItem();
|
||
|
||
/**
|
||
*@brief 返回item类型
|
||
*@return item类型
|
||
*/
|
||
virtual int type() const;
|
||
|
||
/**
|
||
* @brief 实现该虚函数,返回模块图元的包围矩形
|
||
* @return item外围矩形
|
||
*/
|
||
virtual QRectF boundingRect() const;
|
||
|
||
/**
|
||
* @brief 更新位置
|
||
*/
|
||
void UpdatePosition();
|
||
|
||
/**
|
||
* @brief 增加一条错误信息
|
||
* @param[in] error 错误信息
|
||
*/
|
||
void AddErrorInfo(const QString& error);
|
||
|
||
/**
|
||
*@brief 设置错误对话框是否显示
|
||
*/
|
||
void ShowErrorInfoWgt();
|
||
|
||
/**
|
||
*@brief 点击向上错误按钮更新错误信息
|
||
*/
|
||
void UpButtonErrorInfo();
|
||
|
||
/**
|
||
*@brief 点击向下错误按钮更新错误信息
|
||
*/
|
||
void DownButtonErrorInfo();
|
||
|
||
/**
|
||
*@brief 检查是否可以使能错误信息
|
||
*/
|
||
bool EnableError();
|
||
|
||
private:
|
||
/**
|
||
* @brief 实现该虚函数,绘制错误item
|
||
* @param[in] pPainter 画笔
|
||
* @param[in] pOption 模块风格参数
|
||
* @param[in] pWidget 画布
|
||
*/
|
||
virtual void paint(QPainter *pPainter, const QStyleOptionGraphicsItem *pOption, QWidget *pWidget = NULL);
|
||
|
||
/*
|
||
* @brief 获取被展开Item的索引
|
||
* @return 索引
|
||
*/
|
||
int GetExpandedIndex() const;
|
||
|
||
/*
|
||
* @brief 关闭展开项
|
||
* @param[in] errorList InfoBar链表
|
||
*/
|
||
void CloseExpanded(QList< struct ErrorBarPos > &errorList);
|
||
|
||
private:
|
||
qreal m_width; ///< item外边框的宽度
|
||
qreal m_height; ///< item外边框的高度
|
||
PaiJobErrorInofWidget *m_pJobErrorInofDlg; ///< 错误信息条的容器
|
||
QScrollArea *m_pscrollArea; ///< 滚动条
|
||
PaiJobErrorInfoItemAgentWgt *m_pErrorAgentWgt; ///< 代理widget
|
||
QStringList m_errors; ///< 错误信息List
|
||
int m_UpdatePos; ///< 更新的错误信息位置
|
||
};
|
||
|
||
}
|
||
}
|
||
|
||
|
||
#endif ///< PAI_FRAME_WORKFLOWWIDGET_PAIJOBERRORINFOITEM_H
|
||
|