#ifndef CCSBASEITEMINTERFACE_H #define CCSBASEITEMINTERFACE_H #include #include #include #include #include #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 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