backgroundBrushStyle property has been added

This commit is contained in:
Arin Alexander 2016-12-21 22:09:10 +03:00
parent f72f1a743e
commit 7da0cfd7e2
6 changed files with 77 additions and 52 deletions

View File

@ -85,7 +85,7 @@ void ShapeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
pen.setStyle(m_penStyle); pen.setStyle(m_penStyle);
painter->setPen(pen); painter->setPen(pen);
QBrush brush(m_shapeBrushColor,m_shapeBrushType); QBrush brush(m_shapeBrushColor,m_shapeBrushType);
brush.setTransform(painter->worldTransform().inverted());
painter->setBrush(brush); painter->setBrush(brush);
painter->setBackground(QBrush(Qt::NoBrush)); painter->setBackground(QBrush(Qt::NoBrush));
painter->setOpacity(qreal(m_opacity)/100); painter->setOpacity(qreal(m_opacity)/100);

View File

@ -68,6 +68,7 @@ class TextItem : public LimeReport::ContentItemDesignIntf, IPageInit {
Q_PROPERTY(QString format READ format WRITE setFormat) Q_PROPERTY(QString format READ format WRITE setFormat)
Q_PROPERTY(ValueType valueType READ valueType WRITE setValueType) Q_PROPERTY(ValueType valueType READ valueType WRITE setValueType)
Q_PROPERTY(QString followTo READ followTo WRITE setFollowTo) Q_PROPERTY(QString followTo READ followTo WRITE setFollowTo)
Q_PROPERTY(BrushStyle backgroundBrushStyle READ backgroundBrushStyle WRITE setBackgroundBrushStyle)
public: public:
enum AutoWidth{NoneAutoWidth,MaxWordLength,MaxStringLength}; enum AutoWidth{NoneAutoWidth,MaxWordLength,MaxStringLength};

View File

@ -183,16 +183,20 @@ BandDesignIntf::~BandDesignIntf()
delete m_bandNameLabel; delete m_bandNameLabel;
} }
void BandDesignIntf::paint(QPainter *ppainter, const QStyleOptionGraphicsItem *option, QWidget *widget) void BandDesignIntf::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{ {
if (backgroundColor()!=Qt::white) {
ppainter->fillRect(rect(),backgroundColor()); if ( !(backgroundColor() == Qt::white && backgroundBrushStyle() == SolidPattern) ) {
QBrush brush(backgroundColor(), static_cast<Qt::BrushStyle>(backgroundBrushStyle()));
brush.setTransform(painter->worldTransform().inverted());
painter->fillRect(rect(), brush);
} }
if (itemMode()&DesignMode){
ppainter->save(); if (itemMode() & DesignMode){
painter->save();
QString bandText = objectName(); QString bandText = objectName();
if (parentBand()) bandText+=QLatin1String(" connected to ")+parentBand()->objectName(); if (parentBand()) bandText+=QLatin1String(" connected to ")+parentBand()->objectName();
QFont font("Arial",7*Const::fontFACTOR,-1,true); QFont font("Arial", 7 * Const::fontFACTOR, -1, true);
QFontMetrics fontMetrics(font); QFontMetrics fontMetrics(font);
QVector<QRectF> bandNameRects; QVector<QRectF> bandNameRects;
@ -204,22 +208,22 @@ void BandDesignIntf::paint(QPainter *ppainter, const QStyleOptionGraphicsItem *o
//if (isSelected()) ppainter->setPen(QColor(167,244,167)); //if (isSelected()) ppainter->setPen(QColor(167,244,167));
// else ppainter->setPen(QColor(220,220,220)); // else ppainter->setPen(QColor(220,220,220));
ppainter->setFont(font); painter->setFont(font);
for (int i=0;i<bandNameRects.count();i++){ for (int i=0;i<bandNameRects.count();i++){
QRectF labelRect = bandNameRects[i].adjusted(-2,-2,2,2); QRectF labelRect = bandNameRects[i].adjusted(-2,-2,2,2);
if ((labelRect.height())<height() && (childBaseItems().isEmpty()) && !isSelected()){ if ((labelRect.height())<height() && (childBaseItems().isEmpty()) && !isSelected()){
ppainter->setRenderHint(QPainter::Antialiasing); painter->setRenderHint(QPainter::Antialiasing);
ppainter->setBrush(bandColor()); painter->setBrush(bandColor());
ppainter->setOpacity(Const::BAND_NAME_AREA_OPACITY); painter->setOpacity(Const::BAND_NAME_AREA_OPACITY);
ppainter->drawRoundedRect(labelRect,8,8); painter->drawRoundedRect(labelRect,8,8);
ppainter->setOpacity(Const::BAND_NAME_TEXT_OPACITY); painter->setOpacity(Const::BAND_NAME_TEXT_OPACITY);
ppainter->setPen(Qt::black); painter->setPen(Qt::black);
ppainter->drawText(bandNameRects[i],Qt::AlignHCenter,bandText); painter->drawText(bandNameRects[i],Qt::AlignHCenter,bandText);
} }
} }
ppainter->restore(); painter->restore();
} }
BaseDesignIntf::paint(ppainter,option,widget); BaseDesignIntf::paint(painter,option,widget);
} }
BandDesignIntf::BandsType BandDesignIntf::bandType() const BandDesignIntf::BandsType BandDesignIntf::bandType() const

View File

@ -92,6 +92,7 @@ class BandDesignIntf : public BaseDesignIntf
Q_PROPERTY(bool keepBottomSpace READ keepBottomSpaceOption WRITE setKeepBottomSpaceOption ) Q_PROPERTY(bool keepBottomSpace READ keepBottomSpaceOption WRITE setKeepBottomSpaceOption )
Q_PROPERTY(QString parentBand READ parentBandName WRITE setParentBandName DESIGNABLE false ) Q_PROPERTY(QString parentBand READ parentBandName WRITE setParentBandName DESIGNABLE false )
Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor) Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor)
Q_PROPERTY(BrushStyle backgroundBrushStyle READ backgroundBrushStyle WRITE setBackgroundBrushStyle)
Q_PROPERTY(bool printIfEmpty READ printIfEmpty WRITE setPrintIfEmpty) Q_PROPERTY(bool printIfEmpty READ printIfEmpty WRITE setPrintIfEmpty)
Q_ENUMS(BandColumnsLayoutType) Q_ENUMS(BandColumnsLayoutType)
friend class BandMarker; friend class BandMarker;
@ -121,7 +122,7 @@ public:
BandDesignIntf(BandsType bandType, const QString& xmlTypeName, QObject* owner = 0, QGraphicsItem* parent=0); BandDesignIntf(BandsType bandType, const QString& xmlTypeName, QObject* owner = 0, QGraphicsItem* parent=0);
~BandDesignIntf(); ~BandDesignIntf();
void paint(QPainter *ppainter, const QStyleOptionGraphicsItem *option, QWidget *widget); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
virtual BandsType bandType() const; virtual BandsType bandType() const;
virtual QString bandTitle() const; virtual QString bandTitle() const;
virtual QIcon bandIcon() const; virtual QIcon bandIcon() const;

View File

@ -64,14 +64,13 @@ BaseDesignIntf::BaseDesignIntf(const QString &storageTypeName, QObject *owner, Q
m_BGMode(OpaqueMode), m_BGMode(OpaqueMode),
m_opacity(100), m_opacity(100),
m_borderLinesFlags(0), m_borderLinesFlags(0),
m_hintFrame(0),
m_storageTypeName(storageTypeName), m_storageTypeName(storageTypeName),
m_itemMode(DesignMode), m_itemMode(DesignMode),
m_objectState(ObjectCreated), m_objectState(ObjectCreated),
m_selectionMarker(0), m_selectionMarker(0),
m_joinMarker(0), m_joinMarker(0),
m_backgroundBrush(Solid), m_backgroundBrushStyle(SolidPattern),
m_backgroundBrushcolor(Qt::white), m_backgroundColor(Qt::white),
m_margin(4), m_margin(4),
m_itemAlign(DesignedItemAlign), m_itemAlign(DesignedItemAlign),
m_changingItemAlign(false), m_changingItemAlign(false),
@ -122,21 +121,23 @@ QString BaseDesignIntf::parentReportItemName() const
else return ""; else return "";
} }
void BaseDesignIntf::setBackgroundBrushMode(BaseDesignIntf::BrushMode value) void BaseDesignIntf::setBackgroundBrushStyle(BrushStyle value)
{ {
if ( value != m_backgroundBrush ){ if ( value != m_backgroundBrushStyle ){
m_backgroundBrush=value; BrushStyle oldValue = m_backgroundBrushStyle;
m_backgroundBrushStyle=value;
if (!isLoading()) update(); if (!isLoading()) update();
notify("backgroundBrushStyle", static_cast<int>(oldValue), static_cast<int>(value));
} }
} }
void BaseDesignIntf::setBackgroundColor(QColor value) void BaseDesignIntf::setBackgroundColor(QColor value)
{ {
if (value != m_backgroundBrushcolor){ if (value != m_backgroundColor){
QColor oldValue = m_backgroundBrushcolor; QColor oldValue = m_backgroundColor;
m_backgroundBrushcolor=value; m_backgroundColor=value;
if (!isLoading()) update(); if (!isLoading()) update();
notify("backgroundColor",oldValue,m_backgroundBrushcolor); notify("backgroundColor", oldValue, value);
} }
} }
@ -496,7 +497,6 @@ void BaseDesignIntf::paint(QPainter *ppainter, const QStyleOptionGraphicsItem *o
Q_UNUSED(option); Q_UNUSED(option);
Q_UNUSED(widget); Q_UNUSED(widget);
setupPainter(ppainter); setupPainter(ppainter);
drawBorder(ppainter, rect()); drawBorder(ppainter, rect());
if (isSelected()) {drawSelection(ppainter, rect());} if (isSelected()) {drawSelection(ppainter, rect());}
drawResizeZone(ppainter); drawResizeZone(ppainter);
@ -512,24 +512,28 @@ QColor calcColor(QColor color){
return Qt::white; return Qt::white;
else else
return Qt::black; return Qt::black;
}; }
void BaseDesignIntf::prepareRect(QPainter *ppainter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/) void BaseDesignIntf::prepareRect(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/)
{ {
ppainter->save(); painter->save();
QBrush brush(m_backgroundColor,static_cast<Qt::BrushStyle>(m_backgroundBrushStyle));
brush.setTransform(painter->worldTransform().inverted());
if (isSelected() && (opacity() == 100) && (m_BGMode!=TransparentMode)) { if (isSelected() && (opacity() == 100) && (m_BGMode!=TransparentMode)) {
ppainter->fillRect(rect(), QBrush(QColor(m_backgroundBrushcolor))); painter->fillRect(rect(), brush);
} }
else { else {
if (m_BGMode == OpaqueMode) { if (m_BGMode == OpaqueMode) {
ppainter->setOpacity(qreal(m_opacity) / 100); painter->setOpacity(qreal(m_opacity) / 100);
ppainter->fillRect(rect(), QBrush(m_backgroundBrushcolor)); painter->fillRect(rect(), brush);
} else if (itemMode() & DesignMode){ } else if (itemMode() & DesignMode){
ppainter->setOpacity(0.1); painter->setOpacity(0.1);
ppainter->fillRect(rect(), QBrush(QPixmap(":/report/empty"))); painter->fillRect(rect(), QBrush(QPixmap(":/report/images/empty")));
} }
} }
ppainter->restore(); painter->restore();
} }
void BaseDesignIntf::hoverMoveEvent(QGraphicsSceneHoverEvent *event) void BaseDesignIntf::hoverMoveEvent(QGraphicsSceneHoverEvent *event)

View File

@ -83,7 +83,7 @@ class BaseDesignIntf :
Q_INTERFACES(QGraphicsItem) Q_INTERFACES(QGraphicsItem)
Q_ENUMS(BGMode) Q_ENUMS(BGMode)
Q_ENUMS(Qt::BrushStyle) Q_ENUMS(Qt::BrushStyle)
Q_ENUMS(BrushMode) Q_ENUMS(BrushStyle)
Q_ENUMS(ItemAlign) Q_ENUMS(ItemAlign)
Q_FLAGS(BorderLines) Q_FLAGS(BorderLines)
Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometryProperty NOTIFY geometryChanged) Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometryProperty NOTIFY geometryChanged)
@ -96,8 +96,23 @@ class BaseDesignIntf :
Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor) Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor)
public: public:
enum BGMode { TransparentMode,OpaqueMode}; enum BGMode { TransparentMode, OpaqueMode};
enum BrushMode{Solid,None};
enum BrushStyle{ NoBrush,
SolidPattern,
Dense1Pattern,
Dense2Pattern,
Dense3Pattern,
Dense4Pattern,
Dense5Pattern,
Dense6Pattern,
Dense7Pattern,
HorPattern,
VerPattern,
CrossPattern,
BDiagPattern,
FDiagPattern };
enum ResizeFlags { Fixed = 0, enum ResizeFlags { Fixed = 0,
ResizeLeft = 1, ResizeLeft = 1,
ResizeRight = 2, ResizeRight = 2,
@ -127,9 +142,9 @@ public:
void setParentReportItem(const QString& value); void setParentReportItem(const QString& value);
QString parentReportItemName() const; QString parentReportItemName() const;
BrushMode backgroundBrushMode() const {return m_backgroundBrush;} BrushStyle backgroundBrushStyle() const {return m_backgroundBrushStyle;}
void setBackgroundBrushMode(BrushMode value); void setBackgroundBrushStyle(BrushStyle value);
QColor backgroundColor() const {return m_backgroundBrushcolor;} QColor backgroundColor() const {return m_backgroundColor;}
void setBackgroundColor(QColor value); void setBackgroundColor(QColor value);
QPen pen() const; QPen pen() const;
@ -155,7 +170,7 @@ public:
virtual QSizeF sizeMM() const; virtual QSizeF sizeMM() const;
void paint(QPainter* ppainter, const QStyleOptionGraphicsItem* option, QWidget* widget); void paint(QPainter* ppainter, const QStyleOptionGraphicsItem* option, QWidget* widget);
void prepareRect(QPainter* ppainter, const QStyleOptionGraphicsItem*, QWidget*); void prepareRect(QPainter* painter, const QStyleOptionGraphicsItem*, QWidget*);
virtual QPainterPath shape() const; virtual QPainterPath shape() const;
void setFixedPos(bool fixedPos); void setFixedPos(bool fixedPos);
@ -329,13 +344,13 @@ private:
void turnOnSelectionMarker(bool value); void turnOnSelectionMarker(bool value);
private: private:
QPointF m_startPos; QPointF m_startPos;
//QPointF m_startScenePos;
int m_resizeHandleSize; int m_resizeHandleSize;
int m_selectionPenSize; int m_selectionPenSize;
int m_possibleResizeDirectionFlags; int m_possibleResizeDirectionFlags;
int m_possibleMoveDirectionFlags; int m_possibleMoveDirectionFlags;
int m_resizeDirectionFlags; int m_resizeDirectionFlags;
qreal m_width, m_height; qreal m_width;
qreal m_height;
QPen m_pen; QPen m_pen;
QFont m_font; QFont m_font;
QColor m_fontColor; QColor m_fontColor;
@ -357,7 +372,6 @@ private:
QRectF m_rightRect; QRectF m_rightRect;
QVector<QRectF*> m_resizeAreas; QVector<QRectF*> m_resizeAreas;
QFrame* m_hintFrame;
QString m_storageTypeName; QString m_storageTypeName;
ItemMode m_itemMode; ItemMode m_itemMode;
@ -365,8 +379,9 @@ private:
SelectionMarker* m_selectionMarker; SelectionMarker* m_selectionMarker;
Marker* m_joinMarker; Marker* m_joinMarker;
BrushMode m_backgroundBrush; BrushStyle m_backgroundBrushStyle;
QColor m_backgroundBrushcolor; QColor m_backgroundColor;
RenderPass m_currentPass; RenderPass m_currentPass;
int m_margin; int m_margin;
QString m_itemTypeName; QString m_itemTypeName;