void QQuickLoader::setSourceComponent(QQmlComponent *comp) { Q_D(QQuickLoader); if (comp == d->component) return; d->clear(); d->component = comp; d->loadingFromSource = false; if (d->active) loadFromSourceComponent(); else emit sourceComponentChanged(); }
void QQuickLoader::setSourceComponent(QQmlComponent *comp) { Q_D(QQuickLoader); if (comp == d->component) return; d->clear(); d->component = comp; if (comp) { if (QQmlData *ddata = QQmlData::get(comp)) d->componentStrongReference = ddata->jsWrapper.value(); } d->loadingFromSource = false; if (d->active) loadFromSourceComponent(); else emit sourceComponentChanged(); }
void QQuickLoader::setActive(bool newVal) { Q_D(QQuickLoader); if (d->active == newVal) return; d->active = newVal; if (newVal == true) { if (d->loadingFromSource) { loadFromSource(); } else { loadFromSourceComponent(); } } else { // cancel any current incubation if (d->incubator) { d->incubator->clear(); delete d->itemContext; d->itemContext = 0; } if (d->item) { QQuickItemPrivate *p = QQuickItemPrivate::get(d->item); p->removeItemChangeListener(d, watchedChanges); // We can't delete immediately because our item may have triggered // the Loader to load a different item. d->item->setParentItem(0); d->item->setVisible(false); d->item = 0; } if (d->object) { d->object->deleteLater(); d->object = 0; emit itemChanged(); } emit statusChanged(); } emit activeChanged(); }