bvidTmpItem

This commit is contained in:
2020-09-14 13:36:47 +03:00
parent ad471350e7
commit a65549d7e8
2 changed files with 17 additions and 14 deletions

View File

@@ -43,7 +43,7 @@ enum BlockviewItemData {
bvidMoveParent , // bool flag for move parent
bvidVisualizeSelection , // bool flag for visualize selection
bvidItemSelection , // bool BlockItem selection
bvidInvalidItem , // bool item is NOT decor, ignore for function decors
bvidTmpItem , // bool item is temporary, ignore
bvidBlockDecor , // bool item is BlockItem decor
bvidDTHandle , // bool
bvidCorrectMove , // bool

View File

@@ -173,6 +173,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
case QEvent::GraphicsSceneMouseDoubleClick:
mil = scene_->items(scene_point);
foreach (QGraphicsItem * i, mil) {
if (i->data(bvidTmpItem).toBool()) continue;
if (i->data(bvidType).toInt() == bvitBlock) {
//emit blockDoubleClicked((BlockItem * )i);
QMetaObject::invokeMethod(this, "blockDoubleClicked", Qt::QueuedConnection, Q_ARG(BlockItem * , (BlockItem*)i));
@@ -208,7 +209,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
break;*/
case QEvent::GraphicsSceneMousePress:
if (mm_ci != 0) {
if (mm_ci->data(bvidInvalidItem).toBool()) {
if (mm_ci->data(bvidTmpItem).toBool()) {
mm_ci = 0;
break;
}
@@ -274,7 +275,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
while (!mil.isEmpty()) {
mm_ci = mil.front();
if (mm_ci->data(bvidDTHandle).toBool()) return QGraphicsView::eventFilter(o, e);
if (mm_ci->data(bvidInvalidItem).toBool() || mm_ci->data(bvidItemSelection).toBool()) {
if (mm_ci->data(bvidTmpItem).toBool() || mm_ci->data(bvidItemSelection).toBool()) {
mil.pop_front();
} else break;
}
@@ -361,7 +362,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
return false;
}
if (mm_ci)
if (mm_ci->data(bvidInvalidItem).toBool()) {
if (mm_ci->data(bvidTmpItem).toBool()) {
mm_ci = 0;
break;
}
@@ -408,7 +409,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
if (fmm_drag) {
fmm_drag = false;
if (mm_ci) {
if (mm_ci->data(bvidType).toInt() == bvitBlock) {
if ((mm_ci->data(bvidType).toInt() == bvitBlock) && !mm_ci->data(bvidTmpItem).toBool()) {
if (!mm_ci->isSelected() && sel_items.isEmpty()) {
clearSelection();
mm_ci->setSelected(true);
@@ -424,7 +425,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
deleteCopyTemp();
QList<BlockItem * > bi;
foreach (QGraphicsItem * i, sel_items) {
if (i->data(bvidType).toInt() == bvitBlock) {
if ((i->data(bvidType).toInt() == bvitBlock) && !i->data(bvidTmpItem).toBool()) {
//qDebug() << "copy";
bi << qgraphicsitem_cast<BlockItem*>(i);
BlockItem * ti = bi.back()->copy();
@@ -528,7 +529,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
return true;
}
if (mm_ci)
if (mm_ci->data(bvidInvalidItem).toBool()) {
if (mm_ci->data(bvidTmpItem).toBool()) {
mm_ci = 0;
break;
}
@@ -540,7 +541,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
QList<BlockItem*> ci;
QList<BlockBusItem*> bi;
foreach (QGraphicsItem * b, sel_items)
if (b->data(bvidType).toInt() == bvitBlock) {
if ((b->data(bvidType).toInt() == bvitBlock) && !b->data(bvidTmpItem).toBool()) {
ci << qgraphicsitem_cast<BlockItem*>(b);
ai << qgraphicsitem_cast<QGraphicsItem*>(b);
}
@@ -999,7 +1000,7 @@ QList<BlockBusItem * > BlockView::buses() const {
QList<BlockBusItem * > ret;
QList<QGraphicsItem*> gi = scene_->items();
foreach (QGraphicsItem * i, gi)
if (i->data(bvidType).toInt() == bvitBus)
if ((i->data(bvidType).toInt() == bvitBus) && !i->data(bvidTmpItem).toBool())
if (!copy_buses.contains((BlockBusItem*)i))
ret << qgraphicsitem_cast<BlockBusItem*>(i);
return ret;
@@ -1028,7 +1029,7 @@ QList<BlockItem * > BlockView::blocks() const {
QList<BlockItem * > ret;
QList<QGraphicsItem*> gi = scene_->items();
foreach (QGraphicsItem * i, gi)
if (i->data(bvidType).toInt() == bvitBlock)
if ((i->data(bvidType).toInt() == bvitBlock) && !i->data(bvidTmpItem).toBool())
ret << qgraphicsitem_cast<BlockItem*>(i);
return ret;
}
@@ -1037,7 +1038,7 @@ QList<BlockItem * > BlockView::blocks() const {
QList<QGraphicsItem * > BlockView::decors() const {
QList<QGraphicsItem*> ret, gi = scene_->items();
foreach (QGraphicsItem * i, gi)
if ((i->data(bvidType).toInt() == bvitDecor) && !i->data(bvidInvalidItem).toBool() && !i->data(bvidItemSelection).toBool() && (i->parentItem() == 0)
if ((i->data(bvidType).toInt() == bvitDecor) && !i->data(bvidTmpItem).toBool() && !i->data(bvidItemSelection).toBool() && (i->parentItem() == 0)
&& (i != &sel_rect) && (i != &tmp_bus) && !tmp_buses.contains((BlockBusItem*)i))
ret << i;
return ret;
@@ -1192,7 +1193,7 @@ QRectF BlockView::itemsBoundingRect() const {
QRectF ret;
foreach (QGraphicsItem * i, gi)
if (i->isVisible() && (i != &tmp_bus) && !tmp_buses.contains((BlockBusItem*)i)) {
if (!(i->data(bvidItemSelection).toBool()) && !i->data(bvidInvalidItem).toBool()) {
if (!(i->data(bvidItemSelection).toBool()) && !i->data(bvidTmpItem).toBool()) {
QRectF br = i->mapRectToScene(i->boundingRect());
if (br.width() <= 1 || br.height() <= 1) continue;
if (f) ret = br;
@@ -1665,7 +1666,7 @@ QList<BlockItem * > BlockView::selectedBlocks() const {
QList<BlockItem * > ret;
QList<QGraphicsItem * > sil = scene()->selectedItems();
foreach (QGraphicsItem * b, sil)
if (b->data(bvidType).toInt() == bvitBlock)
if ((b->data(bvidType).toInt() == bvitBlock) && !b->data(bvidTmpItem).toBool())
ret << qgraphicsitem_cast<BlockItem*>(b);
return ret;
}
@@ -2070,6 +2071,7 @@ void BlockView::removeSelected() {
if (i->connectedBlocks().isEmpty())
dbuses << i;
foreach (QGraphicsItem * i, gi) {
if (i->data(bvidTmpItem).toBool()) continue;
if (i->data(bvidType).toInt() == bvitBlock)
ai << qgraphicsitem_cast<QGraphicsItem*>(i);
if ((i->data(bvidType).toInt() == bvitBlock) || (i->data(bvidType).toInt() == bvitBus) || (i->data(bvidType).toInt() == bvitDecor)) {
@@ -2095,10 +2097,11 @@ void BlockView::removeAll() {
QList<QGraphicsItem*> gi = scene_->items(), ai;
blockSignals(true);
foreach (QGraphicsItem * i, gi) {
if (i->data(bvidTmpItem).toBool()) continue;
if (i->data(bvidType).toInt() == bvitBlock)
ai << qgraphicsitem_cast<QGraphicsItem*>(i);
if ((i->data(bvidType).toInt() == bvitBlock) || (i->data(bvidType).toInt() == bvitBus) || (i->data(bvidType).toInt() == bvitDecor)) {
if ((i != &sel_rect) && (i != &tmp_bus) && (i->parentItem() == 0) && !(i->data(bvidInvalidItem).toBool()) && !(i->data(bvidItemSelection).toBool())) {
if ((i != &sel_rect) && (i != &tmp_bus) && (i->parentItem() == 0) && !(i->data(bvidItemSelection).toBool())) {
//qDebug() << "delete" << i->data(1005).toInt();
scene_->sendEvent(i, new QGraphicsSceneEvent(QEvent::Close));
delete i;