0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-10-02 03:53:19 +03:00

geometryLocked property has been added to report items

This commit is contained in:
Arin Alexander
2019-06-28 20:12:47 +03:00
parent 99757097cc
commit f7e1a383e9
22 changed files with 208 additions and 20 deletions

View File

@@ -83,7 +83,8 @@ BaseDesignIntf::BaseDesignIntf(const QString &storageTypeName, QObject *owner, Q
m_joinMarkerOn(false),
m_selectionMarker(0),
m_fillTransparentInDesignMode(true),
m_unitType(Millimeters)
m_unitType(Millimeters),
m_itemGeometryLocked(false)
{
setGeometry(QRectF(0, 0, m_width, m_height));
if (BaseDesignIntf *item = dynamic_cast<BaseDesignIntf *>(parent)) {
@@ -96,12 +97,7 @@ BaseDesignIntf::BaseDesignIntf(const QString &storageTypeName, QObject *owner, Q
QRectF BaseDesignIntf::boundingRect() const
{
if (m_boundingRect.isNull()) {
qreal halfpw = pen().widthF() / 2;
halfpw += 2;
m_boundingRect = rect();
};
return m_boundingRect;
return rect();
}
BaseDesignIntf::~BaseDesignIntf(void) {
@@ -734,6 +730,32 @@ void BaseDesignIntf::updatePossibleDirectionFlags(){
}
}
bool BaseDesignIntf::isItemGeometryLocked() const
{
return m_itemGeometryLocked;
}
void BaseDesignIntf::setItemGeometryLocked(bool itemLocked)
{
if (m_itemGeometryLocked != itemLocked){
m_itemGeometryLocked = itemLocked;
if (itemLocked){
m_savedPossibleMoveDirectionFlags = m_possibleMoveDirectionFlags;
m_savedPossibleResizeDirectionFlags = m_possibleResizeDirectionFlags;
m_possibleMoveDirectionFlags = None;
m_possibleResizeDirectionFlags = Fixed;
} else {
m_possibleMoveDirectionFlags = m_savedPossibleMoveDirectionFlags;
m_possibleResizeDirectionFlags = m_savedPossibleResizeDirectionFlags;
}
if (!isLoading()){
update();
m_selectionMarker->update();
notify("geometryLocked", !itemLocked, itemLocked);
}
}
}
bool BaseDesignIntf::fillTransparentInDesignMode() const
{
return m_fillTransparentInDesignMode;
@@ -1287,6 +1309,13 @@ void BaseDesignIntf::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
this->setSelected(true);
}
QMenu menu(event->widget());
QAction* lockGeometryAction = menu.addAction(tr("Lock item geometry"));
lockGeometryAction->setCheckable(true);
lockGeometryAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_L));
lockGeometryAction->setChecked(isItemGeometryLocked());
menu.addSeparator();
QAction* copyAction = menu.addAction(QIcon(":/report/images/copy"), tr("Copy"));
copyAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_C));
QAction* cutAction = menu.addAction(QIcon(":/report/images/cut"), tr("Cut"));
@@ -1659,12 +1688,21 @@ void Marker::paint(QPainter* painter, const QStyleOptionGraphicsItem*, QWidget*)
rect().bottom()-markerSize,markerSize*2,markerSize*2));
}
QColor Marker::color() const {
return m_color;
}
SelectionMarker::SelectionMarker(QGraphicsItem* parent, BaseDesignIntf* owner)
: Marker(parent, owner)
{
setAcceptHoverEvents(true);
}
QColor SelectionMarker::color() const
{
return owner()->isItemGeometryLocked() ? Qt::darkGray : Marker::color();
}
void SelectionMarker::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
if (owner()) owner()->hoverMoveEvent(event);
@@ -1697,4 +1735,12 @@ void SelectionMarker::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
if (owner()) owner()->mouseMoveEvent(event);
}
void BaseDesignIntf::processPopUpAction(QAction *action){
if (page()){
if (action->text().compare(tr("Lock item geometry")) == 0){
page()->setPropertyToSelectedItems("geometryLocked",action->isChecked());
}
}
}
} //namespace LimeReport