OSDN Git Service

QmlJS: When completing enums, add Item.Foo instead of "Foo".
authorChristian Kamm <christian.d.kamm@nokia.com>
Thu, 15 Sep 2011 11:43:34 +0000 (13:43 +0200)
committerChristian Kamm <christian.d.kamm@nokia.com>
Thu, 15 Sep 2011 11:49:13 +0000 (13:49 +0200)
Change-Id: I9a74bd726d9691ca93477916159a80c04c35f52d
Reviewed-on: http://codereview.qt-project.org/4987
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
src/libs/qmljs/qmljsinterpreter.cpp
src/libs/qmljs/qmljsinterpreter.h
src/plugins/qmljseditor/qmljscompletionassist.cpp

index 0a44669..8083960 100644 (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;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
index 899d1be..18e0e36 100644 (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;
 };
 
 
index da7426f..eaf4c48 100644 (file)
@@ -558,7 +558,7 @@ IAssistProposal *QmlJSCompletionAssistProcessor::perform(const IAssistInterface
                     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));
             }
         }