383 lines
12 KiB
C
383 lines
12 KiB
C
|
#ifndef CCSREPORT_H
|
|||
|
#define CCSREPORT_H
|
|||
|
#include <QObject>
|
|||
|
#include "ccsbanddetail.h"
|
|||
|
#include "common_types.h"
|
|||
|
#include "ccsreport_global.h"
|
|||
|
|
|||
|
|
|||
|
namespace CCS_Report {
|
|||
|
//class CCSTable;
|
|||
|
|
|||
|
//class CCS_COMPASSREPORT_EXPORT CCSReport:public QObject
|
|||
|
class CCS_COMPASSREPORT_EXPORT CCSReport:public QObject
|
|||
|
{
|
|||
|
Q_OBJECT
|
|||
|
Q_PROPERTY(QString version READ version WRITE setVersion )
|
|||
|
Q_PROPERTY(QString description READ description WRITE setDescription)
|
|||
|
Q_PROPERTY(QString papersize READ papersize WRITE setPaperSize)
|
|||
|
|
|||
|
// Q_PROPERTY(QMargins reportmargin READ reportmargin WRITE SetReportMargin)
|
|||
|
Q_PROPERTY(int marginleft READ marginleft WRITE setMarginLeft)
|
|||
|
Q_PROPERTY(int margintop READ margintop WRITE setMarginTop)
|
|||
|
Q_PROPERTY(int marginright READ marginright WRITE setMarginRight)
|
|||
|
Q_PROPERTY(int marginbottom READ marginbottom WRITE setMarginBottom)
|
|||
|
Q_PROPERTY(int borderleft READ borderleft WRITE setBorderLeft)
|
|||
|
Q_PROPERTY(int bordertop READ bordertop WRITE setBorderTop)
|
|||
|
Q_PROPERTY(int borderright READ borderright WRITE setBorderRight)
|
|||
|
Q_PROPERTY(int borderbottom READ borderbottom WRITE setBorderBottom)
|
|||
|
Q_PROPERTY(bool showborder READ showborder WRITE setShowBorder) //边框是否显示
|
|||
|
Q_PROPERTY(QPen borderpen READ borderpen WRITE setBorderPen)
|
|||
|
|
|||
|
Q_PROPERTY(QString waterpath READ waterpath WRITE SetWaterPath)
|
|||
|
Q_PROPERTY(QSize watersize READ watersize WRITE SetWaterSize)
|
|||
|
Q_PROPERTY(int wateropacity READ wateropacity WRITE SetWaterOpacity)
|
|||
|
Q_PROPERTY(int waterangle READ waterangle WRITE SetWaterAngle)
|
|||
|
Q_PROPERTY(int watershowtype READ watershowtype WRITE SetWaterShowType)
|
|||
|
Q_PROPERTY(QString waterinfo READ waterinfo WRITE SetWaterInfo)
|
|||
|
|
|||
|
Q_PROPERTY(QFont defaultfont READ defaultfont WRITE SetDefaultFont)
|
|||
|
Q_PROPERTY(int waterposition READ waterposition WRITE SetWaterPosition)
|
|||
|
Q_PROPERTY(QString dirname READ dirname WRITE setDirName)
|
|||
|
|
|||
|
Q_PROPERTY(bool hasdirectory READ hasdirectory WRITE setHasDirectory) //是否有目录
|
|||
|
Q_PROPERTY(int numberstyle READ numberstyle WRITE setNumberStyle)
|
|||
|
Q_PROPERTY(int dirmaxgrade READ dirmaxgrade WRITE setDirMaxGrade)
|
|||
|
|
|||
|
Q_PROPERTY(int dirorient READ dirorient WRITE setDirOrient) //目录页方向
|
|||
|
|
|||
|
private:
|
|||
|
QString m_strVersion; //报告模板版本
|
|||
|
QString m_strDescription; //报告描述
|
|||
|
// QMargins m_Border; //页边框 显示用
|
|||
|
QMarginsF m_marginHeader; //页眉的边距
|
|||
|
QMarginsF m_marginFooter; //页脚边距
|
|||
|
QMarginsF m_marginContent; //页边距 //像素计算后的
|
|||
|
|
|||
|
int m_iBorderLeft = 5;
|
|||
|
int m_iBorderTop = 5;
|
|||
|
int m_iBorderBottom = 5;
|
|||
|
int m_iBorderRight = 5;
|
|||
|
bool m_bShowBorder = false; //边框是否显示
|
|||
|
QPen m_penBorder = QPen();
|
|||
|
|
|||
|
int m_iMarginLeft = 5;
|
|||
|
int m_iMarginTop = 5;
|
|||
|
int m_iMarginBottom = 5;
|
|||
|
int m_iMarginRight = 5;
|
|||
|
int m_currentorietation;
|
|||
|
int m_numberstyle; //页码类型
|
|||
|
int m_iDirOrientation = 0; //目录页的方向
|
|||
|
bool m_bHasDirectory = false; //是否有目录 =true 有 = false 无
|
|||
|
int m_iDirMaxGrade = 5; //在目录中显示的最大级别
|
|||
|
QString m_strDirName; //目录名称
|
|||
|
QFont m_font;
|
|||
|
QSize m_sizePage; //页的正常宽度、高度 ,当遇到页的方向变化时,宽、高互换进行计算
|
|||
|
QString m_strPaperSize = "A4";
|
|||
|
|
|||
|
//水印
|
|||
|
QString m_strWaterPath;
|
|||
|
QSize m_sizeWater;
|
|||
|
int m_iWaterOpacity;
|
|||
|
int m_iWaterAngle; //逆时针角度
|
|||
|
int m_iWaterShowType; //居中、平铺
|
|||
|
QString m_strWaterInfo;
|
|||
|
QFont m_defaultfont;
|
|||
|
int m_iPosition; //水印叠加位置 =0 图层之下 =1 图层之上 假设只有2层
|
|||
|
|
|||
|
public:
|
|||
|
CCSReport();
|
|||
|
~ CCSReport();
|
|||
|
|
|||
|
void CCSReport::itemClone(CCSReport* report);
|
|||
|
|
|||
|
int marginleft() const
|
|||
|
{
|
|||
|
return m_iMarginLeft;
|
|||
|
}
|
|||
|
int margintop() const
|
|||
|
{
|
|||
|
return m_iMarginTop;
|
|||
|
}
|
|||
|
int marginright() const
|
|||
|
{
|
|||
|
return m_iMarginRight;
|
|||
|
}
|
|||
|
int marginbottom() const
|
|||
|
{
|
|||
|
return m_iMarginBottom;
|
|||
|
}
|
|||
|
void setMarginLeft(int margin)
|
|||
|
{
|
|||
|
m_iMarginLeft = margin;
|
|||
|
}
|
|||
|
void setMarginTop(int margin)
|
|||
|
{
|
|||
|
m_iMarginTop= margin;
|
|||
|
}
|
|||
|
|
|||
|
void setMarginRight(int margin)
|
|||
|
{
|
|||
|
m_iMarginRight = margin;
|
|||
|
}
|
|||
|
void setMarginBottom(int margin)
|
|||
|
{
|
|||
|
m_iMarginBottom = margin;
|
|||
|
}
|
|||
|
void setMargin(const int &left,const int &top,const int &right,const int &bottom)
|
|||
|
{
|
|||
|
m_iMarginLeft = left;
|
|||
|
m_iMarginRight = right;
|
|||
|
m_iMarginBottom = bottom;
|
|||
|
m_iMarginTop = top;
|
|||
|
}
|
|||
|
void setMargin(const QMargins& margin)
|
|||
|
{
|
|||
|
m_iMarginLeft = margin.left();
|
|||
|
m_iMarginRight = margin.right();
|
|||
|
m_iMarginBottom = margin.bottom();
|
|||
|
m_iMarginTop = margin.top();
|
|||
|
}
|
|||
|
QMargins margins() const
|
|||
|
{
|
|||
|
return QMargins(m_iMarginLeft,m_iMarginTop,m_iMarginRight,m_iMarginBottom);
|
|||
|
}
|
|||
|
QString papersize() const
|
|||
|
{
|
|||
|
return m_strPaperSize;
|
|||
|
}
|
|||
|
void setPaperSize(const QString& size)
|
|||
|
{
|
|||
|
m_strPaperSize = size;
|
|||
|
}
|
|||
|
QSize pagesize() const
|
|||
|
{
|
|||
|
return m_sizePage;
|
|||
|
}
|
|||
|
void SetPageSize(const QSize& size)
|
|||
|
{
|
|||
|
m_sizePage = size;
|
|||
|
#ifdef Report_LOG
|
|||
|
QLOG_INFO() <<QString("report size:width %1 height %2 ").arg(m_sizePage.width(), m_sizePage.height());
|
|||
|
#endif // Report_LOG
|
|||
|
|
|||
|
}
|
|||
|
QString version() { return m_strVersion; }
|
|||
|
void setVersion(QString ver) { m_strVersion = ver; }
|
|||
|
|
|||
|
int borderleft() const
|
|||
|
{
|
|||
|
return m_iBorderLeft;
|
|||
|
}
|
|||
|
int bordertop() const
|
|||
|
{
|
|||
|
return m_iBorderTop;
|
|||
|
}
|
|||
|
int borderright() const
|
|||
|
{
|
|||
|
return m_iBorderRight;
|
|||
|
}
|
|||
|
int borderbottom() const
|
|||
|
{
|
|||
|
return m_iBorderBottom;
|
|||
|
}
|
|||
|
void setBorderLeft(int margin)
|
|||
|
{
|
|||
|
m_iBorderLeft = margin;
|
|||
|
}
|
|||
|
void setBorderTop(int margin)
|
|||
|
{
|
|||
|
m_iBorderTop= margin;
|
|||
|
}
|
|||
|
|
|||
|
void setBorderRight(int margin)
|
|||
|
{
|
|||
|
m_iBorderRight = margin;
|
|||
|
}
|
|||
|
void setBorderBottom(int margin)
|
|||
|
{
|
|||
|
m_iBorderBottom = margin;
|
|||
|
}
|
|||
|
void setBorder(const int &left,const int &right,const int &top,const int &bottom)
|
|||
|
{
|
|||
|
m_iBorderLeft = left;
|
|||
|
m_iBorderRight = right;
|
|||
|
m_iBorderBottom = bottom;
|
|||
|
m_iBorderTop = top;
|
|||
|
}
|
|||
|
void setBorder(const QMargins& margin)
|
|||
|
{
|
|||
|
m_iBorderLeft = margin.left();
|
|||
|
m_iBorderRight = margin.right();
|
|||
|
m_iBorderBottom = margin.bottom();
|
|||
|
m_iBorderTop = margin.top();
|
|||
|
}
|
|||
|
QMargins border() const
|
|||
|
{
|
|||
|
return QMargins(m_iMarginLeft,m_iMarginTop,m_iMarginRight,m_iMarginBottom);
|
|||
|
}
|
|||
|
QFont GetDirectoryFont()
|
|||
|
{
|
|||
|
return m_font;
|
|||
|
}
|
|||
|
void SetDirectoryFont(QFont font)
|
|||
|
{
|
|||
|
m_font = font;
|
|||
|
}
|
|||
|
// QMargins reportmargin() const
|
|||
|
// {
|
|||
|
// return m_marginContent;
|
|||
|
// }
|
|||
|
// void SetReportMargin(QMargins margin)
|
|||
|
// {
|
|||
|
// m_marginContent = margin;
|
|||
|
// }
|
|||
|
|
|||
|
QMarginsF headermargin() const
|
|||
|
{
|
|||
|
return m_marginHeader;
|
|||
|
}
|
|||
|
void SetHeaderMargin(QMarginsF margin)
|
|||
|
{
|
|||
|
m_marginHeader = margin;
|
|||
|
#ifdef Report_LOG
|
|||
|
QLOG_INFO() <<QString("Header margion:left: %1 top: %2 right: %3 bottom: %4 ").arg( m_marginHeader.left(), m_marginHeader.top(), m_marginHeader.right(), m_marginHeader.bottom());
|
|||
|
#endif // Report_LOG
|
|||
|
}
|
|||
|
|
|||
|
QMarginsF footermargin() const
|
|||
|
{
|
|||
|
return m_marginFooter;
|
|||
|
}
|
|||
|
void SetFooterMargin(QMarginsF margin)
|
|||
|
{
|
|||
|
m_marginFooter = margin;
|
|||
|
#ifdef Report_LOG
|
|||
|
QLOG_INFO() << QString("Footer margion:left: %1 top: %2 right: %3 bottom: %4 ").arg(m_marginFooter.left(), m_marginFooter.top(), m_marginFooter.right(), m_marginFooter.bottom());
|
|||
|
#endif // Report_LOG
|
|||
|
|
|||
|
}
|
|||
|
void SetContentMargin(QMarginsF margin)
|
|||
|
{
|
|||
|
m_marginContent = margin;
|
|||
|
#ifdef Report_LOG
|
|||
|
QLOG_INFO() << QString("Content margion:left: %1 top: %2 right: %3 bottom: %4 ").arg(m_marginContent.left(), m_marginContent.top(), m_marginContent.right(), m_marginContent.bottom());
|
|||
|
#endif // Report_LOG
|
|||
|
|
|||
|
}
|
|||
|
QMarginsF contentmargin()const
|
|||
|
{
|
|||
|
return m_marginContent;
|
|||
|
}
|
|||
|
int numberstyle() const
|
|||
|
{
|
|||
|
return m_numberstyle;
|
|||
|
}
|
|||
|
void setNumberStyle(int style)
|
|||
|
{
|
|||
|
m_numberstyle = style;
|
|||
|
}
|
|||
|
int dirmaxgrade() const
|
|||
|
{
|
|||
|
return m_iDirMaxGrade;
|
|||
|
}
|
|||
|
void setDirMaxGrade(int index)
|
|||
|
{
|
|||
|
m_iDirMaxGrade = index;
|
|||
|
}
|
|||
|
void setBorderPen(QPen pen) { m_penBorder = pen; }
|
|||
|
QPen borderpen() const { return m_penBorder; }
|
|||
|
|
|||
|
bool showborder() { return m_bShowBorder; }
|
|||
|
void setShowBorder(bool value) { m_bShowBorder = value; }
|
|||
|
bool hasdirectory() { return m_bHasDirectory; }
|
|||
|
void setHasDirectory(bool value) { m_bHasDirectory = value; }
|
|||
|
int dirorient() { return m_iDirOrientation; }
|
|||
|
void setDirOrient(int value) { m_iDirOrientation = value; }
|
|||
|
|
|||
|
//QString version() { return m_strVersion; }
|
|||
|
//void SetVersion(QString ver) { m_strVersion = ver; }
|
|||
|
|
|||
|
QString description() { return m_strDescription; }
|
|||
|
void setDescription(QString ver) { m_strDescription = ver; }
|
|||
|
|
|||
|
QString dirname() { return m_strDirName; }
|
|||
|
void setDirName(QString ver) { m_strDirName = ver; }
|
|||
|
|
|||
|
QString waterpath(){return m_strWaterPath;}
|
|||
|
void SetWaterPath(QString path){m_strWaterPath = path;}
|
|||
|
|
|||
|
QSize watersize() {return m_sizeWater;}
|
|||
|
void SetWaterSize(QSize size){m_sizeWater = size;}
|
|||
|
|
|||
|
int wateropacity(){return m_iWaterOpacity;}
|
|||
|
void SetWaterOpacity(int value){m_iWaterOpacity = value;}
|
|||
|
int waterangle(){return m_iWaterAngle;}
|
|||
|
void SetWaterAngle(int value){m_iWaterAngle = value;}
|
|||
|
int watershowtype(){return m_iWaterShowType;}
|
|||
|
void SetWaterShowType(int value){m_iWaterShowType = value;}
|
|||
|
QString waterinfo(){return m_strWaterInfo;}
|
|||
|
void SetWaterInfo(QString value){m_strWaterInfo = value;}
|
|||
|
|
|||
|
QFont defaultfont(){return m_defaultfont;}
|
|||
|
void SetDefaultFont(QFont value){m_defaultfont = value;}
|
|||
|
|
|||
|
int waterposition(){return m_iPosition;}
|
|||
|
void SetWaterPosition(int value){m_iPosition = value;}
|
|||
|
|
|||
|
template<typename T>
|
|||
|
T* band()
|
|||
|
{
|
|||
|
return findChild<T*>(QString(), Qt::FindDirectChildrenOnly);
|
|||
|
}
|
|||
|
CCS_Report::CCSBandHeader* header()
|
|||
|
{
|
|||
|
return findChild<CCS_Report::CCSBandHeader*>(QString(),Qt::FindDirectChildrenOnly);
|
|||
|
}
|
|||
|
CCS_Report::CCSBandFooter* footer()
|
|||
|
{
|
|||
|
return findChild<CCS_Report::CCSBandFooter*>(QString(),Qt::FindDirectChildrenOnly);
|
|||
|
}
|
|||
|
CCS_Report::CCSBandAppendix* appendix()
|
|||
|
{
|
|||
|
return findChild<CCS_Report::CCSBandAppendix*>(QString(),Qt::FindDirectChildrenOnly);
|
|||
|
}
|
|||
|
CCS_Report::CCSBandDirectory* directory()
|
|||
|
{
|
|||
|
return findChild<CCS_Report::CCSBandDirectory*>(QString(),Qt::FindDirectChildrenOnly);
|
|||
|
}
|
|||
|
CCS_Report::CCSBandCover* cover()
|
|||
|
{
|
|||
|
return findChild<CCS_Report::CCSBandCover*>(QString(),Qt::FindDirectChildrenOnly);
|
|||
|
}
|
|||
|
CCS_Report::CCSBandWater* water()
|
|||
|
{
|
|||
|
return findChild<CCS_Report::CCSBandWater*>(QString(), Qt::FindDirectChildrenOnly);
|
|||
|
}
|
|||
|
CCS_Report::CCSBandContent* content()
|
|||
|
{
|
|||
|
return findChild<CCS_Report::CCSBandContent*>(QString(),Qt::FindDirectChildrenOnly);
|
|||
|
}
|
|||
|
public:
|
|||
|
|
|||
|
void BindData();
|
|||
|
void PreHandleMargin(int width,int height);
|
|||
|
|
|||
|
QSize GetPageSize(CCSReportType::OrientationFlag orient);
|
|||
|
qreal GetItemWidth(CCSReportType::OrientationFlag orient,qreal& itemleft,qreal itemright);
|
|||
|
|
|||
|
//根据百分比,得出在页中的实际宽度
|
|||
|
// void SetTableMargin(CCSTable* table,CCSReportType::OrientationFlag orient);
|
|||
|
QMarginsF GetPixelMargin(const QMargins& margin,QSize sizePixel);
|
|||
|
QImage CreateWaterMask();
|
|||
|
ReportSelectedTree* getReportTree();
|
|||
|
void getReportSubTree(CCSTableInterface* pTable,ReportSelectedTree*& tree, int& currentGrade);
|
|||
|
|
|||
|
void setReportTree(ReportSelectedTree* tree);
|
|||
|
|
|||
|
void upgradeTemplate(QString strVer = QString());
|
|||
|
void upgradeTemplate(QObject* object,QString strVer = QString());
|
|||
|
};
|
|||
|
}
|
|||
|
#endif // CCSREPORT_H
|