0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-01-11 17:18:10 +03:00

useAlternateBackgroundColor property has been added

This commit is contained in:
Arin Alexander 2017-03-04 00:21:21 +03:00
parent 4c6c0dfd3b
commit 242dbe75d2
6 changed files with 58 additions and 12 deletions

View File

@ -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);

View File

@ -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;}

View File

@ -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;}

View File

@ -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<BandDesignIntf*>(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

View File

@ -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<QString,BaseDesignIntf*> m_slicedItems;
QColor m_alternateBackgroundColor;
QColor m_alternateBackgroundColor;
bool m_useAlternateBackgroundColor;
};
class DataBandDesignIntf : public BandDesignIntf{

View File

@ -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());