@@ -61,6 +61,7 @@ var kBackgroundLoaderCode = 'Loader {\n\
61// %1 is used as anchors of artShapeHolder
61// %1 is used as anchors of artShapeHolder
62// %2 is used as image width
62// %2 is used as image width
63// %3 is used as image height
63// %3 is used as image height
64+// %4 is used as image fallback
64var kArtShapeHolderCode = 'Item { \n\
65var kArtShapeHolderCode = 'Item { \n\
65 id: artShapeHolder; \n\
66 id: artShapeHolder; \n\
66 height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height; \n\
67 height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height; \n\
@@ -69,7 +70,8 @@ var kArtShapeHolderCode = 'Item { \n\
69 Loader { \n\
70 Loader { \n\
70 id: artShapeLoader; \n\
71 id: artShapeLoader; \n\
71 objectName: "artShapeLoader"; \n\
72 objectName: "artShapeLoader"; \n\
72− active: cardData && cardData["art"] || false; \n\
73+ readonly property string cardArt: cardData && cardData["art"] || "%4"; \n\
74+ active: cardArt != "" || false; \n\
73 asynchronous: root.asynchronous; \n\
75 asynchronous: root.asynchronous; \n\
74 visible: status == Loader.Ready; \n\
76 visible: status == Loader.Ready; \n\
75 sourceComponent: Item { \n\
77 sourceComponent: Item { \n\
@@ -127,7 +129,7 @@ var kArtShapeHolderCode = 'Item { \n\
127 CroppedImageMinimumSourceSize { \n\
129 CroppedImageMinimumSourceSize { \n\
128 id: artImage; \n\
130 id: artImage; \n\
129 objectName: "artImage"; \n\
131 objectName: "artImage"; \n\
130− source: cardData && cardData["art"] || ""; \n\
132+ source: artShapeLoader.cardArt; \n\
131 asynchronous: root.asynchronous; \n\
133 asynchronous: root.asynchronous; \n\
132 width: %2; \n\
134 width: %2; \n\
133 height: %3; \n\
135 height: %3; \n\
@@ -205,11 +207,12 @@ var kMascotShapeLoaderCode = 'Loader { \n\
206// %1 is used as anchors of mascotImage
208// %1 is used as anchors of mascotImage
207// %2 is used as visible of mascotImage
209// %2 is used as visible of mascotImage
210+// %3 is used as fallback image
208var kMascotImageCode = 'CroppedImageMinimumSourceSize { \n\
211var kMascotImageCode = 'CroppedImageMinimumSourceSize { \n\
209 id: mascotImage; \n\
212 id: mascotImage; \n\
210 objectName: "mascotImage"; \n\
213 objectName: "mascotImage"; \n\
211 anchors { %1 } \n\
214 anchors { %1 } \n\
212− source: cardData && cardData["mascot"] || ""; \n\
215+ source: cardData && cardData["mascot"] || "%3"; \n\
213 width: units.gu(6); \n\
216 width: units.gu(6); \n\
214 height: units.gu(5.625); \n\
217 height: units.gu(5.625); \n\
215 horizontalAlignment: Image.AlignHCenter; \n\
218 horizontalAlignment: Image.AlignHCenter; \n\
@@ -390,8 +393,8 @@ function cardString(template, components) {
390 heightCode = 'width / artShape.aspect';
393 heightCode = 'width / artShape.aspect';
393− code += kArtShapeHolderCode.arg(artAnchors).arg(widthCode).arg(heightCode);
394 var fallback = components["art"] && components["art"]["fallback"] || "";
396 var fallback = components["art"] && components["art"]["fallback"] || "";
397+ code += kArtShapeHolderCode.arg(artAnchors).arg(widthCode).arg(heightCode).arg(fallback);
395 if (fallback !== "") {
398 if (fallback !== "") {
396 code += 'Connections { target: artShapeLoader.item ? artShapeLoader.item.image : null; onStatusChanged: if (artShapeLoader.item.image.status === Image.Error) artShapeLoader.item.image.source = "%1"; } \n'.arg(fallback);
399 code += 'Connections { target: artShapeLoader.item ? artShapeLoader.item.image : null; onStatusChanged: if (artShapeLoader.item.image.status === Image.Error) artShapeLoader.item.image.source = "%1"; } \n'.arg(fallback);
@@ -473,8 +476,8 @@ function cardString(template, components) {
475 var mascotImageVisible = useMascotShape ? 'false' : 'showHeader';
478 var mascotImageVisible = useMascotShape ? 'false' : 'showHeader';
476− mascotCode = kMascotImageCode.arg(mascotAnchors).arg(mascotImageVisible);
477 var fallback = components["mascot"] && components["mascot"]["fallback"] || "";
479 var fallback = components["mascot"] && components["mascot"]["fallback"] || "";
480+ mascotCode = kMascotImageCode.arg(mascotAnchors).arg(mascotImageVisible).arg(fallback);
478 if (fallback !== "") {
481 if (fallback !== "") {
479 code += 'Connections { target: mascotImage; onStatusChanged: if (mascotImage.status === Image.Error) mascotImage.source = "%1"; } \n'.arg(fallback);
482 code += 'Connections { target: mascotImage; onStatusChanged: if (mascotImage.status === Image.Error) mascotImage.source = "%1"; } \n'.arg(fallback);