QmlJS: When completing enums, add Item.Foo instead of "Foo".

Change-Id: I9a74bd726d9691ca93477916159a80c04c35f52d
Reviewed-on: http://codereview.qt-project.org/4987
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
This commit is contained in:
Christian Kamm
2011-09-15 13:43:34 +02:00
parent 6b1f96bf7b
commit 4083880073
3 changed files with 20 additions and 13 deletions

View File

@@ -162,14 +162,13 @@ QmlObjectValue::QmlObjectValue(FakeMetaObject::ConstPtr metaObject, const QStrin
_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);
}
}
@@ -481,26 +480,30 @@ bool QmlObjectValue::isDerivedFrom(FakeMetaObject::ConstPtr base) const
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;
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -394,17 +394,21 @@ private:
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;
};