From 242dbe75d2e9a76d87eaa831ada56e81dfff1a31 Mon Sep 17 00:00:00 2001 From: Arin Alexander Date: Sat, 4 Mar 2017 00:21:21 +0300 Subject: [PATCH] useAlternateBackgroundColor property has been added --- limereport/bands/lrdataband.cpp | 17 +++++++++++++++++ limereport/bands/lrdataband.h | 5 ++++- limereport/bands/lrsubdetailband.h | 1 + limereport/lrbanddesignintf.cpp | 27 ++++++++++++++++++++++++--- limereport/lrbanddesignintf.h | 5 ++++- limereport/lrreportrender.cpp | 15 ++++++++------- 6 files changed, 58 insertions(+), 12 deletions(-) diff --git a/limereport/bands/lrdataband.cpp b/limereport/bands/lrdataband.cpp index 342622a..4a67e58 100644 --- a/limereport/bands/lrdataband.cpp +++ b/limereport/bands/lrdataband.cpp @@ -79,6 +79,23 @@ bool DataBand::isUnique() const return false; } +void DataBand::preparePopUpMenu(QMenu &menu) +{ + DataBandDesignIntf::preparePopUpMenu(menu); + + QAction* autoSplittableAction = menu.addAction(tr("useAlternateBackgroundColor")); + autoSplittableAction->setCheckable(true); + autoSplittableAction->setChecked(useAlternateBackgroundColor()); +} + +void DataBand::processPopUpAction(QAction *action) +{ + DataBandDesignIntf::processPopUpAction(action); + if (action->text().compare(tr("useAlternateBackgroundColor")) == 0){ + setProperty("useAlternateBackgroundColor",action->isChecked()); + } +} + QColor DataBand::bandColor() const { return QColor(Qt::darkGreen); diff --git a/limereport/bands/lrdataband.h b/limereport/bands/lrdataband.h index fd180e8..f2ea27a 100644 --- a/limereport/bands/lrdataband.h +++ b/limereport/bands/lrdataband.h @@ -48,10 +48,13 @@ class DataBand : public DataBandDesignIntf Q_PROPERTY(bool startNewPage READ startNewPage WRITE setStartNewPage) Q_PROPERTY(bool startFromNewPage READ startFromNewPage WRITE setStartFromNewPage) Q_PROPERTY(QColor alternateBackgroundColor READ alternateBackgroundColor WRITE setAlternateBackgroundColor) + Q_PROPERTY(bool useAlternateBackgroundColor READ useAlternateBackgroundColor WRITE setUseAlternateBackgroundColor) public: DataBand(QObject* owner = 0, QGraphicsItem* parent=0); bool isUnique() const; bool isData() const {return true;} + void preparePopUpMenu(QMenu &menu); + void processPopUpAction(QAction *action); protected: QColor bandColor() const; private: @@ -82,7 +85,7 @@ class DataFooterBand : public BandDesignIntf Q_OBJECT Q_PROPERTY(int columnsCount READ columnsCount WRITE setColumnsCount) Q_PROPERTY(BandColumnsLayoutType columnsFillDirection READ columnsFillDirection WRITE setColumnsFillDirection) - Q_PROPERTY(bool printAlways READ printAlways() WRITE setPrintAlways()) + Q_PROPERTY(bool printAlways READ printAlways WRITE setPrintAlways) public: DataFooterBand(QObject* owner=0, QGraphicsItem* parent=0); bool isUnique() const {return false;} diff --git a/limereport/bands/lrsubdetailband.h b/limereport/bands/lrsubdetailband.h index c9b4c76..ae094e4 100644 --- a/limereport/bands/lrsubdetailband.h +++ b/limereport/bands/lrsubdetailband.h @@ -43,6 +43,7 @@ class SubDetailBand : public DataBandDesignIntf Q_PROPERTY(BandColumnsLayoutType columnsFillDirection READ columnsFillDirection WRITE setColumnsFillDirection) Q_PROPERTY(bool keepFooterTogether READ keepFooterTogether WRITE setKeepFooterTogether) Q_PROPERTY(QColor alternateBackgroundColor READ alternateBackgroundColor WRITE setAlternateBackgroundColor) + Q_PROPERTY(bool useAlternateBackgroundColor READ useAlternateBackgroundColor WRITE setUseAlternateBackgroundColor) public: SubDetailBand(QObject* owner = 0, QGraphicsItem* parent=0); bool isUnique() const {return false;} diff --git a/limereport/lrbanddesignintf.cpp b/limereport/lrbanddesignintf.cpp index 9a704f2..ed9a534 100644 --- a/limereport/lrbanddesignintf.cpp +++ b/limereport/lrbanddesignintf.cpp @@ -147,7 +147,8 @@ BandDesignIntf::BandDesignIntf(BandsType bandType, const QString &xmlTypeName, Q m_startNewPage(false), m_startFromNewPage(false), m_printAlways(false), - m_repeatOnEachRow(false) + m_repeatOnEachRow(false), + m_useAlternateBackgroundColor(false) { setPossibleResizeDirectionFlags(ResizeBottom); setPossibleMoveFlags(TopBotom); @@ -447,7 +448,7 @@ void BandDesignIntf::preparePopUpMenu(QMenu &menu) QAction* autoSplittableAction = menu.addAction(tr("Splittable")); autoSplittableAction->setCheckable(true); - autoSplittableAction->setChecked(isSplittable()); + autoSplittableAction->setChecked(isSplittable()); } void BandDesignIntf::processPopUpAction(QAction *action) @@ -780,6 +781,21 @@ void BandDesignIntf::childBandDeleted(QObject *band) m_childBands.removeAt(m_childBands.indexOf(reinterpret_cast(band))); } +bool BandDesignIntf::useAlternateBackgroundColor() const +{ + return m_useAlternateBackgroundColor; +} + +void BandDesignIntf::setUseAlternateBackgroundColor(bool useAlternateBackgroundColor) +{ + if (m_useAlternateBackgroundColor != useAlternateBackgroundColor){ + QColor oldValue = m_useAlternateBackgroundColor; + m_useAlternateBackgroundColor=useAlternateBackgroundColor; + if (!isLoading()) + notify("useAlternateBackgroundColor",oldValue,useAlternateBackgroundColor); + } +} + QColor BandDesignIntf::alternateBackgroundColor() const { if (metaObject()->indexOfProperty("alternateBackgroundColor")!=-1) @@ -790,7 +806,12 @@ QColor BandDesignIntf::alternateBackgroundColor() const void BandDesignIntf::setAlternateBackgroundColor(const QColor &alternateBackgroundColor) { - m_alternateBackgroundColor = alternateBackgroundColor; + if (m_alternateBackgroundColor != alternateBackgroundColor){ + QColor oldValue = m_alternateBackgroundColor; + m_alternateBackgroundColor=alternateBackgroundColor; + if (!isLoading()) + notify("alternateBackgroundColor",oldValue,alternateBackgroundColor); + } } bool BandDesignIntf::repeatOnEachRow() const diff --git a/limereport/lrbanddesignintf.h b/limereport/lrbanddesignintf.h index 0d92f5e..c53b9e3 100644 --- a/limereport/lrbanddesignintf.h +++ b/limereport/lrbanddesignintf.h @@ -219,6 +219,8 @@ public: void setRepeatOnEachRow(bool repeatOnEachRow); QColor alternateBackgroundColor() const; void setAlternateBackgroundColor(const QColor &alternateBackgroundColor); + bool useAlternateBackgroundColor() const; + void setUseAlternateBackgroundColor(bool useAlternateBackgroundColor); signals: void bandRendered(BandDesignIntf* band); @@ -276,7 +278,8 @@ private: bool m_printAlways; bool m_repeatOnEachRow; QMap m_slicedItems; - QColor m_alternateBackgroundColor; + QColor m_alternateBackgroundColor; + bool m_useAlternateBackgroundColor; }; class DataBandDesignIntf : public BandDesignIntf{ diff --git a/limereport/lrreportrender.cpp b/limereport/lrreportrender.cpp index aceca92..a497565 100644 --- a/limereport/lrreportrender.cpp +++ b/limereport/lrreportrender.cpp @@ -431,13 +431,14 @@ BandDesignIntf* ReportRender::renderBand(BandDesignIntf *patternBand, BandDesign if (patternBand->isFooter()) m_lastRenderedFooter = patternBand; - - bandClone->setBackgroundColor( - (datasources()->variable(QLatin1String("line_")+patternBand->objectName().toLower()).toInt() %2 !=0 ? - bandClone->backgroundColor(): - bandClone->alternateBackgroundColor() - ) - ); + if (bandClone->useAlternateBackgroundColor()){ + bandClone->setBackgroundColor( + (datasources()->variable(QLatin1String("line_")+patternBand->objectName().toLower()).toInt() %2 == 0 ? + bandClone->backgroundColor() : + bandClone->alternateBackgroundColor() + ) + ); + } patternBand->emitBandRendered(bandClone); emit(patternBand->afterRender());