152 lines
4.3 KiB
C++
152 lines
4.3 KiB
C++
#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
|