COMPASSi/trunk/code/3rd/CCSReport_2/include/base/ccsbaseiteminterface.h

152 lines
4.3 KiB
C
Raw Normal View History

2025-06-25 15:06:42 +08:00
#ifndef CCSBASEITEMINTERFACE_H
#define CCSBASEITEMINTERFACE_H
#include <QVariant>
#include <QPen>
#include <QBrush>
#include <QObject>
#include <QMetaProperty>
#include "ccsbaseinterface.h"
#include "ccsreport_global.h"
namespace CCS_Report {
class CCSBaseInterface;
//class CCSReportCore;
//class CCSReport;
class CCSBaseItemInterfacePrivate;
class ReportFunPara;
class CCS_COMPASSREPORT_EXPORT CCSBaseItemInterface:public CCSBaseInterface
{
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE SetName)
Q_PROPERTY(QRectF geometry READ geometry WRITE SetGeometry)
// Q_PROPERTY(Frames frame READ frame WRITE setFrame)
Q_PROPERTY(int frame READ frame WRITE SetFrame)
Q_PROPERTY(QPen borderPen READ borderPen WRITE SetBorderPen)
Q_PROPERTY(QBrush backgroundBrush READ backgroundBrush WRITE SetBackgroundBrush )
Q_PROPERTY(int borderType READ borderType WRITE SetBorderType)
Q_PROPERTY(int selected READ selected WRITE SetSelected)
public:
CCSBaseItemInterface(QObject * parent);
~CCSBaseItemInterface();
// enum Frame {DrawLeft = CCS_Report::DrawFrame::DrawLeft, /**< Draw left frame*/
// DrawRight = CCS_Report::DrawFrame::DrawRight, /**< Draw right frame*/
// DrawTop = CCS_Report::DrawFrame::DrawTop, /**< Draw top frame*/
// DrawBottom = CCS_Report::DrawFrame::DrawBottom /**< Draw bottom frame*/
// };
// Q_ENUM(Frame)
// Q_FLAGS(Frames)
// Q_DECLARE_FLAGS(Frames, Frame)
enum BorderType { Middle = 0, Inner = 1, Outer = 2 };
Q_ENUM(BorderType)
/** 初始化 */
virtual void init();
virtual CCSBaseItemInterface * createInstance(QObject * parent) const = 0;
virtual CCSBaseItemInterface * clone(bool withChildren = true, bool init = true) const=0;
virtual void SetValue(const QString &text,int iPos=0) = 0;
virtual void exeFunction(ReportFunPara& arg) = 0;
// CCS_Report::CCSReport * reportObject();
virtual bool canContain(QObject * object);
virtual QRectF geometry() const;
virtual void SetGeometry(const QRectF & rect);
virtual int frame() const;
virtual void SetFrame(int frame);
virtual QPen borderPen() const;
virtual void SetBorderPen(const QPen & pen);
virtual QBrush backgroundBrush() const;
virtual void SetBackgroundBrush(const QBrush & brush);
virtual int borderType() const;
virtual void SetBorderType(int borderType);
CCSBaseItemInterface* item();
QList<CCSBaseItemInterface*> items();
QString name() const;
void SetName(const QString& n);
int selected() const;
void SetSelected(int& value);
public:
QVariantMap getProperties() const;
void setProperties(const QVariantMap& properties);
void copyProperties(const CCSBaseItemInterface* fromitem);
protected:
Q_DECLARE_PRIVATE(CCSBaseItemInterface)
CCSBaseItemInterface(CCSBaseItemInterfacePrivate *dd, QObject * parent);
virtual CCSBaseItemInterface * itemClone() const = 0;
CCSBaseItemInterfacePrivate * d_ptr;
CCSBaseItemInterfacePrivate * orig_ptr;
CCSBaseItemInterface* m_ParentItem;
// friend class CCSReportCore;
};
//Q_DECLARE_OPERATORS_FOR_FLAGS(CCSBaseItemInterface::Frames)
//Q_DECLARE_METATYPE(CCS_Report::CCSBaseItemInterface*)
//Q_DECLARE_METATYPE(CCS_Report::CCSBaseItemInterface::Frame)
//Q_DECLARE_METATYPE(CCS_Report::CCSBaseItemInterface::BorderType)
class CCSBaseItemInterfacePrivate
{
public:
CCSBaseItemInterfacePrivate():
m_BorderType(1),
m_Frame(0),
m_strName(""),
m_iSelected(1)
{
m_BorderPen.setWidth(0.3); // mm
m_BorderPen.setJoinStyle(Qt::MiterJoin);
}
CCSBaseItemInterfacePrivate(const CCSBaseItemInterfacePrivate & p):
m_BorderPen(p.m_BorderPen),
m_BackgroundBrush(p.m_BackgroundBrush),
m_Geometry(p.m_Geometry),
m_Frame(p.m_Frame),
m_BorderType(p.m_BorderType),
m_strName(p.m_strName),
m_iSelected(p.m_iSelected)
{}
virtual ~CCSBaseItemInterfacePrivate() {
}
QString m_strName;
QPen m_BorderPen;
QBrush m_BackgroundBrush;
QRectF m_Geometry; //
// CCSBaseItemInterface::Frames m_Frame;
// CCSBaseItemInterface::BorderType m_BorderType;
int m_Frame;
int m_BorderType;
int m_iSelected = 1; //是否选择输出 =0 不输出 =1 输出
};
}
#endif // CCSBASEITEMINTERFACE_H