/** * @file PaiJobErrorInfoItem.h * @brief 日志错误信息item * @date 2013-04-20 */ #ifndef PAI_FRAME_WORKFLOWWIDGET_PAIJOBERRORINFOITEM_H #define PAI_FRAME_WORKFLOWWIDGET_PAIJOBERRORINFOITEM_H #include #include #include #include #include #include #include #include #include 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