@@ -223,6 +223,7 @@ Rectangle {
223 property Item mascotImage: findChild(card, "mascotImage");
223 property Item mascotImage: findChild(card, "mascotImage");
225 function init() {
225 function init() {
226+ cardTool.components = Qt.binding(function() { return Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['components']; });
226 loader.visible = true;
227 loader.visible = true;
@@ -423,6 +424,7 @@ Rectangle {
426 function test_background(data) {
428 function test_background(data) {
427 selector.selectedIndex = data.index;
429 selector.selectedIndex = data.index;
428 waitForRendering(selector);
430 waitForRendering(selector);
@@ -453,6 +455,34 @@ Rectangle {
458+ function test_fallback() {
459+ selector.selectedIndex = 0;
460+ waitForRendering(card);
462+ card.cardData["art"] = "somethingbroken";
463+ card.cardDataChanged();
464+ waitForRendering(card);
465+ tryCompare(art, "visible", false);
467+ cardTool.components["art"]["fallback"] = Qt.resolvedUrl("artwork/emblem.png");
468+ cardTool.componentsChanged();
469+ card.cardData["art"] = "somethingbroken";
470+ card.cardDataChanged();
471+ waitForRendering(card);
472+ tryCompare(art, "visible", true);
474+ card.cardData["mascot"] = "somethingbroken2";
475+ card.cardDataChanged();
476+ compare(mascotImage.image.status, Image.Error);
478+ cardTool.components["mascot"] = {"fallback": Qt.resolvedUrl("artwork/emblem.png")};
479+ cardTool.componentsChanged();
480+ card.cardData["mascot"] = "somethingbroken2";
481+ card.cardDataChanged();
482+ waitForRendering(card);
483+ tryCompare(mascotImage.image, "status", Image.Ready);
456 function test_font_weights_data() {
486 function test_font_weights_data() {
458 { tag: "Title only", index: 8, weight: Font.Normal },
488 { tag: "Title only", index: 8, weight: Font.Normal },