mirror of
https://github.com/python-LimeReport/LimeReport.git
synced 2024-12-26 21:38:08 +03:00
70 lines
1.9 KiB
C++
70 lines
1.9 KiB
C++
|
#include "lrlayoutmarker.h"
|
||
|
#include <QGraphicsSceneMouseEvent>
|
||
|
#include <QGraphicsScene>
|
||
|
|
||
|
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
|