forked from qt-creator/qt-creator
QmlOutline: Also show 'name', 'target' in addition to 'id'
Search also for 'name', or 'target' properties and show them beside the type name.
This commit is contained in:
@@ -373,7 +373,7 @@ QModelIndex QmlOutlineModel::enterObjectDefinition(AST::UiObjectDefinition *objD
|
|||||||
|
|
||||||
if (typeName.at(0).isUpper()) {
|
if (typeName.at(0).isUpper()) {
|
||||||
prototype.setText(typeName);
|
prototype.setText(typeName);
|
||||||
prototype.setAnnotation(getId(objDef));
|
prototype.setAnnotation(getAnnotation(objDef));
|
||||||
if (!m_typeToIcon.contains(typeName)) {
|
if (!m_typeToIcon.contains(typeName)) {
|
||||||
m_typeToIcon.insert(typeName, getIcon(objDef));
|
m_typeToIcon.insert(typeName, getIcon(objDef));
|
||||||
}
|
}
|
||||||
@@ -689,23 +689,44 @@ QIcon QmlOutlineModel::getIcon(AST::UiObjectDefinition *objDef) {
|
|||||||
return QIcon();
|
return QIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QmlOutlineModel::getId(AST::UiObjectDefinition *objDef) {
|
QString QmlOutlineModel::getAnnotation(AST::UiObjectDefinition *objDef) {
|
||||||
QString id;
|
const QHash<QString,QString> bindings = getScriptBindings(objDef);
|
||||||
|
|
||||||
|
if (bindings.contains("id"))
|
||||||
|
return bindings.value("id");
|
||||||
|
|
||||||
|
if (bindings.contains("name"))
|
||||||
|
return bindings.value("name");
|
||||||
|
|
||||||
|
if (bindings.contains("target"))
|
||||||
|
return bindings.value("target");
|
||||||
|
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QHash<QString,QString> QmlOutlineModel::getScriptBindings(AST::UiObjectDefinition *objDef) {
|
||||||
|
QHash <QString,QString> scriptBindings;
|
||||||
for (AST::UiObjectMemberList *it = objDef->initializer->members; it; it = it->next) {
|
for (AST::UiObjectMemberList *it = objDef->initializer->members; it; it = it->next) {
|
||||||
if (AST::UiScriptBinding *binding = AST::cast<AST::UiScriptBinding*>(it->member)) {
|
if (AST::UiScriptBinding *binding = AST::cast<AST::UiScriptBinding*>(it->member)) {
|
||||||
if (binding->qualifiedId->name->asString() == "id") {
|
const QString bindingName = asString(binding->qualifiedId);
|
||||||
AST::ExpressionStatement *expr = AST::cast<AST::ExpressionStatement*>(binding->statement);
|
AST::ExpressionStatement *expr = AST::cast<AST::ExpressionStatement*>(binding->statement);
|
||||||
if (!expr)
|
if (!expr)
|
||||||
continue;
|
continue;
|
||||||
AST::IdentifierExpression *idExpr = AST::cast<AST::IdentifierExpression*>(expr->expression);
|
|
||||||
if (!idExpr)
|
AST::StringLiteral *stringLiteral = AST::cast<AST::StringLiteral*>(expr->expression);
|
||||||
|
if (stringLiteral) {
|
||||||
|
scriptBindings.insert(bindingName, stringLiteral->value->asString());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
AST::IdentifierExpression *idExpr = AST::cast<AST::IdentifierExpression*>(expr->expression);
|
||||||
|
if (idExpr) {
|
||||||
|
scriptBindings.insert(bindingName, idExpr->name->asString());
|
||||||
continue;
|
continue;
|
||||||
id = idExpr->name->asString();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return id;
|
return scriptBindings;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -108,7 +108,9 @@ private:
|
|||||||
static QString asString(QmlJS::AST::UiQualifiedId *id);
|
static QString asString(QmlJS::AST::UiQualifiedId *id);
|
||||||
static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::UiObjectMember *objMember);
|
static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::UiObjectMember *objMember);
|
||||||
QIcon getIcon(QmlJS::AST::UiObjectDefinition *objDef);
|
QIcon getIcon(QmlJS::AST::UiObjectDefinition *objDef);
|
||||||
static QString getId(QmlJS::AST::UiObjectDefinition *objDef);
|
|
||||||
|
static QString getAnnotation(QmlJS::AST::UiObjectDefinition *objDef);
|
||||||
|
static QHash<QString,QString> getScriptBindings(QmlJS::AST::UiObjectDefinition *objDefinition);
|
||||||
|
|
||||||
|
|
||||||
SemanticInfo m_semanticInfo;
|
SemanticInfo m_semanticInfo;
|
||||||
|
|||||||
Reference in New Issue
Block a user