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