QmlDesigner: Fix bool handling in the list model editor

Task-number: QDS-2581
Change-Id: I47a9ed4ca55532bb7199a6c5dd4894b7adb7d05d
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Marco Bubke
2020-08-06 11:27:27 +02:00
parent b4027b7943
commit b5d59c75a7
2 changed files with 77 additions and 0 deletions

View File

@@ -51,6 +51,17 @@ public:
QVariant maybeConvertToNumber(const QVariant &value)
{
if (value.type() == QVariant::Bool)
return value;
if (value.type() == QVariant::String) {
const QString text = value.toString();
if (text == "true")
return QVariant(true);
if (text == "false")
return QVariant(false);
}
bool canConvert = false;
double convertedValue = value.toDouble(&canConvert);
if (canConvert) {

View File

@@ -1310,4 +1310,70 @@ TEST_F(ListModelEditor, ListViewHasModelBinding)
ElementsAre("pic.png", "poo", 111, IsInvalid())));
}
TEST_F(ListModelEditor, AddBooleanDisplayValues)
{
model.setListModel(listModelNode);
model.setValue(0, 1, true);
ASSERT_THAT(displayValues(),
ElementsAre(ElementsAre(IsInvalid(), true, 1, 42),
ElementsAre("pic.png", "bar", 4, IsInvalid()),
ElementsAre("pic.png", "poo", 111, IsInvalid())));
}
TEST_F(ListModelEditor, AddBooleanProperties)
{
model.setListModel(listModelNode);
model.setValue(0, 1, true);
ASSERT_THAT(properties(),
ElementsAre(UnorderedElementsAre(IsVariantProperty("name", "foo"),
IsVariantProperty("value", true),
IsVariantProperty("value2", 42)),
UnorderedElementsAre(IsVariantProperty("image", "pic.png"),
IsVariantProperty("name", "bar"),
IsVariantProperty("value", 4)),
UnorderedElementsAre(IsVariantProperty("image", "pic.png"),
IsVariantProperty("name", "poo"),
IsVariantProperty("value", 111))));
}
TEST_F(ListModelEditor, AddTrueAsStringProperties)
{
model.setListModel(listModelNode);
model.setValue(0, 1, "true");
ASSERT_THAT(properties(),
ElementsAre(UnorderedElementsAre(IsVariantProperty("name", true),
IsVariantProperty("value", 1),
IsVariantProperty("value2", 42)),
UnorderedElementsAre(IsVariantProperty("image", "pic.png"),
IsVariantProperty("name", "bar"),
IsVariantProperty("value", 4)),
UnorderedElementsAre(IsVariantProperty("image", "pic.png"),
IsVariantProperty("name", "poo"),
IsVariantProperty("value", 111))));
}
TEST_F(ListModelEditor, AddFalseAsStringProperties)
{
model.setListModel(listModelNode);
model.setValue(0, 1, "false");
ASSERT_THAT(properties(),
ElementsAre(UnorderedElementsAre(IsVariantProperty("name", false),
IsVariantProperty("value", 1),
IsVariantProperty("value2", 42)),
UnorderedElementsAre(IsVariantProperty("image", "pic.png"),
IsVariantProperty("name", "bar"),
IsVariantProperty("value", 4)),
UnorderedElementsAre(IsVariantProperty("image", "pic.png"),
IsVariantProperty("name", "poo"),
IsVariantProperty("value", 111))));
}
} // namespace