02.4.2017, 17:55
Hlavní menu - změna pořadí položek a popis položek menu
Kód Hlavního menu najdete v souboru Home.xml. Komě toho jsou v tomto souboru definice dalšího menu, já mu říkám systémové - obsahuje položky pro nastavení, vypnutí, hledání, atp. a také základní definice tzv. widgetů, tzn. popisu obsahu pravé stránky, který se mění podle aktuálně zvolené položky hlavního menu i zíkladné definice záhlaví a zápatí. Ve všech případech se příslušné kódy samozřejmě také odkazují, pomocí volání tzv. includes, i do dalších souborů, kde jsou další definice. Nejčastěji do Include_Home.xml a Include.xml, ale také dalších.
Vlastní menu je definováno v control prvku typu "fixedlist", jeho kód začíná na řádku <control type="fixedlist" id="9000"> a končí odpovídajícím uzavíracím tagem </control>. Definice jednotlivých položek menu je definována ve vnořené dvojici tagů <content> a </content>. Každá položka je pak uzavřena do dvoji tagů <item> a </item>.
Změna pořadí položek menu je pak dána pořadím jejich definic. Chceme-li tedy položku posunou v menu, přesuneme celý obsah mezi <Item> a </item> /včetně těchto dvou tagů samozřejmě, na požadované místo v pořadí definic.
Jak taková defince položek pro Filmy a seriály vypadá, ukazuje následujicí kód.
Význam jednotlivých řádků ukážu na příkladu kódu položky hlavního menu pro Seriály:
<item>
Otevírací tag položky. Pozor, pro každý otevírací tag musí existovat i tag uzavírací (výjimku tvoří typy zápisu kódu, které v sobě obsahují zároveň i uzavírací značku). Pokud vunikne nesoulad mezi počtem ěotevřených a uzavřených tagů, může to vést k tomu, že se vám po startu Kodi (nebo novém načtení skinu) nic nezobrazí.
<label>$LOCALIZE[20343]</label>
Text, názvu položky. Mezi tagy <label>a /label> může být libovolný text nebo volání funkce, jak v tomto případě. $LOCALIZE[20343] znamená, že se do textu dosadí text číslo 20343 z tabulky odpovídající zvolenému jazyku. V našem případě tedy "Seriály". Stejného účinku dosáhnete, pokud byste napsali <label>Seriály</label>, ale v takovém případě by tam bylo ono slovo seriály vždycky, ať byste přepnuli Kodi do jakéhokoliv jazyka.
<onclick condition="Library.HasContent(tvshows)">ActivateWindow(Videos,videodb://tvshows/titles/,return)</onclick>
<onclick condition="!Library.HasContent(tvshows)">ActivateWindow(Videos,sources://video/,return)</onclick>
dva řádky definující akci, které se provede při stisku Enter, OK na ovladači nebo levého tlačítka myši. Řádky jsou dva, je u nich použita stejná podmínka, jednou v negaci (!), takže se provede vždy pouze jede z nich. Podmínkou je v tomto případě existence knihovny seriálů.
<property name="menu_id">$NUMBER[6000]</property>
Odkazuje na Id položky widgetů, tzn. na Id elementu, na který se "skočí" stiskem klávesys "šipka vpravo". Hodnota (v tomto případě 6000) musí být v souladu s id (viz níže).
<thumb>icons/sidemenu/tv.png</thumb>
Ikona zobrazená v položce menu.
<property name="id">tvshows</property>
Odkazuje na symbolické jméno widgetu, který se zobrazí, pokud najedeme na tuto položku. Symbolické jméno (v tomto případě tvshows) musí být v souladu s menu_id (viz výše).
<visible>!Skin.HasSetting(HomeMenuNoTVShowButton</visible>
Podmínka zobrazení položky menu, která se nastvuje v Systém > Nastavení vzhledu.
</item>
Uzavírací tag položky.
Kód Hlavního menu najdete v souboru Home.xml. Komě toho jsou v tomto souboru definice dalšího menu, já mu říkám systémové - obsahuje položky pro nastavení, vypnutí, hledání, atp. a také základní definice tzv. widgetů, tzn. popisu obsahu pravé stránky, který se mění podle aktuálně zvolené položky hlavního menu i zíkladné definice záhlaví a zápatí. Ve všech případech se příslušné kódy samozřejmě také odkazují, pomocí volání tzv. includes, i do dalších souborů, kde jsou další definice. Nejčastěji do Include_Home.xml a Include.xml, ale také dalších.
Vlastní menu je definováno v control prvku typu "fixedlist", jeho kód začíná na řádku <control type="fixedlist" id="9000"> a končí odpovídajícím uzavíracím tagem </control>. Definice jednotlivých položek menu je definována ve vnořené dvojici tagů <content> a </content>. Každá položka je pak uzavřena do dvoji tagů <item> a </item>.
Změna pořadí položek menu je pak dána pořadím jejich definic. Chceme-li tedy položku posunou v menu, přesuneme celý obsah mezi <Item> a </item> /včetně těchto dvou tagů samozřejmě, na požadované místo v pořadí definic.
Jak taková defince položek pro Filmy a seriály vypadá, ukazuje následujicí kód.
Kód:
<item>
<label>$LOCALIZE[342]</label>
<onclick condition="Library.HasContent(movies)">ActivateWindow(Videos,videodb://movies/titles/,return)</onclick>
<onclick condition="!Library.HasContent(movies)">ActivateWindow(Videos,sources://video/,return)</onclick>
<property name="menu_id">$NUMBER[5000]</property>
<thumb>icons/sidemenu/movies.png</thumb>
<property name="id">movies</property>
<visible>!Skin.HasSetting(HomeMenuNoMovieButton)</visible>
</item>
<item>
<label>$LOCALIZE[20343]</label>
<onclick condition="Library.HasContent(tvshows)">ActivateWindow(Videos,videodb://tvshows/titles/,return)</onclick>
<onclick condition="!Library.HasContent(tvshows)">ActivateWindow(Videos,sources://video/,return)</onclick>
<property name="menu_id">$NUMBER[6000]</property>
<thumb>icons/sidemenu/tv.png</thumb>
<property name="id">tvshows</property>
<visible>!Skin.HasSetting(HomeMenuNoTVShowButton</visible>
</item>
Význam jednotlivých řádků ukážu na příkladu kódu položky hlavního menu pro Seriály:
<item>
Otevírací tag položky. Pozor, pro každý otevírací tag musí existovat i tag uzavírací (výjimku tvoří typy zápisu kódu, které v sobě obsahují zároveň i uzavírací značku). Pokud vunikne nesoulad mezi počtem ěotevřených a uzavřených tagů, může to vést k tomu, že se vám po startu Kodi (nebo novém načtení skinu) nic nezobrazí.
<label>$LOCALIZE[20343]</label>
Text, názvu položky. Mezi tagy <label>a /label> může být libovolný text nebo volání funkce, jak v tomto případě. $LOCALIZE[20343] znamená, že se do textu dosadí text číslo 20343 z tabulky odpovídající zvolenému jazyku. V našem případě tedy "Seriály". Stejného účinku dosáhnete, pokud byste napsali <label>Seriály</label>, ale v takovém případě by tam bylo ono slovo seriály vždycky, ať byste přepnuli Kodi do jakéhokoliv jazyka.
<onclick condition="Library.HasContent(tvshows)">ActivateWindow(Videos,videodb://tvshows/titles/,return)</onclick>
<onclick condition="!Library.HasContent(tvshows)">ActivateWindow(Videos,sources://video/,return)</onclick>
dva řádky definující akci, které se provede při stisku Enter, OK na ovladači nebo levého tlačítka myši. Řádky jsou dva, je u nich použita stejná podmínka, jednou v negaci (!), takže se provede vždy pouze jede z nich. Podmínkou je v tomto případě existence knihovny seriálů.
<property name="menu_id">$NUMBER[6000]</property>
Odkazuje na Id položky widgetů, tzn. na Id elementu, na který se "skočí" stiskem klávesys "šipka vpravo". Hodnota (v tomto případě 6000) musí být v souladu s id (viz níže).
<thumb>icons/sidemenu/tv.png</thumb>
Ikona zobrazená v položce menu.
<property name="id">tvshows</property>
Odkazuje na symbolické jméno widgetu, který se zobrazí, pokud najedeme na tuto položku. Symbolické jméno (v tomto případě tvshows) musí být v souladu s menu_id (viz výše).
<visible>!Skin.HasSetting(HomeMenuNoTVShowButton</visible>
Podmínka zobrazení položky menu, která se nastvuje v Systém > Nastavení vzhledu.
</item>
Uzavírací tag položky.