on xenial help sign in
Change the art back to the cardData value if it changes from broken to valid image
6e864bcAlbert Astals Cid
plugins/Dash/CardCreator.js+1
@@ -92,6 +92,7 @@ var kArtShapeHolderCode = 'Item { \n\
92 id: artShapeLoader; \n\
92 id: artShapeLoader; \n\
93 objectName: "artShapeLoader"; \n\
93 objectName: "artShapeLoader"; \n\
94 readonly property string cardArt: cardData && cardData["art"] || %9; \n\
94 readonly property string cardArt: cardData && cardData["art"] || %9; \n\
95+ onCardArtChanged: { if (item) { item.image.source = cardArt; } } \n\
95 active: cardArt != ""; \n\
96 active: cardArt != ""; \n\
96 asynchronous: %6; \n\
97 asynchronous: %6; \n\
97 visible: status == Loader.Ready; \n\
98 visible: status == Loader.Ready; \n\
tests/plugins/Dash/cardcreator/1.res+1
@@ -21,6 +21,7 @@ Item {
21 id: artShapeLoader;
21 id: artShapeLoader;
22 objectName: "artShapeLoader";
22 objectName: "artShapeLoader";
23 readonly property string cardArt: cardData && cardData["art"] || "";
23 readonly property string cardArt: cardData && cardData["art"] || "";
24+ onCardArtChanged: { if (item) { item.image.source = cardArt; } }
24 active: cardArt != "";
25 active: cardArt != "";
25 asynchronous: true;
26 asynchronous: true;
26 visible: status == Loader.Ready;
27 visible: status == Loader.Ready;
tests/plugins/Dash/cardcreator/1.res.cardcreator+1
@@ -20,6 +20,7 @@ Item {
20 id: artShapeLoader;
20 id: artShapeLoader;
21 objectName: "artShapeLoader";
21 objectName: "artShapeLoader";
22 readonly property string cardArt: cardData && cardData["art"] || "";
22 readonly property string cardArt: cardData && cardData["art"] || "";
23+ onCardArtChanged: { if (item) { item.image.source = cardArt; } }
23 active: cardArt != "";
24 active: cardArt != "";
24 asynchronous: false;
25 asynchronous: false;
25 visible: status == Loader.Ready;
26 visible: status == Loader.Ready;
tests/plugins/Dash/cardcreator/11.res+1
@@ -59,6 +59,7 @@ Item {
59 id: artShapeLoader;
59 id: artShapeLoader;
60 objectName: "artShapeLoader";
60 objectName: "artShapeLoader";
61 readonly property string cardArt: cardData && cardData["art"] || decodeURI("%5C");
61 readonly property string cardArt: cardData && cardData["art"] || decodeURI("%5C");
62+ onCardArtChanged: { if (item) { item.image.source = cardArt; } }
62 active: cardArt != "";
63 active: cardArt != "";
63 asynchronous: true;
64 asynchronous: true;
64 visible: status == Loader.Ready;
65 visible: status == Loader.Ready;
tests/plugins/Dash/cardcreator/11.res.cardcreator+1
@@ -58,6 +58,7 @@ Item {
58 id: artShapeLoader;
58 id: artShapeLoader;
59 objectName: "artShapeLoader";
59 objectName: "artShapeLoader";
60 readonly property string cardArt: cardData && cardData["art"] || "";
60 readonly property string cardArt: cardData && cardData["art"] || "";
61+ onCardArtChanged: { if (item) { item.image.source = cardArt; } }
61 active: cardArt != "";
62 active: cardArt != "";
62 asynchronous: false;
63 asynchronous: false;
63 visible: status == Loader.Ready;
64 visible: status == Loader.Ready;
tests/plugins/Dash/cardcreator/12.res+1
@@ -21,6 +21,7 @@ Item {
21 id: artShapeLoader;
21 id: artShapeLoader;
22 objectName: "artShapeLoader";
22 objectName: "artShapeLoader";
23 readonly property string cardArt: cardData && cardData["art"] || "";
23 readonly property string cardArt: cardData && cardData["art"] || "";
24+ onCardArtChanged: { if (item) { item.image.source = cardArt; } }
24 active: cardArt != "";
25 active: cardArt != "";
25 asynchronous: true;
26 asynchronous: true;
26 visible: status == Loader.Ready;
27 visible: status == Loader.Ready;
tests/plugins/Dash/cardcreator/12.res.cardcreator+1
@@ -20,6 +20,7 @@ Item {
20 id: artShapeLoader;
20 id: artShapeLoader;
21 objectName: "artShapeLoader";
21 objectName: "artShapeLoader";
22 readonly property string cardArt: cardData && cardData["art"] || "";
22 readonly property string cardArt: cardData && cardData["art"] || "";
23+ onCardArtChanged: { if (item) { item.image.source = cardArt; } }
23 active: cardArt != "";
24 active: cardArt != "";
24 asynchronous: false;
25 asynchronous: false;
25 visible: status == Loader.Ready;
26 visible: status == Loader.Ready;
tests/plugins/Dash/cardcreator/3.res+1
@@ -21,6 +21,7 @@ Item {
21 id: artShapeLoader;
21 id: artShapeLoader;
22 objectName: "artShapeLoader";
22 objectName: "artShapeLoader";
23 readonly property string cardArt: cardData && cardData["art"] || decodeURI("IHAVE%5C%22ESCAPED%5C%22QUOTES%5C%22");
23 readonly property string cardArt: cardData && cardData["art"] || decodeURI("IHAVE%5C%22ESCAPED%5C%22QUOTES%5C%22");
24+ onCardArtChanged: { if (item) { item.image.source = cardArt; } }
24 active: cardArt != "";
25 active: cardArt != "";
25 asynchronous: true;
26 asynchronous: true;
26 visible: status == Loader.Ready;
27 visible: status == Loader.Ready;
tests/plugins/Dash/cardcreator/3.res.cardcreator+1
@@ -20,6 +20,7 @@ Item {
20 id: artShapeLoader;
20 id: artShapeLoader;
21 objectName: "artShapeLoader";
21 objectName: "artShapeLoader";
22 readonly property string cardArt: cardData && cardData["art"] || "";
22 readonly property string cardArt: cardData && cardData["art"] || "";
23+ onCardArtChanged: { if (item) { item.image.source = cardArt; } }
23 active: cardArt != "";
24 active: cardArt != "";
24 asynchronous: false;
25 asynchronous: false;
25 visible: status == Loader.Ready;
26 visible: status == Loader.Ready;
tests/plugins/Dash/cardcreator/5.res+1
@@ -21,6 +21,7 @@ Item {
21 id: artShapeLoader;
21 id: artShapeLoader;
22 objectName: "artShapeLoader";
22 objectName: "artShapeLoader";
23 readonly property string cardArt: cardData && cardData["art"] || "";
23 readonly property string cardArt: cardData && cardData["art"] || "";
24+ onCardArtChanged: { if (item) { item.image.source = cardArt; } }
24 active: cardArt != "";
25 active: cardArt != "";
25 asynchronous: true;
26 asynchronous: true;
26 visible: status == Loader.Ready;
27 visible: status == Loader.Ready;
tests/plugins/Dash/cardcreator/5.res.cardcreator+1
@@ -20,6 +20,7 @@ Item {
20 id: artShapeLoader;
20 id: artShapeLoader;
21 objectName: "artShapeLoader";
21 objectName: "artShapeLoader";
22 readonly property string cardArt: cardData && cardData["art"] || "";
22 readonly property string cardArt: cardData && cardData["art"] || "";
23+ onCardArtChanged: { if (item) { item.image.source = cardArt; } }
23 active: cardArt != "";
24 active: cardArt != "";
24 asynchronous: false;
25 asynchronous: false;
25 visible: status == Loader.Ready;
26 visible: status == Loader.Ready;
tests/qmltests/Dash/tst_Card.qml+12
@@ -496,6 +496,18 @@ Rectangle {
496 tryCompare(art, "visible", true);
496 tryCompare(art, "visible", true);
497 compare(artImage.source, Qt.resolvedUrl("artwork/checkers.png"));
497 compare(artImage.source, Qt.resolvedUrl("artwork/checkers.png"));
498
498
499+ card.cardData["art"] = "somethingbroken";
500+ card.cardDataChanged();
501+ waitForRendering(card);
502+ tryCompare(art, "visible", true);
503+ compare(artImage.source, Qt.resolvedUrl("artwork/checkers.png"));
504+
505+ card.cardData["art"] = Qt.resolvedUrl("artwork/music-player-design.png");
506+ card.cardDataChanged();
507+ waitForRendering(card);
508+ tryCompare(art, "visible", true);
509+ compare(artImage.source, Qt.resolvedUrl("artwork/music-player-design.png"));
510+
499 card.cardData["mascot"] = "somethingbroken2";
511 card.cardData["mascot"] = "somethingbroken2";
500 card.cardDataChanged();
512 card.cardDataChanged();
501 compare(mascotImage.status, Image.Error);
513 compare(mascotImage.status, Image.Error);