07.6.2018, 20:48
Vertikální widget
Jde v podstatě o velmi jednoduchou úpravu základního widgetu typu Poster, která umožňuje realizovat widgety s vertikálním posunem. pricncipem řešení je definovat "okno", ve kterém se pohybuje klasický widget typu Poster (include WidgetListPoster) tak aby na šířku i výšku umožňovalo zobrazit více než jeden řádek posterů.
Edituje se Include_home.xml, a přidá se celá definice include, kterou jsem nazval WidgetWallPoster:
Vhodným nastavením hodnoty <height>1000</height>, která určuje výšku okna, ve které se widgety zobrazují a rozměru jednoho pole pro zobrazení widhetu, <itemlayout width="310" height="486">, se dá "nastavit" zobrazovaná plocha a její odstupy od předchozího a následujícího widgetu.
V parametru include je použita proměnná skinu, $INFO[Skin.String(widget_limit)], ve které je uložen počet položek widgetu. Pokud si proměnnou v nastavení skinu nechcete definovat, místo celého uvedeného řetězce vložte číslo, které udává počet položek widgetu.
Příklad volání include z Home stránky je zde:
Při volání widgetu v podstatě stačí nahradit původní název volání include WidgetListPoster novým WidgetWallPoster a nemusí se nic dalšího měnit. Z řádkového widgetu se rázem stane vertikální widget. Jen je třeba si, jak jsem psal výše, pohrát si s jeho rozměry. Uvedené příklady jsou kopírované ze skinu Stream-Cinema, takže v nich jsou podmínky pro zobrazení tohoto widgetu ve skinu. Ty je třeba před použitím ve vašem skinu odstranit. Uvedený příklad je použit při zobrazení widgetu Sledovaných filmů addon Stream-Cinema.
Jde v podstatě o velmi jednoduchou úpravu základního widgetu typu Poster, která umožňuje realizovat widgety s vertikálním posunem. pricncipem řešení je definovat "okno", ve kterém se pohybuje klasický widget typu Poster (include WidgetListPoster) tak aby na šířku i výšku umožňovalo zobrazit více než jeden řádek posterů.
Edituje se Include_home.xml, a přidá se celá definice include, kterou jsem nazval WidgetWallPoster:
Kód:
<include name="WidgetWallPoster"> <!-- Easy/SC+ -->
<param name="item_limit">$INFO[Skin.String(widget_limit)]</param> <!-- Easy/SC+ -->
<param name="info">true</param> <!-- Easy/SC+ -->
<param name="bold">true</param> <!-- Easy/SC+ -->
<param name="year">true</param> <!-- Easy/SC+ -->
<definition>
<include content="CategoryLabel">
<param name="label">$PARAM[widget_header]</param>
<param name="list_id" value="$PARAM[list_id]"/>
<param name="info" value="$PARAM[info]"/> <!-- Easy/SC+ -->
<param name="bold" value="$PARAM[bold]"/> <!-- Easy/SC+ -->
<param name="year" value="$PARAM[year]"/> <!-- Easy/SC+ -->
</include>
<include content="BusyListSpinner">
<param name="list_id" value="$PARAM[list_id]"/>
<param name="posy" value="250"/>
</include>
<control type="panel" id="$PARAM[list_id]">
<left>0</left>
<top>115</top>
<visible>Integer.IsGreater(Container($PARAM[list_id]).NumItems,0) | Container($PARAM[list_id]).IsUpdating</visible>
<right>0</right>
<height>1000</height>
<orientation>vertical</orientation>
<include content="WidgetListCommon">
<param name="list_id" value="$PARAM[list_id]"/>
</include>
<itemlayout width="310" height="486">
<visible>!String.IsEqual(Container($PARAM[list_id]).ListItem.Title,next)</visible>
<control type="group">
<left>68</left>
<top>10</top>
<include content="InfoWallMovieLayout">
<param name="focused" value="false" />
</include>
</control>
</itemlayout>
<focusedlayout width="310" height="486">
<visible>!String.IsEqual(Container($PARAM[list_id]).ListItem.Title,next)</visible>
<control type="group">
¨ <depth>DepthContentPopout</depth>
<left>68</left>
<top>10</top>
<animation type="Focus">
<effect type="zoom" start="100" end="110" time="200" tween="sine" easing="inout" center="230,130" />
</animation>
<animation type="Unfocus">
<effect type="zoom" start="110" end="100" time="200" tween="sine" easing="inout" center="230,130" />
</animation>
<include content="InfoWallMovieLayout">
<param name="focused" value="true" />
</include>
</control>
</focusedlayout>
<content sortby="$PARAM[sortby]" sortorder="$PARAM[sortorder]" target="$PARAM[widget_target]" limit="$PARAM[item_limit]">$PARAM[content_path]</content> <!-- Steram-Cinema+ -->
</control>
</definition>
</include>
Vhodným nastavením hodnoty <height>1000</height>, která určuje výšku okna, ve které se widgety zobrazují a rozměru jednoho pole pro zobrazení widhetu, <itemlayout width="310" height="486">, se dá "nastavit" zobrazovaná plocha a její odstupy od předchozího a následujícího widgetu.
V parametru include je použita proměnná skinu, $INFO[Skin.String(widget_limit)], ve které je uložen počet položek widgetu. Pokud si proměnnou v nastavení skinu nechcete definovat, místo celého uvedeného řetězce vložte číslo, které udává počet položek widgetu.
Příklad volání include z Home stránky je zde:
Kód:
<include content="WidgetWallPoster" condition="Skin.HasSetting(SCMoviesLastPlayedWidget) + !Skin.HasSetting(SCMoviesLastPlayedWidgetTrakt) + Skin.HasSetting(SCMovie) + !Skin.HasSetting(HomeMenuNoStreamCinemaButton) + System.HasAddon(plugin.video.stream-cinema)">
<param name="content_path" value="plugin://plugin.video.stream-cinema/?action=6c617374&id=6c6173746d&title=243330393237"/>
<param name="widget_header" value="Poslední sledované filmy"/>
<param name="widget_target" value="movies"/>
<param name="list_id" value="41100"/>
<param name="year" value="false"/>
</include>
Při volání widgetu v podstatě stačí nahradit původní název volání include WidgetListPoster novým WidgetWallPoster a nemusí se nic dalšího měnit. Z řádkového widgetu se rázem stane vertikální widget. Jen je třeba si, jak jsem psal výše, pohrát si s jeho rozměry. Uvedené příklady jsou kopírované ze skinu Stream-Cinema, takže v nich jsou podmínky pro zobrazení tohoto widgetu ve skinu. Ty je třeba před použitím ve vašem skinu odstranit. Uvedený příklad je použit při zobrazení widgetu Sledovaných filmů addon Stream-Cinema.