_attachedType(0),
_metaObject(metaObject),
_packageName(packageName),
- _componentVersion(version),
- _enums()
+ _componentVersion(version)
{
setClassName(className);
int nEnums = metaObject->enumeratorCount();
for (int i = 0; i < nEnums; ++i) {
FakeMetaEnum fEnum = metaObject->enumerator(i);
- _enums[fEnum.name()] = new QmlEnumValue(fEnum, valueOwner);
+ _enums[fEnum.name()] = new QmlEnumValue(this, i);
}
}
return false;
}
-QmlEnumValue::QmlEnumValue(const FakeMetaEnum &metaEnum, ValueOwner *valueOwner)
- : NumberValue(),
- _metaEnum(new FakeMetaEnum(metaEnum))
+QmlEnumValue::QmlEnumValue(const QmlObjectValue *owner, int enumIndex)
+ : _owner(owner)
+ , _enumIndex(enumIndex)
{
- valueOwner->registerValue(this);
+ owner->valueOwner()->registerValue(this);
}
QmlEnumValue::~QmlEnumValue()
{
- delete _metaEnum;
}
QString QmlEnumValue::name() const
{
- return _metaEnum->name();
+ return _owner->metaObject()->enumerator(_enumIndex).name();
}
QStringList QmlEnumValue::keys() const
{
- return _metaEnum->keys();
+ return _owner->metaObject()->enumerator(_enumIndex).keys();
+}
+
+const QmlObjectValue *QmlEnumValue::owner() const
+{
+ return _owner;
}
////////////////////////////////////////////////////////////////////////////////
Error m_error;
};
+class QmlObjectValue;
+
class QMLJS_EXPORT QmlEnumValue: public NumberValue
{
public:
- QmlEnumValue(const LanguageUtils::FakeMetaEnum &metaEnum, ValueOwner *valueOwner);
+ QmlEnumValue(const QmlObjectValue *owner, int index);
virtual ~QmlEnumValue();
QString name() const;
QStringList keys() const;
+ const QmlObjectValue *owner() const;
private:
- LanguageUtils::FakeMetaEnum *_metaEnum;
+ const QmlObjectValue *_owner;
+ int _enumIndex;
};
dynamic_cast<const QmlEnumValue *>(value)) {
foreach (const QString &key, enumValue->keys())
addCompletion(key, m_interface->symbolIcon(),
- EnumValueOrder, QString("\"%1\"").arg(key));
+ EnumValueOrder, QString("%1.%2").arg(enumValue->owner()->className(), key));
}
}