logplus/Workflow/WFCrystal/Crystal/include/GlobalUtility.h

274 lines
8.8 KiB
C
Raw Normal View History

2026-01-16 17:18:41 +08:00
/**
* @file GlobalUtility.h
* @brief
*
*
* @date 2014-11-07
*/
#ifndef PAI_CRYSTAL_GLOBALUTITILITY_H
#define PAI_CRYSTAL_GLOBALUTITILITY_H
#include <QString>
#include <QObject>
#include <QRect>
#include "Turtle.h"
const QString ErrorTag = "--"; ///< 非法数值无法正确转换成字符串,统一使用此字符串替代
const long KB_BYTE_COUNT = 1024; ///< KB
const long MB_BYTE_COUNT = 1024*KB_BYTE_COUNT; ///< MB
const long GB_BYTE_COUNT = 1024*MB_BYTE_COUNT; ///< GB
const long TB_BYTE_COUNT = 1024*GB_BYTE_COUNT; ///< TB
/**
* @brief 使使,使
*/
#define RejectClosing(); sender()->setProperty("Close", false);
/**
* @brief 使
* @param[in] pObject
*/
#define RejectClosing_P(pObject); pObject->setProperty("Close", false);
/**
* @brief 使使,使
*/
#define AcceptClosing(); sender()->setProperty("Close", true);
/**
* @brief 使
* @param[in] pObject
*/
#define AcceptClosing_P(pObject); pObject->setProperty("Close", true);
/**
* @brief
* @param[in] pObject
*/
#define IsCloseable(pObject) pObject->property("Close").toBool()
/**
* @brief
* @param[in] pObject
*/
template< typename T >
T* GetFirstChildObject(QObject *pObject)
{
T *pT = dynamic_cast< T* > (pObject);
if(pT != NULL)
{
return pT;
}
else
{
return pObject->findChild< T* > ();
}
}
/**
* @brief
* @param[in] pObject
*/
template< typename T >
T* GetFirstParentObject(QObject *pObject)
{
QObject *pParentObject = pObject;
while(pParentObject != NULL)
{
T *pT = dynamic_cast< T* > (pParentObject);
if(pT != NULL)
{
return pT;
}
pParentObject = pParentObject->parent();
}
return NULL;
}
/**
* @brief
* @param[in] pObject
*/
template< typename T >
T* GetLastParentObject(QObject *pObject)
{
T *pLastParent = NULL;
QObject *pParentObject = pObject;
while(pParentObject != NULL)
{
T *pT = dynamic_cast< T* > (pParentObject);
if(pT != NULL)
{
pLastParent = pT;
}
pParentObject = pParentObject->parent();
}
return pLastParent;
}
namespace pai
{
namespace gui
{
/**
* @brief 010.0768
* @param[in] value
* @return
*/
extern PAI_CRYSTAL_EXPORT int Percentage(const qreal value);
/**
* @brief 01nn%0.0768%
* @param[in] value
* @return
*/
extern PAI_CRYSTAL_EXPORT QString PercentageFormat(const qreal value);
/**
* @brief
* @param[in] pWidget
* @param[in] localRect
* @return
*/
extern PAI_CRYSTAL_EXPORT QRect MapToGlobal(QWidget *pWidget, const QRect & localRect);
/**
* @brief
* @param[in] pWidget
* @param[in] globalRect
* @return
*/
extern PAI_CRYSTAL_EXPORT QRect MapFromGlobal(QWidget *pWidget, const QRect & globalRect);
/**
* @brief
* @param[in] tempPath
* @return
*/
extern PAI_CRYSTAL_EXPORT QString GetPaiTmpHomePath(const QString & tempPath);
/**
* @brief
* @param[in] pPath
* @return
*/
extern PAI_CRYSTAL_EXPORT long GetDirFreeSpace(const char *pPath);
/**
* @brief
* @param[in] quota
* @return
*/
extern PAI_CRYSTAL_EXPORT long StringToDigitSize(QString quota);
/**
* @brief
* @param[in] size
* @param[in] moreSpace truesize,size
* @return
*/
extern PAI_CRYSTAL_EXPORT QString DigitSizeToString(long size, bool moreSpace = false);
/**
* @brief QString的大小
* @param[in] leftString
* @param[in] rightString
* @return leftString > rightString
*/
extern PAI_CRYSTAL_EXPORT bool CaseInsensitiveLessThan(const QString & leftString, const QString & rightString);
/**
* @brief double类型数据转为QString对象
* 00.6.12006.12
* @param[in] value double对象
* @param[in] decimal
* @return QString value
*/
extern PAI_CRYSTAL_EXPORT QString DoubleToQString(double value, int decimal = 6);
/**
* @brief int类型数据转为非科学计算法的QString对象
* @param[in] value int对象
* @return QString value
*/
extern PAI_CRYSTAL_EXPORT QString IntToQString(int value);
}
}
namespace pai
{
namespace gui
{
static const int GRID_LEFT_MARGIN = 20; ///< 布局左边界
static const int GRID_TOP_MARGIN = 20; ///< 布局上边界
static const int GRID_RIGHT_MARGIN = 20; ///< 布局右边界
static const int GRID_BOTTOM_MARGIN = 15; ///< 布局下边界
static const int GRID_H_SPACING = 10; ///< 水平方向控件间间隔
static const int GRID_V_SPACING = 10; ///< 垂直方向控件间间隔
/**
* @enmu PAIItemDataRole
* @brief Qt::ItemDataRole,使PAI系统自定义的数据
*/
enum PAIItemDataRole
{
IDRole = 32, ///< 等同于Qt::UserRole通常用来匹配ID性质的数据
DBIDRole = 33, ///< 通常用来匹配数据库ID性质的数据
HilightRole = 34, ///< 通常用来匹配是否高亮的数据
HintRole = 35, ///< 通常用来匹配提示信息
RenameRole = 36, ///< 通常用来匹配工作流重命名的数据
SearchRole = 37, ///< 通常用来匹配数据树和模块树的搜索操作中的数据
TypeRole = 38, ///< 通常用来区分节点所表示的类型
DataSortRole = 39, ///< 通常用来区分节点代表的排序数据,根据DataSortRole中数据类型和数值进行排序
TextSortRole = 40, ///< 通常用来区分节点代表的排序数据类型根据TextSortRole中数据类型值VariantType,将text转换成对应数据类型再进行排序
ObjectRole = 41, ///< 用来表示一个对象(通常是指针)
ExtendRole = 1000 ///< 各工程需要拓展Role,可从此数值之后,以避免重复【请保证此项置于最后一行】
};
/**
* @enum VariantType
* @brief Item的数据类型TextSortRole配合使用
*/
enum VariantType
{
INT = 1, ///< int类型
UINT = 2, ///> unsigned int类型
LONGLONG = 3, ///< longlong类型
FLOAT = 4, ///< float类型
UFLOAT = 5, ///< unsigned float类型
DOUBLE = 6, ///< double类型
UDOUBLE = 7, ///< unsigned double类型
QSTRING = 8, ///< QString类型
DATATIME = 9, ///< QDataTime类型
ExtendDataType = 1000 ///< 各工程需要拓展数据类型,可从此数值之后,以避免重复【请保证此项置于最后一行】
};
/**
* @enum DragSource
* @brief
*/
enum DragSource
{
DRAGSOURCE_UserType = 1000 ///< 用户自定义类型需要在该数字后定义
};
/**
* @struct DraggedData
* @brief
*/
typedef struct
{
int dataSource; ///< 数据来源
QString id; ///< 数据唯一表示符
QString dataName; ///< 数据名称
QString dataType; ///< 数据类型
QString reserve; ///< 保留字段(可以为空,也可以定义自己格式的字符串)
}DraggedData;
}
}
#endif ///< PAI_CRYSTAL_GLOBALUTITILITY_H