Wie müsste denn nun die Texture Zeile lauten um statt dem einen PNG die individuellen Icons anzuzeigen (aus der Texture Datei)?
Hey,
Der Start wäre jetzt erstmal folgene Dinge Abzuklären:
aspecratio
- stretch führt dazu das alle deine Grafiken auf volle Breite und Höhe "gestreckt" werden.
Egal welches Seitenverhältnis sie haben oder ob es passt. Alles wird in dieser Größe dargestellt. - Will man verschiedene Seitenverhältnisse Darstellen wäre keep die richtige Wahl.
Dort wird das Verhältnis beibehalten, alles wird in der Breite auf deine Texturebreite vergrößert.
Mit aligny="top, center oder bottom" und align="left, center oder right" kann man bestimmen wo die Grafik ausgerichtet wird:
Eine Rechteckige Flagge und ein Quadratisches Genre würde mit <aspectratio align="center" aligny="bottom">keep</aspecratio> immer im richtigen Seitenverhältnis zentriert, unten ausgerichtet werden. Das gilt natürlich nur für keep da stretch ja alles streckt und scale proportional füllt und "überstehende" Teile ausblendet.
Das wäre erstmal die erste Entscheidung die man treffen muss.
fallbacks
Grafiken die aus Pfaden kommen fallen nicht wie das DB Artwork $INFO[ListItem.Icon] auf ein DefaultVideos.png usw. zurück. Verwendet man ListItem.Icon kommt automatisch das "passende blaue Icon".
Will man das nun bei deinen Pfaden, nutzt man die Möglichkeit in der texture ein fallback anzugeben: <texture fallback="Bilddatei im media Ordner wenn es ein Verzeichnis ist beginnend mit Verzeichnisname z.B. extras/xxx.png>.
Das Problem hierbei: es kann nur direkt eine Grafik angegeben werden - Variablen funktionieren nicht. Hat man sich also entschieden alle 3 "Arten" in einem Image control darzustellen weil gleiche aspect ratio, muss man auch mit einem Fallback leben wenn eine fehlt.
Das muss man vorher entscheiden, und es kommt darauf an wie "gut" die DB stimmt. Hat man mal ein Science-fiction und ein Sciene fiction oder Sci-fi, käme nichts wenn die Grafik nicht Genau so heißt. Je nachdem wie Empfindlich man dabei ist, wenn soweiso keine oder selten fallbacks kommen kann man sich darauf einlassen..
Je nachdem wie man sich jetzt entschieden hat:
- Sind aspect ratio identisch und ein fallback in Ordnung kann man die 3 Pfade in einem Image mit einer Variablen regeln.
<variable name="Category.Art">
<value condition="Container.Content(genres)">$INFO[ListItem.Label,Bilddatei im media Ordner wenn es ein Verzeichnis ist beginnend mit Verzeichnisname z.B.extras/,.png]</value>
<value condition="Container.Content(years)">xx</value>
<value condition="Container.Content(countries)">xx</value>
</variable>
Der Aufbau ist immer derselbe:
Label = Text in der Liste + erstes Komma = Text davor + zweites Komma Text danach
Ergäbe ein Verzeichnis extras im mediaordner + Genre + png. Also z.B. extras/Action.png. usw..
Die Variable wäre dann mit $VAR[Category.Art] deine texture.
Falls man verschiedene apect ratios braucht, unterschiedliche Imagegrößen oder fallbacks die unterschiedlich sind für Genre und Jahre:
Wäre die texture direkt anzugeben und man braucht 3 image controls im Viewcode:
<texture fallback="">$INFO[ListItem.Label,Bilddatei im media Ordner wenn es ein Verzeichnis ist beginnend mit Verzeichnisname z.B.extras/,.png]</texture>
und als <visible>Container.Content(genres)</visible> dasselbe wie im value der Variablen.
Dann ist jeweils nur eines der drei sichtbar, mit dem Pfad direkt drin und wenn "nichts dabei rauskommt" fällt es auf dein Fallback zurück.
Klingt jetzt schwere als es ist, aber Versuchs mal damit soweit.
Grüße