43 #include <QMetaObject>
44 #include <QMetaProperty>
45 #include <QScrollArea>
46 #include <QVBoxLayout>
63 int enumToInt(
const QMetaEnum& metaEnum,
int enumValue)
const;
64 int intToEnum(
const QMetaEnum& metaEnum,
int intValue)
const;
65 int flagToInt(
const QMetaEnum& metaEnum,
int flagValue)
const;
66 int intToFlag(
const QMetaEnum& metaEnum,
int intValue)
const;
89 QMap<int, int> valueMap;
92 for (
int i = 0; i < metaEnum.keyCount(); i++)
94 int value = metaEnum.value(i);
96 if (!valueMap.contains(
value))
98 if (
value == enumValue)
103 valueMap[
value] = pos++;
113 QMap<int, bool> valueMap;
116 for (
int i = 0; i < metaEnum.keyCount(); i++)
118 int value = metaEnum.value(i);
122 valueMap[
value] =
true;
127 if (intValue >=
values.count())
132 return values.at(intValue);
138 if (
value == subValue)
147 if (!(
value & (1 << i)))
156 subValue = subValue >> 1;
187 QMap<int, int> valueMap;
190 for (
int i = 0; i < metaEnum.keyCount(); i++)
192 int value = metaEnum.value(i);
198 intValue |= (1 << pos);
201 valueMap[
value] = pos++;
211 QMap<int, bool> valueMap;
214 for (
int i = 0; i < metaEnum.keyCount(); i++)
216 int value = metaEnum.value(i);
220 valueMap[
value] =
true;
238 flagValue |=
values.at(i);
268 for (
int idx = metaObject->propertyOffset(); idx < metaObject->propertyCount(); idx++)
270 QMetaProperty metaProperty = metaObject->property(idx);
272 if (metaProperty.isReadable())
279 if (metaProperty.isEnumType())
281 if (metaProperty.isFlagType())
284 metaProperty.read(
m_object).toInt()));
289 metaProperty.read(
m_object).toInt()));
315 QString className = QLatin1String(metaObject->className());
320 for (
int idx = metaObject->propertyOffset(); idx < metaObject->propertyCount(); idx++)
322 QMetaProperty metaProperty = metaObject->property(idx);
323 int type = metaProperty.userType();
326 if (!metaProperty.isReadable())
329 QLatin1String(metaProperty.name()));
330 subProperty->
setValue(QLatin1String(
"< Non Readable >"));
332 else if (metaProperty.isEnumType())
334 if (metaProperty.isFlagType())
337 QLatin1String(metaProperty.name()));
338 QMetaEnum metaEnum = metaProperty.enumerator();
339 QMap<int, bool> valueMap;
340 QStringList flagNames;
342 for (
int i = 0; i < metaEnum.keyCount(); i++)
344 int value = metaEnum.value(i);
348 valueMap[
value] =
true;
349 flagNames.append(QLatin1String(metaEnum.key(i)));
352 subProperty->
setAttribute(QLatin1String(
"flagNames"), flagNames);
360 QLatin1String(metaProperty.name()));
361 QMetaEnum metaEnum = metaProperty.enumerator();
364 QStringList enumNames;
366 for (
int i = 0; i < metaEnum.keyCount(); i++)
368 int value = metaEnum.value(i);
370 if (!valueMap.contains(
value))
372 valueMap[
value] =
true;
373 enumNames.append(QLatin1String(metaEnum.key(i)));
377 subProperty->
setAttribute(QLatin1String(
"enumNames"), enumNames);
383 if (!metaProperty.isWritable())
387 QLatin1String(metaProperty.name()) + QLatin1String(
" (Non Writable)"));
390 if (!metaProperty.isDesignable())
394 QLatin1String(metaProperty.name()) + QLatin1String(
" (Non Designable)"));
406 QLatin1String(metaProperty.name()));
407 subProperty->
setValue(QLatin1String(
"< Unknown Type >"));
445 const QMetaObject* metaObject =
m_object->metaObject();
446 QMetaProperty metaProperty = metaObject->property(idx);
448 if (metaProperty.isEnumType())
450 if (metaProperty.isFlagType())
488 QVBoxLayout* layout =
new QVBoxLayout(
this);
489 layout->setMargin(0);
498 SIGNAL(valueChanged(
QtProperty*,
const QVariant&)),
500 SLOT(slotValueChanged(
QtProperty*,
const QVariant&)));
547 #include "moc_objectcontroller.cpp"