void PQBaseItem::serializeProperty(QTextStream &stream, const QDeclarativeProperty &property, unsigned indentSize) const { QString str; QTextStream outStream(&str); if (property.propertyTypeCategory() == QDeclarativeProperty::Normal) { // Normal value property const int propertyType = property.propertyType(); const QString propertyValue = property.read().toString(); if (propertyType >= QVariant::Bool && propertyType <= QVariant::Double) { // Numerical, unquoted values outStream << propertyValue; } else { if (!propertyValue.isEmpty()) { QString value = propertyValue; value.replace(QLatin1Char('\\'), QLatin1String("\\\\")) // escape backslashes in rich text .replace(QLatin1Char('"'), QLatin1String("\\\"")); // escape quotes value = QLatin1Char('"') % value % QLatin1Char('"'); outStream << value; } } } else if (property.propertyTypeCategory() == QDeclarativeProperty::Object) { // Complex Object type const QVariant variantValue = property.read(); if (variantValue.isValid() && !variantValue.isNull()) { serializeObject(outStream, variantValue.value<QObject *>(), indentSize); } } else if (property.propertyTypeCategory() == QDeclarativeProperty::List) { // List of objects const QDeclarativeListReference list = qvariant_cast<QDeclarativeListReference>(property.read()); outStream << QLatin1Char('[') << endl; for (int itemIndex = 0, c = list.count(); itemIndex < c; ++itemIndex) { QObject *item = list.at(itemIndex); serializeObject(outStream, item, indentSize+1); if (itemIndex + 1 != list.count()) { outStream << QLatin1Char(','); // separator } outStream << endl; } outStream << PQSerializer::indentStep().repeated(indentSize) << QLatin1String("]"); // close list } if (!str.isEmpty()) { stream << PQSerializer::indentStep().repeated(indentSize) << property.name() << QLatin1String(": ") << str << endl; } }
void QDeclarativeBehavior::setTarget(const QDeclarativeProperty &property) { Q_D(QDeclarativeBehavior); d->property = property; d->currentValue = property.read(); if (d->animation) d->animation->setDefaultTarget(property); QDeclarativeEnginePrivate *engPriv = QDeclarativeEnginePrivate::get(qmlEngine(this)); engPriv->registerFinalizedParserStatusObject(this, this->metaObject()->indexOfSlot("componentFinalized()")); }
void ObjectNodeInstance::deleteObjectsInList(const QDeclarativeProperty &property) { QObjectList objectList; QDeclarativeListReference list = qvariant_cast<QDeclarativeListReference>(property.read()); if (!hasFullImplementedListInterface(list)) { qWarning() << "Property list interface not fully implemented for Class " << property.property().typeName() << " in property " << property.name() << "!"; return; } for(int i = 0; i < list.count(); i++) { objectList += list.at(i); } list.clear(); }
void QDeclarativeSpringFollow::setTarget(const QDeclarativeProperty &property) { Q_D(QDeclarativeSpringFollow); d->property = property; d->currentValue = property.read().toReal(); }