void QDeclarativeLoaderPrivate::clear() { if (ownComponent) { component->deleteLater(); component = 0; ownComponent = false; } source = QUrl(); if (item) { if (QDeclarativeItem *qmlItem = qobject_cast<QDeclarativeItem*>(item)) { QDeclarativeItemPrivate *p = static_cast<QDeclarativeItemPrivate *>(QGraphicsItemPrivate::get(qmlItem)); p->removeItemChangeListener(this, QDeclarativeItemPrivate::Geometry); } // We can't delete immediately because our item may have triggered // the Loader to load a different item. if (item->scene()) { item->scene()->removeItem(item); } else { item->setParentItem(0); item->setVisible(false); } item->deleteLater(); item = 0; } }
QDeclarativeLoader::~QDeclarativeLoader() { Q_D(QDeclarativeLoader); if (d->item) { if (QDeclarativeItem *qmlItem = qobject_cast<QDeclarativeItem*>(d->item)) { QDeclarativeItemPrivate *p = static_cast<QDeclarativeItemPrivate *>(QGraphicsItemPrivate::get(qmlItem)); p->removeItemChangeListener(d, QDeclarativeItemPrivate::Geometry); } } }
void QDeclarativeBasePositionerPrivate::unwatchChanges(QGraphicsObject* other) { if (QGraphicsItemPrivate::get(other)->isDeclarativeItem) { QDeclarativeItemPrivate *otherPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(other)); otherPrivate->removeItemChangeListener(this, watchedChanges); } else { Q_Q(QDeclarativeBasePositioner); QObject::disconnect(other, SIGNAL(widthChanged()), q, SLOT(graphicsWidgetGeometryChanged())); QObject::disconnect(other, SIGNAL(heightChanged()), q, SLOT(graphicsWidgetGeometryChanged())); QObject::disconnect(other, SIGNAL(opacityChanged()), q, SLOT(graphicsWidgetGeometryChanged())); QObject::disconnect(other, SIGNAL(visibleChanged()), q, SLOT(graphicsWidgetGeometryChanged())); } }
bool isAnchoredTo(QDeclarativeItem *fromItem, QDeclarativeItem *toItem) { Q_ASSERT(dynamic_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(fromItem))); QDeclarativeItemPrivate *fromItemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(fromItem)); QDeclarativeAnchors *anchors = fromItemPrivate->anchors(); return anchors->fill() == toItem || anchors->centerIn() == toItem || anchors->bottom().item == toItem || anchors->top().item == toItem || anchors->left().item == toItem || anchors->right().item == toItem || anchors->verticalCenter().item == toItem || anchors->horizontalCenter().item == toItem || anchors->baseline().item == toItem; }
void QDeclarativeAnchorsPrivate::remDepend(QGraphicsObject *item) { if (!item) return; QGraphicsItemPrivate * itemPrivate = QGraphicsItemPrivate::get(item); if (itemPrivate->isDeclarativeItem) { QDeclarativeItemPrivate *p = static_cast<QDeclarativeItemPrivate *>(itemPrivate); p->removeItemChangeListener(this, QDeclarativeItemPrivate::Geometry); } else if(itemPrivate->isWidget) { Q_Q(QDeclarativeAnchors); QGraphicsWidget *widget = static_cast<QGraphicsWidget *>(item); QObject::disconnect(widget, SIGNAL(destroyed(QObject*)), q, SLOT(_q_widgetDestroyed(QObject*))); QObject::disconnect(widget, SIGNAL(geometryChanged()), q, SLOT(_q_widgetGeometryChanged())); } }
void QDeclarativeLoaderPrivate::initResize() { Q_Q(QDeclarativeLoader); if (QDeclarativeItem *qmlItem = qobject_cast<QDeclarativeItem*>(item)) { QDeclarativeItemPrivate *p = static_cast<QDeclarativeItemPrivate *>(QGraphicsItemPrivate::get(qmlItem)); p->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry); // We may override the item's size, so we need to remember // whether the item provided its own valid size. itemWidthValid = p->widthValid; itemHeightValid = p->heightValid; } else if (item && item->isWidget()) { QGraphicsWidget *widget = static_cast<QGraphicsWidget*>(item); widget->installEventFilter(q); } _q_updateSize(); }
void QDeclarativeBasePositionerPrivate::unwatchChanges(QDeclarativeItem* other) { QDeclarativeItemPrivate *otherPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(other)); otherPrivate->removeItemChangeListener(this, watchedChanges); }