Fixed dynamic property default values.

This commit is contained in:
Erik Verbruggen
2010-03-29 13:00:56 +02:00
parent 4ee8a199af
commit e934ae4a73
2 changed files with 19 additions and 8 deletions

View File

@@ -179,6 +179,8 @@ static inline int propertyType(const QString &typeName)
return QMetaType::type("int"); return QMetaType::type("int");
else if (typeName == QLatin1String("real")) else if (typeName == QLatin1String("real"))
return QMetaType::type("double"); return QMetaType::type("double");
else if (typeName == QLatin1String("double"))
return QMetaType::type("double");
else if (typeName == QLatin1String("string")) else if (typeName == QLatin1String("string"))
return QMetaType::type("QString"); return QMetaType::type("QString");
else if (typeName == QLatin1String("url")) else if (typeName == QLatin1String("url"))
@@ -650,9 +652,16 @@ QVariant TextToModelMerger::convertToVariant(const ModelNode &node,
if (!astType.isEmpty()) { if (!astType.isEmpty()) {
const int type = propertyType(astType); const int type = propertyType(astType);
QVariant value(cleanedValue); if (type == QMetaType::type("QVariant")) {
value.convert(static_cast<QVariant::Type>(type)); if (cleanedValue.isNull()) // Explicitly isNull, NOT isEmpty!
return value; return QVariant(static_cast<QVariant::Type>(type));
else
return QVariant(cleanedValue);
} else {
QVariant value = QVariant(cleanedValue);
value.convert(static_cast<QVariant::Type>(type));
return value;
}
const QString typeName = QMetaType::typeName(type); const QString typeName = QMetaType::typeName(type);
return Internal::PropertyParser::read(typeName, astValue, nodeMetaInfo.metaInfo()); return Internal::PropertyParser::read(typeName, astValue, nodeMetaInfo.metaInfo());

View File

@@ -451,13 +451,13 @@ void TestCore::testRewriterDynamicProperties()
QVERIFY(rootModelNode.hasVariantProperty("d")); QVERIFY(rootModelNode.hasVariantProperty("d"));
QCOMPARE(rootModelNode.variantProperty("d").dynamicTypeName(), QString("double")); QCOMPARE(rootModelNode.variantProperty("d").dynamicTypeName(), QString("double"));
QCOMPARE(rootModelNode.variantProperty("d").value().type(), QVariant::Double); QCOMPARE(rootModelNode.variantProperty("d").value().type(), QVariant::Double);
QCOMPARE(testRewriterView1->rootModelNode().variantProperty("b").value().toDouble(), 0.0); QCOMPARE(testRewriterView1->rootModelNode().variantProperty("d").value().toDouble(), 0.0);
QVERIFY(rootModelNode.hasVariantProperty("dd")); QVERIFY(rootModelNode.hasVariantProperty("dd"));
QCOMPARE(testRewriterView1->rootModelNode().variantProperty("dd").value().toDouble(), 1.1); QCOMPARE(testRewriterView1->rootModelNode().variantProperty("dd").value().toDouble(), 1.1);
QVERIFY(rootModelNode.hasVariantProperty("r")); QVERIFY(rootModelNode.hasVariantProperty("r"));
QCOMPARE(rootModelNode.variantProperty("r").dynamicTypeName(), QString("double")); QCOMPARE(rootModelNode.variantProperty("r").dynamicTypeName(), QString("real"));
QCOMPARE(rootModelNode.variantProperty("r").value().type(), QVariant::Double); QCOMPARE(rootModelNode.variantProperty("r").value().type(), QVariant::Double);
QCOMPARE(testRewriterView1->rootModelNode().variantProperty("r").value().toDouble(), 0.0); QCOMPARE(testRewriterView1->rootModelNode().variantProperty("r").value().toDouble(), 0.0);
@@ -490,7 +490,7 @@ void TestCore::testRewriterDynamicProperties()
QVERIFY(rootModelNode.hasVariantProperty("t")); QVERIFY(rootModelNode.hasVariantProperty("t"));
QCOMPARE(rootModelNode.variantProperty("t").dynamicTypeName(), QString("date")); QCOMPARE(rootModelNode.variantProperty("t").dynamicTypeName(), QString("date"));
QCOMPARE(rootModelNode.variantProperty("t").value().type(), QVariant::Color); QCOMPARE(rootModelNode.variantProperty("t").value().type(), QVariant::Date);
QCOMPARE(testRewriterView1->rootModelNode().variantProperty("t").value().value<QDate>(), QDate()); QCOMPARE(testRewriterView1->rootModelNode().variantProperty("t").value().value<QDate>(), QDate());
QVERIFY(rootModelNode.hasVariantProperty("tt")); QVERIFY(rootModelNode.hasVariantProperty("tt"));
@@ -498,10 +498,12 @@ void TestCore::testRewriterDynamicProperties()
QVERIFY(rootModelNode.hasVariantProperty("v")); QVERIFY(rootModelNode.hasVariantProperty("v"));
QCOMPARE(rootModelNode.variantProperty("v").dynamicTypeName(), QString("var")); QCOMPARE(rootModelNode.variantProperty("v").dynamicTypeName(), QString("var"));
QCOMPARE(rootModelNode.variantProperty("v").value().type(), QVariant::Invalid); const int type = rootModelNode.variantProperty("v").value().type();
QCOMPARE(type, QMetaType::type("QVariant"));
QVERIFY(rootModelNode.hasVariantProperty("vv")); QVERIFY(rootModelNode.hasVariantProperty("vv"));
QCOMPARE(testRewriterView1->rootModelNode().variantProperty("vv").value().value<QString>(), QString("hello")); const QString inThere = testRewriterView1->rootModelNode().variantProperty("vv").value().value<QString>();
QCOMPARE(inThere, QString("Hello"));
// test model2text // test model2text
// QPlainTextEdit textEdit2; // QPlainTextEdit textEdit2;