0
0
mirror of https://github.com/fralx/LimeReport.git synced 2024-12-23 16:22:58 +03:00
LimeReport/limereport/items/lrlayoutmarker.cpp
Андрей Лухнов 0fca7169d3 Define code style and format all source file using clang-format-14
except those placed in 3rdparty directories.
2024-09-19 21:09:38 +03:00

75 lines
2.0 KiB
C++

#include "lrlayoutmarker.h"
#include <QGraphicsScene>
#include <QGraphicsSceneMouseEvent>
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