void QQmlQtQuick2DebugStatesDelegate::updateBinding(QQmlContext *context, const QQmlProperty &property, const QVariant &expression, bool isLiteralValue, const QString &fileName, int line, int column, bool *inBaseState) { typedef QPointer<QQuickState> QuickStatePointer; QObject *object = property.object(); QString propertyName = property.name(); foreach (const QuickStatePointer& statePointer, m_allStates) { if (QQuickState *state = statePointer.data()) { // here we assume that the revert list on itself defines the base state if (state->isStateActive() && state->containsPropertyInRevertList(object, propertyName)) { *inBaseState = false; QQmlBinding *newBinding = 0; if (!isLiteralValue) { newBinding = new QQmlBinding(expression.toString(), object, QQmlContextData::get(context), fileName, line, column); newBinding->setTarget(property); newBinding->setNotifyOnValueChanged(true); } state->changeBindingInRevertList(object, propertyName, newBinding); if (isLiteralValue) state->changeValueInRevertList(object, propertyName, expression); } } } }
VideoRendererItem::VideoRendererItem(QQuickItem *parent) : HighQualityTextureItem(parent) , d(new Data(this)) { d->mposd = new MpOsdItem(this); d->letterbox = new LetterboxItem(this); const QQmlProperty property(d->letterbox, "anchors.centerIn"); property.write(QVariant::fromValue(this)); setZ(-1); setAcceptHoverEvents(true); setAcceptedMouseButtons(Qt::AllButtons); setFlag(ItemAcceptsDrops, true); connect(d->mposd, &MpOsdItem::targetSizeChanged, this, &VideoRendererItem::osdSizeChanged); }
void ObjectNodeInstance::deleteObjectsInList(const QQmlProperty &property) { QObjectList objectList; QQmlListReference list = qvariant_cast<QQmlListReference>(property.read()); if (!QmlPrivateGate::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(); }
VideoRenderer::VideoRenderer(QQuickItem *parent) : HighQualityTextureItem(parent) , d(new Data(this)) { d->letterbox = new LetterboxItem(this); const QQmlProperty property(d->letterbox, u"anchors.centerIn"_q); property.write(QVariant::fromValue(this)); setZ(-1); setAcceptHoverEvents(true); setAcceptedMouseButtons(Qt::AllButtons); setFlag(ItemAcceptsDrops, true); connect(&d->sizeChecker, &QTimer::timeout, [=] () { d->updateOsdSize(); }); d->sizeChecker.setInterval(300); d->measure.setTimer([=]() { if (_Change(d->fps, d->measure.get())) emit fpsChanged(d->fps); }, 100000); }
VideoRenderer::VideoRenderer(QQuickItem *parent) : Super(parent), d(new Data) { d->p = this; d->letterbox = new LetterboxItem(this); const QQmlProperty property(d->letterbox, u"anchors.centerIn"_q); property.write(QVariant::fromValue(this)); setZ(-1); setAcceptHoverEvents(true); setAcceptedMouseButtons(Qt::AllButtons); setFlag(ItemAcceptsDrops, true); connect(&d->sizeChecker, &QTimer::timeout, [this] () { if (_Change(d->frame.size, d->fboSizeHint()) | _Change(d->osd.size, d->osdSizeHint())) { d->redraw = true; reserve(UpdateAll); } }); d->sizeChecker.setInterval(300); d->sizeChecker.setSingleShot(true); }
static void removeObjectFromList(const QQmlProperty &property, QObject *objectToBeRemoved, QQmlEngine * engine) { QQmlListReference listReference(property.object(), property.name().toUtf8(), engine); if (!QmlPrivateGate::hasFullImplementedListInterface(listReference)) { qWarning() << "Property list interface not fully implemented for Class " << property.property().typeName() << " in property " << property.name() << "!"; return; } int count = listReference.count(); QObjectList objectList; for (int i = 0; i < count; i ++) { QObject *listItem = listReference.at(i); if (listItem && listItem != objectToBeRemoved) objectList.append(listItem); } listReference.clear(); foreach (QObject *object, objectList) listReference.append(object); }
/*! \internal */ void ApplicationSettings::handleProperty(const QQmlProperty& qmlProperty, bool overwrite) { // Validate property for this application settings if(!qmlProperty.isValid() || qmlProperty.propertyType() == QVariant::Invalid) return; // Skip applicationName and fileName if(qmlProperty.name() == "applicationName" || qmlProperty.name() == "fileName") return; //Don't persist class properties (only user defined ones) if(m_existingProperties->contains(qmlProperty.name())) return; QVariant v = value(qmlProperty.name()); // Add notification handler QmlPropertyWrapper* wrapper = new QmlPropertyWrapper(qmlProperty); m_userProperties->append(wrapper); if(!m_initialized) { connect(wrapper, SIGNAL(notifySignal(QmlPropertyWrapper*)), this, SLOT(qmlPropertyLookup(QmlPropertyWrapper*))); }
static bool isObject(const QQmlProperty &property) { return (property.propertyTypeCategory() == QQmlProperty::Object) || //QVariant can also store QObjects. Lets trust our model. (QLatin1String(property.propertyTypeName()) == QLatin1String("QVariant")); }
static bool isList(const QQmlProperty &property) { return property.propertyTypeCategory() == QQmlProperty::List; }
void QQmlBinding::setTarget(const QQmlProperty &prop) { setTarget(prop.object(), QQmlPropertyPrivate::get(prop)->core, QQmlPropertyPrivate::get(prop)->context); }