diff --git a/limereport/lrbasedesignintf.cpp b/limereport/lrbasedesignintf.cpp index 5fe5db7..1a9f47b 100644 --- a/limereport/lrbasedesignintf.cpp +++ b/limereport/lrbasedesignintf.cpp @@ -75,7 +75,8 @@ BaseDesignIntf::BaseDesignIntf(const QString &storageTypeName, QObject *owner, Q m_margin(4), m_itemAlign(DesignedItemAlign), m_changingItemAlign(false), - m_borderColor(Qt::black) + m_borderColor(Qt::black), + m_reportSettings(0) { setGeometry(QRectF(0, 0, m_width, m_height)); if (BaseDesignIntf *item = dynamic_cast(parent)) { @@ -626,6 +627,19 @@ void BaseDesignIntf::turnOnSelectionMarker(bool value) } } +ReportSettings *BaseDesignIntf::reportSettings() const +{ + return m_reportSettings; +} + +void BaseDesignIntf::setReportSettings(ReportSettings *reportSettings) +{ + m_reportSettings = reportSettings; + foreach(BaseDesignIntf* child, childBaseItems()){ + child->setReportSettings(reportSettings); + } +} + QColor BaseDesignIntf::borderColor() const { return m_borderColor; @@ -1187,6 +1201,7 @@ BaseDesignIntf *BaseDesignIntf::cloneItemWOChild(ItemMode mode, QObject *owner, clone->setObjectName(this->objectName()); clone->setItemMode(mode); clone->objectLoadStarted(); + clone->setReportSettings(this->reportSettings()); for (int i = 0; i < clone->metaObject()->propertyCount(); i++) { if (clone->metaObject()->property(i).isWritable()) clone->setProperty(clone->metaObject()->property(i).name(), property(clone->metaObject()->property(i).name())); diff --git a/limereport/lrbasedesignintf.h b/limereport/lrbasedesignintf.h index a3d21c6..440a53e 100644 --- a/limereport/lrbasedesignintf.h +++ b/limereport/lrbasedesignintf.h @@ -245,7 +245,9 @@ public: QColor borderColor() const; void setBorderColor(const QColor &borderColor); void setItemVisible(const bool& value); - virtual bool canContainChildren(){ return false;} + virtual bool canContainChildren(){ return false;} + ReportSettings* reportSettings() const; + void setReportSettings(ReportSettings *reportSettings); protected: //ICollectionContainer @@ -347,6 +349,7 @@ private: ItemAlign m_itemAlign; bool m_changingItemAlign; QColor m_borderColor; + ReportSettings* m_reportSettings; signals: void geometryChanged(QObject* object, QRectF newGeometry, QRectF oldGeometry); void posChanged(QObject* object, QPointF newPos, QPointF oldPos); diff --git a/limereport/lrpagedesignintf.cpp b/limereport/lrpagedesignintf.cpp index dfda279..bb3f2b0 100644 --- a/limereport/lrpagedesignintf.cpp +++ b/limereport/lrpagedesignintf.cpp @@ -92,7 +92,8 @@ PageDesignIntf::PageDesignIntf(QObject *parent): m_multiSelectStarted(false), m_movedItem(0), m_joinItem(0), - m_magneticMovement(false) + m_magneticMovement(false), + m_reportSettings(0) { m_reportEditor = dynamic_cast(parent); updatePageRect(); @@ -1044,6 +1045,17 @@ void PageDesignIntf::changeSelectedGroupProperty(const QString &name, const QVar } } +ReportSettings *PageDesignIntf::getReportSettings() const +{ + return m_reportSettings; +} + +void PageDesignIntf::setReportSettings(ReportSettings *reportSettings) +{ + m_reportSettings = reportSettings; + m_pageItem->setReportSettings(m_reportSettings); +} + bool PageDesignIntf::magneticMovement() const { return m_magneticMovement; diff --git a/limereport/lrpagedesignintf.h b/limereport/lrpagedesignintf.h index 5dd36d4..40572d5 100644 --- a/limereport/lrpagedesignintf.h +++ b/limereport/lrpagedesignintf.h @@ -178,6 +178,9 @@ namespace LimeReport { bool magneticMovement() const; void setMagneticMovement(bool magneticMovement); + ReportSettings *getReportSettings() const; + void setReportSettings(ReportSettings *reportSettings); + protected: virtual void keyPressEvent(QKeyEvent *event); @@ -309,6 +312,7 @@ namespace LimeReport { BaseDesignIntf* m_joinItem; JoinType m_joinType; bool m_magneticMovement; + ReportSettings* m_reportSettings; }; class AbstractPageCommand : public CommandIf{ diff --git a/limereport/lrreportengine.cpp b/limereport/lrreportengine.cpp index 7a63217..06fe5ab 100644 --- a/limereport/lrreportengine.cpp +++ b/limereport/lrreportengine.cpp @@ -93,6 +93,7 @@ PageDesignIntf *ReportEnginePrivate::createPage(const QString &pageName) PageDesignIntf* page =new PageDesignIntf(); page->setObjectName(pageName); page->setReportEditor(this); + page->setReportSettings(&m_reportSettings); return page; } @@ -117,6 +118,7 @@ void ReportEnginePrivate::collectionLoadFinished(const QString &) { foreach (PageDesignIntf* page, m_pages) { page->setReportEditor(this); + page->setReportSettings(&m_reportSettings); page->setSceneRect(-Const::SCENE_MARGIN,-Const::SCENE_MARGIN, page->pageItem()->width()+Const::SCENE_MARGIN*2, page->pageItem()->height()+Const::SCENE_MARGIN*2); @@ -152,6 +154,7 @@ void ReportEnginePrivate::clearReport() m_pages.clear(); m_datasources->clear(DataSourceManager::Owned); m_fileName=""; + m_reportSettings.setDefaultValues(); emit cleared(); } @@ -559,6 +562,16 @@ QString ReportEnginePrivate::renderToString() }else return QString(); } +bool ReportEnginePrivate::suppressFieldAndVarError() const +{ + return m_reportSettings.suppressAbsentFieldsAndVarsWarnings(); +} + +void ReportEnginePrivate::setSuppressFieldAndVarError(bool suppressFieldAndVarError) +{ + m_reportSettings.setSuppressAbsentFieldsAndVarsWarnings(suppressFieldAndVarError); +} + QString ReportEnginePrivate::previewWindowTitle() const { return m_previewWindowTitle; @@ -582,7 +595,7 @@ void ReportEnginePrivate::setPreviewWindowIcon(const QIcon &previewWindowIcon) ReportPages ReportEnginePrivate::renderToPages() { m_reportRender = ReportRender::Ptr(new ReportRender); - dataManager()->clearErrorsList(); + dataManager()->clearErrors(); dataManager()->connectAllDatabases(); dataManager()->setDesignTime(false); connect(m_reportRender.data(),SIGNAL(pageRendered(int)), @@ -590,6 +603,7 @@ ReportPages ReportEnginePrivate::renderToPages() if (m_pages.count()){ emit renderStarted(); m_reportRender->setDatasources(dataManager()); + m_pages.at(0)->setReportSettings(&m_reportSettings); ReportPages result = m_reportRender->renderPageToPages(m_pages.at(0)); emit renderFinished(); return result; diff --git a/limereport/lrreportengine_p.h b/limereport/lrreportengine_p.h index da9ce08..e489cc9 100644 --- a/limereport/lrreportengine_p.h +++ b/limereport/lrreportengine_p.h @@ -56,6 +56,7 @@ class ReportEnginePrivate : public QObject, public ICollectionContainer Q_DECLARE_PUBLIC(ReportEngine) Q_PROPERTY(ACollectionProperty pages READ fakeCollectionReader()) Q_PROPERTY(QObject* datasourcesManager READ dataManager()) + Q_PROPERTY(bool suppressFieldAndVarError READ suppressFieldAndVarError WRITE setSuppressFieldAndVarError) friend class PreviewReportWidget; public: static void printReport(ItemsReaderIntf::Ptr reader, QPrinter &printer); @@ -112,6 +113,9 @@ public: QString previewWindowTitle() const; void setPreviewWindowTitle(const QString &previewWindowTitle); + bool suppressFieldAndVarError() const; + void setSuppressFieldAndVarError(bool suppressFieldAndVarError); + signals: void pagesLoadFinished(); void datasourceCollectionLoadFinished(const QString& collectionName); @@ -158,6 +162,7 @@ private: QIcon m_previewWindowIcon; QString m_previewWindowTitle; QPointer m_designerWindow; + ReportSettings m_reportSettings; }; }