logplus/Workflow/WFWidget/include/PaiMessageBox.h

323 lines
10 KiB
C
Raw Permalink Normal View History

2026-01-17 12:55:45 +08:00
/**
* @file PaiMessageBox.h
* @brief MessageBox对话框
* @date 2012-03-06
*/
#ifndef PAI_FRAME_PIPROJECTMANAGEMENT_PAIMESSAGEBOX_H
#define PAI_FRAME_PIPROJECTMANAGEMENT_PAIMESSAGEBOX_H
#include <QMap>
#include "PaiDialog.h"
#include "Turtle.h"
class QLabel;
namespace pai
{
namespace gui
{
class PaiPushButton;
class PaiTextEdit;
}
}
namespace pai
{
namespace gui
{
/**
* @class PaiMessageBox
* @brief MessageBox对话框
*/
class PAI_WIDGET_EXPORT PaiMessageBox : public PaiDialog
{
Q_OBJECT
Q_ENUMS(Icon)
Q_FLAGS(StandardButtons)
public:
/**
* @enum Icon
* @brief
*/
enum Icon
{
Icon_None = 0, ///< 无图标
Icon_Information = 1, ///< 信息图标
Icon_Warning = 2, ///< 警告图标
Icon_Critical = 3, ///< 错误图标
Icon_Question = 4 ///< 提问图标
};
/**
* @enum StandardButton
* @brief
*/
enum StandardButton
{
NoButton = 0x00000000, ///< 无按钮
Ok = 0x00000400, ///< OK按钮
Save = 0x00000800, ///< 保存按钮
SaveAll = 0x00001000, ///< 保存所有按钮
Open = 0x00002000, ///< 打开按钮
Yes = 0x00004000, ///< Yes按钮
YesToAll = 0x00008000, ///< Yes to all 按钮
No = 0x00010000, ///< NO按钮
NoToAll = 0x00020000, ///< NO to all 按钮
Abort = 0x00040000, ///< 忽略按钮
Retry = 0x00080000, ///< 重试按钮
Ignore = 0x00100000, ///< 忽略按钮
Close = 0x00200000, ///< 关闭按钮
Cancel = 0x00400000, ///< 取消按钮
Discard = 0x00800000, ///< 打开按钮
Help = 0x01000000, ///< 放弃按钮
Apply = 0x02000000, ///< 应用按钮
Reset = 0x04000000, ///< 重置按钮
RestoreDefaults = 0x08000000, ///< 恢复默认按钮
FirstButton = Ok, ///< 首个按钮
LastButton = RestoreDefaults///< 末尾按钮
};
Q_DECLARE_FLAGS(StandardButtons, StandardButton)
/**
* @brief
* @param[in] pParent
*/
PaiMessageBox(QWidget *pParent = NULL);
/**
* @brief
* @param[in] icon
* @param[in] title
* @param[in] text
* @param[in] buttons 使
* @param[in] pParent
* @param[in] flag
*/
PaiMessageBox(Icon icon,
const QString & title,
const QString & text,
StandardButtons buttons = NoButton,
QWidget *pParent = NULL,
Qt::WindowFlags flag = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
/**
* @brief
* @param[in] icon
* @param[in] title
* @param[in] text
* @param[in] details TextEdit来显示
* @param[in] buttons 使
* @param[in] pParent
* @param[in] flag
*/
PaiMessageBox(Icon icon,
const QString & title,
const QString & text,
const QString & details,
StandardButtons buttons = NoButton,
QWidget *pParent = NULL,
Qt::WindowFlags flag = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
/**
* @brief
*/
virtual ~PaiMessageBox ();
/**
* @brief
* @param[in] icon
*/
void SetIcon(Icon icon);
/**
* @brief
* @param[in] buttons
*/
void SetStandardButtons(StandardButtons buttons);
/**
* @brief
* @param[in] button
*/
void SetDefaultButton(StandardButton button);
/**
* @brief
* @param[in] text
*/
void SetText(const QString & text);
/**
* @brief
* @param[in] text
*/
void SetDetailedText(const QString & text);
/**
* @brief
* @param[in] button
* @param[in] name
*/
void SetStandardButtonName(StandardButton button, const QString & name);
/**
* @brief
* @return
*/
QString GetDetailedText() const;
/**
* @brief
* @param[in] pParent
* @param[in] title
* @param[in] text
* @param[in] buttons 使
* @param[in] defaultButton
* @return
*/
static StandardButton Information(QWidget *pParent,
const QString & title,
const QString & text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton);
/**
* @brief
* @param[in] pParent
* @param[in] title
* @param[in] text
* @param[in] buttons 使
* @param[in] defaultButton
* @return
*/
static StandardButton Question(QWidget *pParent,
const QString & title,
const QString & text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton);
/**
* @brief
* @param[in] pParent
* @param[in] title
* @param[in] text
* @param[in] buttons 使
* @param[in] defaultButton
* @return
*/
static StandardButton Warning(QWidget *pParent,
const QString & title,
const QString & text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton);
/**
* @brief
* @param[in] pParent
* @param[in] title
* @param[in] text
* @param[in] buttons 使
* @param[in] defaultButton
* @return
*/
static StandardButton Critical(QWidget *pParent,
const QString & title,
const QString & text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton);
protected:
/**
* @brief 退
* @param[in] pEvent
*/
void closeEvent(QCloseEvent *pEvent);
private:
/**
* @brief
* @param[in] pParent
* @param[in] title
* @param[in] text
* @param[in] buttons 使
* @param[in] defaultButton
*/
static StandardButton ShowNewMessageBox(QWidget *pParent,
Icon icon,
const QString & title,
const QString & text,
StandardButtons buttons,
StandardButton defaultButton);
/**
* @brief
*/
void InitDialog();
/**
* @brief
* @param[in] button
* @return
*/
QString GetStandardButtonText(StandardButton button);
/**
* @brief ,使
* RestoreButtonPos来调整布局
* @param[in] button
* @return
*/
PaiPushButton* AddButton(StandardButton button);
/**
* @brief
*/
void RestoreButtonPos();
/**
* @brief
* @return
*/
StandardButton DetectedEscapeButton();
/**
* @brief button
* @param[in] button
*/
void SetResutlButton(StandardButton button);
private slots:
/**
* @brief
*/
void ButtonClicked();
private:
QLabel *m_pIconLabel; ///< 图标标签
QLabel *m_pTextLabel; ///< 文本标签
QWidget *m_pBtnWgt; ///< 按钮组件
PaiTextEdit *m_pDetailsTEdit; ///< 文本编辑组件
QMap<StandardButton, PaiPushButton*> m_FlagToBtn; ///< 标记和对应的按钮映射
QList<StandardButton> m_BtnPos; ///< separate left and right with NoButton
QList<StandardButton> m_EscapeBtns; ///< 退出按钮
QMap<StandardButton, QString> m_BtnNames; ///< the name of the standard button
signals:
/**
* @brief
* @param[in] button
*/
void ButtonClicked(StandardButton button);
};
}
}
Q_DECLARE_OPERATORS_FOR_FLAGS(pai::gui::PaiMessageBox::StandardButtons)
#endif ///< PAI_FRAME_PIPROJECTMANAGEMENT_PAIMESSAGEBOX_H