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(); }
static void removeObjectFromList(const QDeclarativeProperty &property, QObject *objectToBeRemoved, QDeclarativeEngine * engine) { QDeclarativeListReference listReference(property.object(), property.name().toLatin1(), engine); if (!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 != objectToBeRemoved) objectList.append(listItem); } listReference.clear(); foreach(QObject *object, objectList) listReference.append(object); }