From 4083880073526045abdd31106e38e070bb926a38 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 15 Sep 2011 13:43:34 +0200 Subject: [PATCH] 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 --- src/libs/qmljs/qmljsinterpreter.cpp | 23 +++++++++++++---------- src/libs/qmljs/qmljsinterpreter.h | 8 ++++++-- src/plugins/qmljseditor/qmljscompletionassist.cpp | 2 +- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 0a446697f6..808396032f 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -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; } //////////////////////////////////////////////////////////////////////////////// diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 899d1beafd..18e0e36b74 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -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; }; diff --git a/src/plugins/qmljseditor/qmljscompletionassist.cpp b/src/plugins/qmljseditor/qmljscompletionassist.cpp index da7426fbf9..eaf4c48d2d 100644 --- a/src/plugins/qmljseditor/qmljscompletionassist.cpp +++ b/src/plugins/qmljseditor/qmljscompletionassist.cpp @@ -558,7 +558,7 @@ IAssistProposal *QmlJSCompletionAssistProcessor::perform(const IAssistInterface dynamic_cast(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)); } } -- 2.11.0