Revision 31565d02
Von Christian Ehringfeld vor mehr als 6 Jahren hinzugefügt
src/entityinstancefactory.cpp | ||
---|---|---|
|
||
QHash<QByteArray, EntityInstanceFactory::Constructor>
|
||
EntityInstanceFactory::instance =
|
||
QHash<QByteArray, EntityInstanceFactory::Constructor>();
|
||
QHash<QByteArray, EntityInstanceFactory::Constructor>();
|
||
|
||
EntityInstanceFactory::EntityInstanceFactory() {
|
||
}
|
||
... | ... | |
s.append("*");
|
||
}
|
||
auto ptr = EntityInstanceFactory::createInstance(QMetaType::type(
|
||
s.toUtf8().constData()));
|
||
s.toUtf8().constData()));
|
||
if (!ptr) {
|
||
s.remove("*");
|
||
ptr = EntityInstanceFactory::createObject(s.toUtf8());
|
||
... | ... | |
if(!e) {
|
||
e = qobject_cast<Entity *>(metaObject->newInstance());
|
||
qDebug() << "Backup method for dynamic object creation was called. Maybe the class " +
|
||
QString(metaObject->className()) + " isn't registered?";
|
||
QString(metaObject->className()) + " isn't registered?";
|
||
}
|
||
} else {
|
||
void *newObj = QMetaType::create(metaTypeId);
|
||
... | ... | |
}
|
||
|
||
Entity *EntityInstanceFactory::createInstance(const char *className,
|
||
const QHash<QString, QVariant> &attributes) {
|
||
const QHash<QString, QVariant> &attributes) {
|
||
Entity *e = EntityInstanceFactory::createInstance(className);
|
||
EntityInstanceFactory::setAttributes(e, attributes);
|
||
return e;
|
||
}
|
||
|
||
void EntityInstanceFactory::setAttributes(Entity *&e,
|
||
const QHash<QString, QVariant> &attributes,
|
||
QHash<QString, QMetaProperty> metaprops) {
|
||
const QHash<QString, QVariant> &attributes,
|
||
QHash<QString, QMetaProperty> metaprops) {
|
||
if (e) {
|
||
auto iterator = attributes.constBegin();
|
||
while (iterator != attributes.constEnd()) {
|
||
... | ... | |
}
|
||
} else {
|
||
qWarning() << prop.name() << "on Entity" << EntityHelper::getClassname(
|
||
e) << "not writeable!";
|
||
e) << "not writeable!";
|
||
}
|
||
} else {
|
||
e->setProperty(iterator.key().toLatin1().data(), iterator.value());
|
||
... | ... | |
}
|
||
|
||
void EntityInstanceFactory::setAttributes(Entity *&e,
|
||
const QHash<QString, QVariant> &attributes) {
|
||
const QHash<QString, QVariant> &attributes) {
|
||
if (!attributes.isEmpty()) {
|
||
auto metaprops = EntityHelper::getMetaProperties(e);
|
||
EntityInstanceFactory::setAttributes(e, attributes, metaprops);
|
||
... | ... | |
QStringList EntityInstanceFactory::getRegisteredClasses() {
|
||
QStringList registered = QStringList();
|
||
for (auto i = EntityInstanceFactory::instance.constBegin();
|
||
i != EntityInstanceFactory::instance.constEnd(); ++i) {
|
||
i != EntityInstanceFactory::instance.constEnd(); ++i) {
|
||
registered.append(i.key());
|
||
}
|
||
return registered;
|
||
... | ... | |
|
||
Entity *EntityInstanceFactory::createInstance(Attribute *&attr) {
|
||
return EntityInstanceFactory::createInstance(
|
||
EntityInstanceFactory::extractEntityType(
|
||
attr->getMetaProperty().typeName()));
|
||
EntityInstanceFactory::extractEntityType(
|
||
attr->getMetaProperty().typeName()));
|
||
}
|
Auch abrufbar als: Unified diff
Revert "Merge branch 'seb' of ssh://synlos.net/entitymanager into dev"
This reverts commit 2c89eb94005a9c61337ede9cb858dfb467d3f251, reversing
changes made to 55dc7c8e7203a1f5aadee49ec9693b47d0008928.