• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 10 Hlas(ů) - 2.6 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Estuary Easy
@otava5: oni su "spakovane" v jedon subore textures, alebo tak nejako. Ak ich chces pouzit, tak jednoducho napis nazov suboru a ona sa pouzije ak existuje. napriklad: "defaultplaylist.png" alebo "icons/settings.png"
Citajte jak se spravne ptat!
Tvorca doplnku 
Stream Cinema CS & SK.
 
Citovat
@otava Tyto ikony jsou zabalené v souboru textur .../home/addons/skin.estuary.easy/media/Textures.xbt.
 
Citovat
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....
 
Citovat
@otava5 Samozřejmě, že by šly. Ostatně i ty ikony v hlavní nabídce (myslíš tím hlavní menu na Home screen, že?) jsou z tohoto souboru. Všechno, co je ve skinu použito mezi tagy <texture> </texture> v control image, pokud u toho není uveden zdroj ve formě "special protocol" (např. special://home/...), tak si Kodi hledá v tomto souboru. Bohužel, struktura tohoto souboru není běžně viditelná. Musíš si soubor rozbalit a uložit, abys tu strukturu i její obsah viděl. To, jak to uděláš najdeš zde https://kodi.wiki/view/TextureTool.

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://...
 
Citovat
@JiRo: Ahoj, začal jsem si maličko pohrávat s implementováním tebou uváděných modifikací skinu, ale jsem z toho celkem jalovej :) Konkrétně mi jde o Widget Online Video News, působí to jednoduše a jasně, nicméně netuším, do které části kódu bych měl ten tvůj umístit a jak "na to odkázat z příslušné položky hlavního menu" - jsem mimo :)
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ý?
Nvidia Shield TV - Kodi Nexus
LG OLED65B7A 
 
Citovat
@Rene.hav Nejlepší bude, když si nainstaluješ http://www.xbmc-kodi.cz/prispevek-estuary-stream-cinema, tam je dost z těch těch úprav použito. Konkrétně, co se týče Video Online News, tak inspiraci hledej u widgetu pro iVysílání.
 
Citovat
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:
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&amp;id=6c6173746d&amp;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.
 
Citovat
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*
 
Citovat
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
 
Citovat
@otava5 Obávám se, že favourites2 neuděláš. Kodi bere favourites jako special protocol, tzn. že k datům přistupuje způsobem, který je popsán interně  a jakmile se objeví favourites:// sahá rovnou na soubor v userdata.

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.
 
Citovat
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
 
Citovat
@otava5 No, a to jsou právě ty problémy, kvůli kterým se mi do tohoto widgetu nechtělo.

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á:
  1. Vertikální widget musí být vždy použit jako jediný pro danou položku hlavního menu.
  2. Je třeba z definice widgetu vyhodit některé Includes (z hlavy nedám dohromady, které to jsou).
 
Citovat
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 1
 
Citovat
@otava5 Až budu mít chvíli, plánuji, že se na to podívám. Jsem ale až do víkendu mimo Kodi.
 
Citovat
JiRo: měl bys chvilku kouknout se na ten widget?
 
Citovat
@otava5 Podíval jsem se na ten vertikální widget. Bude  to chtít ještě učesat, tak zatím jen stručné info a popis.

Žá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í. 1

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>
za:
Kód:
                <include content="WidgetWallCommon">
                    <param name="list_id" value="$PARAM[list_id]"/>
                </include>
 
Citovat
JiRo: Super funkční, velká pochvala jsi guru 1
 
Citovat
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"
 
Citovat
@otava5 No, já bych postupoval obráceně, spíš bych vyrobil vertikální widget pro epizody z normálního widgetu pro epizody, ale ono je to nakonec asi jedno. Ony si jsou ty poster a episode widgety hodně podobné.
 
Citovat
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?
 
Citovat
  


Přejít na fórum:


Prochází: 3 host(ů)