void Qt4InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands() { static bool inFunction = false; if (!inFunction) { inFunction = true; QSet<ServerNodeInstance> informationChangedInstanceSet; QVector<InstancePropertyPair> propertyChangedList; bool adjustSceneRect = false; if (declarativeView()) { foreach (QGraphicsItem *item, declarativeView()->items()) { QGraphicsObject *graphicsObject = item->toGraphicsObject(); if (graphicsObject && hasInstanceForObject(graphicsObject)) { ServerNodeInstance instance = instanceForObject(graphicsObject); QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(item); if (d->dirtySceneTransform || d->geometryChanged || d->dirty) informationChangedInstanceSet.insert(instance); if (d->geometryChanged) { if (instance.isRootNodeInstance()) declarativeView()->scene()->setSceneRect(item->boundingRect()); } } } foreach (QGraphicsItem *item, declarativeView()->items()) { QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(item); d->ensureSceneTransform(); }
void RenderNodeInstanceServer::findItemChangesAndSendChangeCommands() { static bool inFunction = false; if (!inFunction) { inFunction = true; bool adjustSceneRect = false; if (delcarativeView()) { foreach (QGraphicsItem *item, delcarativeView()->items()) { QGraphicsObject *graphicsObject = item->toGraphicsObject(); if (graphicsObject && hasInstanceForObject(graphicsObject)) { ServerNodeInstance instance = instanceForObject(graphicsObject); QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(item); if((d->dirty && d->notifyBoundingRectChanged)|| (d->dirty && !d->dirtySceneTransform) || nonInstanceChildIsDirty(graphicsObject)) m_dirtyInstanceSet.insert(instance); if (d->geometryChanged) { if (instance.isRootNodeInstance()) delcarativeView()->scene()->setSceneRect(item->boundingRect()); } } } foreach (const InstancePropertyPair& property, changedPropertyList()) { const ServerNodeInstance instance = property.first; const QString propertyName = property.second; if (instance.isRootNodeInstance() && (propertyName == "width" || propertyName == "height")) adjustSceneRect = true; if (propertyName == "width" || propertyName == "height") m_dirtyInstanceSet.insert(instance); } clearChangedPropertyList(); resetAllItems(); if (!m_dirtyInstanceSet.isEmpty() && nodeInstanceClient()->bytesToWrite() < 10000) { nodeInstanceClient()->pixmapChanged(createPixmapChangedCommand(m_dirtyInstanceSet.toList())); m_dirtyInstanceSet.clear(); } if (adjustSceneRect) { QRectF boundingRect = rootNodeInstance().boundingRect(); if (boundingRect.isValid()) { delcarativeView()->setSceneRect(boundingRect); } } slowDownRenderTimer(); nodeInstanceClient()->flush(); nodeInstanceClient()->synchronizeWithClientProcess(); }
QDebug operator <<(QDebug debug, const ServerNodeInstance &instance) { if (instance.isValid()) { debug.nospace() << "ServerNodeInstance(" << instance.instanceId() << ", " << instance.internalObject() << ", " << instance.id() << ", " << instance.parent() << ')'; } else { debug.nospace() << "ServerNodeInstance(invalid)"; } return debug.space(); }
void QmlPropertyChangesNodeInstance::setPropertyVariant(const QString &name, const QVariant &value) { QMetaObject metaObject = QQuickPropertyChanges::staticMetaObject; if (metaObject.indexOfProperty(name.toLatin1()) > 0) { // 'restoreEntryValues', 'explicit' ObjectNodeInstance::setPropertyVariant(name, value); } else { changesObject()->changeValue(name.toLatin1(), value); QObject *targetObject = changesObject()->object(); if (targetObject && nodeInstanceServer()->activeStateInstance().isWrappingThisObject(changesObject()->state())) { ServerNodeInstance targetInstance = nodeInstanceServer()->instanceForObject(targetObject); targetInstance.setPropertyVariant(name, value); } } }
void QmlPropertyChangesNodeInstance::reparent(const ServerNodeInstance &oldParentInstance, const QString &oldParentProperty, const ServerNodeInstance &newParentInstance, const QString &newParentProperty) { changesObject()->detachFromState(); ObjectNodeInstance::reparent(oldParentInstance.internalInstance(), oldParentProperty, newParentInstance.internalInstance(), newParentProperty); changesObject()->attachToState(); }
foreach (const InstancePropertyPair& property, changedPropertyList()) { const ServerNodeInstance instance = property.first; const QString propertyName = property.second; if (instance.isValid()) { if (instance.isRootNodeInstance() && (propertyName == "width" || propertyName == "height")) adjustSceneRect = true; if (propertyName.contains("anchors")) informationChangedInstanceSet.insert(instance); if (propertyName == "parent") { informationChangedInstanceSet.insert(instance); m_parentChangedSet.insert(instance); } propertyChangedList.append(property); } }
QList<ServerNodeInstance> NodeInstanceServer::createInstances(const QVector<InstanceContainer> &containerVector) { Q_ASSERT(declarativeView() || sgView()); QList<ServerNodeInstance> instanceList; foreach (const InstanceContainer &instanceContainer, containerVector) { ServerNodeInstance instance; if (instanceContainer.nodeSourceType() == InstanceContainer::ComponentSource) { instance = ServerNodeInstance::create(this, instanceContainer, ServerNodeInstance::WrapAsComponent); } else { instance = ServerNodeInstance::create(this, instanceContainer, ServerNodeInstance::DoNotWrapAsComponent); } insertInstanceRelationship(instance); instanceList.append(instance); instance.internalObject()->installEventFilter(childrenChangeEventFilter()); if (instanceContainer.instanceId() == 0) { m_rootNodeInstance = instance; resizeCanvasSizeToRootItemSize(); } foreach (QDeclarativeContext* context, allSubContextsForObject(instance.internalObject())) setupDummysForContext(context); }
bool ServerNodeInstance::resetStateProperty(const ServerNodeInstance &target, const PropertyName &propertyName, const QVariant &resetValue) { return m_nodeInstance->resetStateProperty(target.internalInstance(), propertyName, resetValue); }
bool ServerNodeInstance::updateStateBinding(const ServerNodeInstance &target, const PropertyName &propertyName, const QString &expression) { return m_nodeInstance->updateStateBinding(target.internalInstance(), propertyName, expression); }
bool ServerNodeInstance::updateStateVariant(const ServerNodeInstance &target, const PropertyName &propertyName, const QVariant &value) { return m_nodeInstance->updateStateVariant(target.internalInstance(), propertyName, value); }
bool operator <(const ServerNodeInstance &first, const ServerNodeInstance &second) { return first.instanceId() < second.instanceId(); }
uint qHash(const ServerNodeInstance &instance) { return ::qHash(instance.instanceId()); }
void Qt5InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands() { static bool inFunction = false; if (!inFunction) { inFunction = true; QSet<ServerNodeInstance> informationChangedInstanceSet; QVector<InstancePropertyPair> propertyChangedList; bool adjustSceneRect = false; if (sgView()) { foreach (QSGItem *item, allItems()) { if (item && hasInstanceForObject(item)) { ServerNodeInstance instance = instanceForObject(item); DesignerSupport::DirtyType informationsDirty = DesignerSupport::DirtyType(DesignerSupport::TransformUpdateMask | DesignerSupport::Visible | DesignerSupport::ZValue | DesignerSupport::OpacityValue); if (DesignerSupport::dirty(item, informationsDirty)) informationChangedInstanceSet.insert(instance); if (DesignerSupport::dirty(item, DesignerSupport::ParentChanged)) { m_parentChangedSet.insert(instance); informationChangedInstanceSet.insert(instance); } // if (d->geometryChanged) { // if (instance.isRootNodeInstance()) // declarativeView()->scene()->setSceneRect(item->boundingRect()); // } } } foreach (const InstancePropertyPair& property, changedPropertyList()) { const ServerNodeInstance instance = property.first; const QString propertyName = property.second; if (instance.isValid()) { if (instance.isRootNodeInstance() && (propertyName == "width" || propertyName == "height")) adjustSceneRect = true; if (propertyName.contains("anchors")) informationChangedInstanceSet.insert(instance); propertyChangedList.append(property); } } resetAllItems(); clearChangedPropertyList(); sendTokenBack(); if (!informationChangedInstanceSet.isEmpty()) nodeInstanceClient()->informationChanged(createAllInformationChangedCommand(informationChangedInstanceSet.toList())); if (!propertyChangedList.isEmpty()) nodeInstanceClient()->valuesChanged(createValuesChangedCommand(propertyChangedList)); if (!m_parentChangedSet.isEmpty()) { sendChildrenChangedCommand(m_parentChangedSet.toList()); m_parentChangedSet.clear(); } // if (adjustSceneRect) { // QRectF boundingRect = rootNodeInstance().boundingRect(); // if (boundingRect.isValid()) { // declarativeView()->setSceneRect(boundingRect); // } // } if (!m_completedComponentList.isEmpty()) { nodeInstanceClient()->componentCompleted(createComponentCompletedCommand(m_completedComponentList)); m_completedComponentList.clear(); } slowDownRenderTimer(); nodeInstanceClient()->flush(); nodeInstanceClient()->synchronizeWithClientProcess(); } inFunction = false; }