projects
/
quassel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a38400e
)
Checking whether a initSetMethod exists before bluntly invoking it. (fixes a new...
author
Marcus Eggenberger
<egs@quassel-irc.org>
Sat, 20 Mar 2010 16:03:42 +0000
(17:03 +0100)
committer
Marcus Eggenberger
<egs@quassel-irc.org>
Sat, 20 Mar 2010 16:03:42 +0000
(17:03 +0100)
src/common/syncableobject.cpp
patch
|
blob
|
history
diff --git
a/src/common/syncableobject.cpp
b/src/common/syncableobject.cpp
index
b66626d
..
8667a59
100644
(file)
--- a/
src/common/syncableobject.cpp
+++ b/
src/common/syncableobject.cpp
@@
-142,6
+142,17
@@
void SyncableObject::fromVariantMap(const QVariantMap &properties) {
bool SyncableObject::setInitValue(const QString &property, const QVariant &value) {
QString handlername = QString("initSet") + property;
handlername[7] = handlername[7].toUpper();
bool SyncableObject::setInitValue(const QString &property, const QVariant &value) {
QString handlername = QString("initSet") + property;
handlername[7] = handlername[7].toUpper();
+
+ QString methodSignature = QString("%1(%2)").arg(handlername).arg(value.typeName());
+ int methodIdx = metaObject()->indexOfMethod(methodSignature.toAscii().constData());
+ if(methodIdx < 0) {
+ QByteArray normedMethodName = QMetaObject::normalizedSignature(methodSignature.toAscii().constData());
+ methodIdx = metaObject()->indexOfMethod(normedMethodName.constData());
+ }
+ if(methodIdx < 0) {
+ return false;
+ }
+
QGenericArgument param(value.typeName(), value.constData());
return QMetaObject::invokeMethod(this, handlername.toAscii(), param);
}
QGenericArgument param(value.typeName(), value.constData());
return QMetaObject::invokeMethod(this, handlername.toAscii(), param);
}