#include "lrlayoutmarker.h" #include #include namespace LimeReport { LayoutMarker::LayoutMarker(BaseDesignIntf* layout, QGraphicsItem* parent): QGraphicsItem(parent), m_rect(0, 0, 30, 30), m_color(Qt::red), m_layout(layout) { setFlag(QGraphicsItem::ItemIsMovable); } void LayoutMarker::paint(QPainter* painter, const QStyleOptionGraphicsItem*, QWidget*) { painter->save(); painter->setOpacity(Const::LAYOUT_MARKER_OPACITY); painter->fillRect(boundingRect(), m_color); painter->setRenderHint(QPainter::Antialiasing); qreal size = (boundingRect().width() < boundingRect().height()) ? boundingRect().width() : boundingRect().height(); if (m_layout->isSelected()) { painter->setOpacity(1); QRectF r = QRectF(0, 0, size, size); painter->setBrush(Qt::white); painter->setPen(Qt::white); painter->drawEllipse(r.adjusted(5, 5, -5, -5)); painter->setBrush(m_color); painter->drawEllipse(r.adjusted(7, 7, -7, -7)); } painter->restore(); } void LayoutMarker::setHeight(qreal height) { if (m_rect.height() != height) { prepareGeometryChange(); m_rect.setHeight(height); } } void LayoutMarker::setWidth(qreal width) { if (m_rect.width() != width) { prepareGeometryChange(); m_rect.setWidth(width); } } void LayoutMarker::setColor(QColor color) { if (m_color != color) { m_color = color; update(boundingRect()); } } void LayoutMarker::mousePressEvent(QGraphicsSceneMouseEvent* event) { if (event->button() == Qt::LeftButton) { if (!(event->modifiers() & Qt::ControlModifier)) m_layout->scene()->clearSelection(); m_layout->setSelected(true); // m_layout->setChildVisibility(false); update(0, 0, boundingRect().width(), boundingRect().width()); } } } // namespace LimeReport