25.5.2018, 10:01
25.5.2018, 10:01
25.5.2018, 11:48
25.5.2018, 12:12
JiRo: dobře a mám dotaz šli by tyto ikony nahradit např. ikonou vysilaní v hlavní nabídce?Ale zase nevím jak by to vypadalo....
25.5.2018, 14:10
Jinak můžeš samozřejmě používat o vlastní ikony. Sice to systém o trochu víc zatíží než zobrazení z Textures.xbt, ale není to zase tak tragické. V takovém případě musíš jejich umístění popsat způsobem, kterému bude rozumět Kodi. Tedy jak jsem pospal výše. Budeš-li tedy chtít zobrazit soubory z adresáře media v datovém adresáři Kodi, použiješ cestu special://home/media... Když budeš chtít použít adresář resources ve skinu Estuary, použiješ special://addons/skin.estuary/resources/... nebo special://skin/resources/... Ten druhý způsob vrací umístění aktuálně vybraného skinu. Takže je s tím prvním shodný pouze v případě, pokud máš vybraný adresář Estuary. Ale pokud to používáš jen v xml souborech skinu, tak je to automaticky zaručeno. Jinak obecně je "special protocol" popsán tady https://kodi.wiki/view/Special_protocol
Aby bylo řešeno vše, tak je samozřejmě možné do Textures.xbt uložit i vlastní ikony. Musíš to udělat postupně, napřed soubor dekompilovat, vložit to adresáře co potřebuješ a pak ho zase kompilovat. Ale podle mne to pro pár ikon není třeba, ty si klidně ulož někde na disku a ve skinu na ně udělej výše uvedený odkaz přes special://...
28.5.2018, 16:25
Hodně by mi pomohlo, kdybys sem třeba nahodil nějaký tvůj home.xml s touto/či i dalšími úpravami, podle nějž bych byl schopný se zorientovat. Myslíš, že bys byl ochotný?
30.5.2018, 12:03
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.
09.6.2018, 10:17
JiRo: tak Kolekce SC korektně s tímto WidgetWallPoster funguje....prozraď jak to udělat bez toho postraního panelu a třeba 3 řádky po 5ti ?Chtěl bych to použít jinam....
*vyřešeno*
*vyřešeno*
10.6.2018, 10:33
JiRo: chtěl bych si udělat favorites2 jak definuji cestu jinak než favourites:// v home.xml?*<content>favourites://</content>*
special://profile/favourites2.xml
special://userdata/favourites2.xml
tyto jsem zkoušel a nejdou.....
Děkuji
special://profile/favourites2.xml
special://userdata/favourites2.xml
tyto jsem zkoušel a nejdou.....
Děkuji
10.6.2018, 19:24
Ale myslím že existuje doplněk, Super Favourites, který by ti mohl pomoci. Měl by být v hlavním repozitáři Kodi.
13.6.2018, 7:00
JiRo: tak mám zpozorováno u vertikalního widgetu,že...
Mám dva řádky po pěti widgetech....
Pokud sjedu z levého menu na horní řádek widgetu je to OK tam i zpět..
Ale když sjedu z druhého řádku widgetu do levého menu a zpět, skočí to přesně o 25 widgetů směrem nahoru a jsem na první řádce místo aby si to pamatovalo že jsem byl na druhé řádce widgetu....
Pak bych měl dotaz jen kosmetický....Nemám u vertikálního typu tzv. Fade in/Fade Out jako je třeba u oblíbených nebo horizontálního widgetu.....
edit: pohrál jsem si s tagem animation
Mám dva řádky po pěti widgetech....
Pokud sjedu z levého menu na horní řádek widgetu je to OK tam i zpět..
Ale když sjedu z druhého řádku widgetu do levého menu a zpět, skočí to přesně o 25 widgetů směrem nahoru a jsem na první řádce místo aby si to pamatovalo že jsem byl na druhé řádce widgetu....
Pak bych měl dotaz jen kosmetický....Nemám u vertikálního typu tzv. Fade in/Fade Out jako je třeba u oblíbených nebo horizontálního widgetu.....
edit: pohrál jsem si s tagem animation
13.6.2018, 9:32
Estuary má jednu vychytávku, že si pamatuje pozici v aktuálně zobrazené části widgetu, takže když pak přejdeš o widget nahoru neb dolů, zůstane vybraná pozice stejná. To funguje v případě, že jde o widgety stejného typu a rozměru jednotlivých elementů. Přestane to fungovat, pokud například šířku elementu zmenšíš (jako například u widgetu s písmeny abecedy, které jsem použil u Stream-Cinema nebo iVysílání) nebo zvětšíš nebo pokud zvolíš úplně jiný typ rozložení (jako ve vertikláním widgetu).
Pokdu chceš vertikální widget používat, musíš se tedy této funkce zbavit, což znamená:
- Vertikální widget musí být vždy použit jako jediný pro danou položku hlavního menu.
- Je třeba z definice widgetu vyhodit některé Includes (z hlavy nedám dohromady, které to jsou).
13.6.2018, 14:12
JiRo: já to dohromady nedám....mojí paní a dítěti jsem to vysvětlil, že je tam tato chyba a rozumí tomu....Ano používám ho dle bodu 1
13.6.2018, 15:03
16.6.2018, 20:15
JiRo: měl bys chvilku kouknout se na ten widget?
17.6.2018, 1:02
Žádné include, jak jsem si původně myslel, se vyhazovat nebude. Celé vyhodit nejde, protože kromě těch míst, co je třeba zrušit, jsou v něm důležité věci a přepisovat ho do hlavního kódu by zase nebylo univerzální.
Edituje se Includes_home.xml a přidá se do něj další varianta už existujícího include. Podle původního WidgetListCommons se vytvoří nové WidgetWallCommons. Rozdíl mezi nimi je nepatrný, v podstatě se pouze odstraní "vnucený focus", který u těch horizontálních widgetů zajišťuje, že když skočíš o widget nahoru nebo dolů, zůstáváš stále na stejné horizontální pozici. Tady to potřeba není, protože nahoře ani dole žádný další widget není.
Takže si najdi WidgetListCommon a za něj vlož nový WidgetWallCommon:
Kód:
<include name="WidgetWallCommon"> <!-- Easy/SC+ -->
<scrolltime tween="cubic" easing="out">500</scrolltime>
<orientation>vertical</orientation>
<onleft>9000</onleft>
<onright>noop</onright>
<onup>20000</onup>
<ondown>20001</ondown>
<onunfocus>SetProperty(listposition,$INFO[Container($PARAM[list_id]).Position],home)</onunfocus>
<onback>PageUp</onback>
<onback>PageUp</onback>
<onback>PageUp</onback>
<onback>PageUp</onback>
<preloaditems>2</preloaditems>
</include>
No a v příslušném vertikální widgetu nahraď volání:
Kód:
<include content="WidgetListCommon">
<param name="list_id" value="$PARAM[list_id]"/>
</include>
Kód:
<include content="WidgetWallCommon">
<param name="list_id" value="$PARAM[list_id]"/>
</include>
17.6.2018, 2:38
JiRo: Super funkční, velká pochvala jsi guru
17.6.2018, 8:18
JiRo: takto vytvořený vertikální widget je alá "poster", šel by z toho udělat i alá "episodes"???
vyřešeno: nahradit "InfoWallMovieLayout" za "InfoWallEpisodeLayout"
vyřešeno: nahradit "InfoWallMovieLayout" za "InfoWallEpisodeLayout"
17.6.2018, 11:08
17.6.2018, 11:25
JiRo: ještě dotaz. Když chci udělat vert. widget a v něm mít jen vlastní odkazy (doplňky, videa) to udělám jen přes Super Favorites a nebo to jde nějak přes Smart Playlist?