diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index bcfc1ddd..7a14e8d4 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1543,6 +1543,21 @@ void UBBoardController::changeBackground(bool isDark, bool isCrossed) mActiveScene->setBackground(isDark, isCrossed); + foreach (QGraphicsItem *item, mActiveScene->items()) { + if (item->type() == UBGraphicsStrokesGroup::Type) { + UBGraphicsStrokesGroup *curGroup = static_cast(item); + QColor compareColor = curGroup->color(currentIsDark ? UBGraphicsStrokesGroup::colorOnDarkBackground + : UBGraphicsStrokesGroup::colorOnLightBackground); + + if (curGroup->color() == compareColor) { + QColor newColor = curGroup->color(!currentIsDark ? UBGraphicsStrokesGroup::colorOnDarkBackground + : UBGraphicsStrokesGroup::colorOnLightBackground); + curGroup->setColor(newColor); + } + + } + } + updateBackgroundState(); emit backgroundChanged(); diff --git a/src/domain/UBGraphicsStrokesGroup.cpp b/src/domain/UBGraphicsStrokesGroup.cpp index a5320924..6da869a1 100644 --- a/src/domain/UBGraphicsStrokesGroup.cpp +++ b/src/domain/UBGraphicsStrokesGroup.cpp @@ -32,6 +32,54 @@ void UBGraphicsStrokesGroup::setUuid(const QUuid &pUuid) UBItem::setUuid(pUuid); setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene } +void UBGraphicsStrokesGroup::setColor(const QColor &color, colorType pColorType) +{ + //TODO Implement common mechanism of managing groups, drop UBGraphicsStroke if it's obsolete + //Using casting for the moment + foreach (QGraphicsItem *item, childItems()) { + if (item->type() == UBGraphicsPolygonItem::Type) { + UBGraphicsPolygonItem *curPolygon = static_cast(item); + + switch (pColorType) { + case currentColor : + curPolygon->setColor(color); + break; + case colorOnLightBackground : + curPolygon->setColorOnLightBackground(color); + break; + case colorOnDarkBackground : + curPolygon->setColorOnDarkBackground(color); + break; + } + } + } +} + +QColor UBGraphicsStrokesGroup::color(colorType pColorType) const +{ + QColor result; + + foreach (QGraphicsItem *item, childItems()) { + if (item->type() == UBGraphicsPolygonItem::Type) { + UBGraphicsPolygonItem *curPolygon = static_cast(item); + + switch (pColorType) { + case currentColor : + result = curPolygon->color(); + break; + case colorOnLightBackground : + result = curPolygon->colorOnLightBackground(); + break; + case colorOnDarkBackground : + result = curPolygon->colorOnDarkBackground(); + break; + } + + } + } + + return result; +} void UBGraphicsStrokesGroup::mousePressEvent(QGraphicsSceneMouseEvent *event) { diff --git a/src/domain/UBGraphicsStrokesGroup.h b/src/domain/UBGraphicsStrokesGroup.h index b2310773..2c286d11 100644 --- a/src/domain/UBGraphicsStrokesGroup.h +++ b/src/domain/UBGraphicsStrokesGroup.h @@ -11,6 +11,12 @@ class UBGraphicsStrokesGroup : public QObject, public QGraphicsItemGroup, public { Q_OBJECT public: + enum colorType { + currentColor = 0 + , colorOnLightBackground + , colorOnDarkBackground + }; + UBGraphicsStrokesGroup(QGraphicsItem* parent = 0); ~UBGraphicsStrokesGroup(); virtual UBItem* deepCopy() const; @@ -23,6 +29,8 @@ public: return Type; } virtual void setUuid(const QUuid &pUuid); + void setColor(const QColor &color, colorType pColorType = currentColor); + QColor color(colorType pColorType = currentColor) const; protected: