• 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
Ty se nevzdáváš, viď. 6 Něco takového jako v tvém https://www.xbmc-kodi.cz/prispevek-estua...#pid114176 je zřejmě ve skinu Estuary Modv2. Narazil jsem na to náhodou při pomoci známému, který ten skin nainstaloval na Valentýna a měl to ten den samé růžové srdíčko.

Ovšem ten následný počin může být pro mnoho uživatelů zajímavý. Souhlasím s tím, že možnosti nastavení některých modů je zbytečně vyumělkované.
X96max plus 4/32 + CE 21 + skin Confluence SCC / TV Samsung QE55Q6FNA
X96max plus 4/32 + CE 20.5 + skin Confluence SCC

AVR Denon 1600H / Dali Spektor 5.1
Win10pro + Kodi19.5
NAS Synology 215j 3TB Raid1
Router Turris 1.1
 
Citovat
@JiRo: Ahoj vedel by si mi poradit ako spravím v skine ze ked ho prvý krat naištalujem tak budem mat pozapinane len položky ktoré chcem mat zapnute
 
Citovat
Ahoj, prosím o radu.
Nevíte někdo, kde v Estuary xml se skrývá možnost nastavit čas, kdy má jaký prvek zmizet, jak dlouho má zůstat zobrazený?
Jde mi konkrétně o tyto dvě věci - viz otisk.
Které se objeví při časovém posunu.
Prvek Seeking a prvek uprostřed - dva časy s lomítkem.
Každý si mizí jinak, jak chce - tak třeba jim to mizení sjednotit…

Sedím nad tím už nějaký den, začal jsem logikou, pak pokusy omyly, pak www hledání. A nic.
Vložení
System.IdleTime(time)
vypadalo nadějně, ale stejně nic.

Tak kdyby někoho něco napadlo…
díky moc

   
 
Citovat
@hardo12 No, v podstatě máš dvě možnosti. První je, definovat ty default zapnuté stavy v negaci. Ale už o tom psal i @jkmh: na discordu. Ale tím si znemožníš jednoduchý návrat do default nastavení a také pro nějakou budoucí verzi komplikuješ změnu v default nastavení.

Lepší metoda je, definovat semafor, který při prvním spuštění skinu, když nebude jeho hodnota ještě definovaná (tedy bude mít hodnotu false) provede podmíněně řadu <onload>Skin.SetBool(...)</onload> u těch nastavení, které chceš mít ve stavu true. A na konci těch default nastavení změnit stav toho semaforu.
 
Citovat
Tak po čase jsme se opět vrátil k opakovaně upravované stránce zobrazení kanálů. Hlavně proto, že zobrazení v rozměru plochy 2560x1440 nabízí přeci jen větší možnosti, takže se mi zobrazení kanálů ve viewtype Banner nakonec na stránku podařilo "nacpat" v etřech sloupcích. To "nacpat" je na místě, protože výhám, jestli takové zobrazení mů vůbec smysl.

Pro textovou část používám vlastní font:
 
Kód:
        <font> <!-- EASY+ -->
            <name>font_flagL</name>
            <filename>NotoSans-Regular.ttf</filename>
            <size>16</size>
            <style>lighten</style>
        </font>

Definice je v MyPVRChannels.xml, ve formě panelu s id=54:
 
Kód:
                <control type="panel" id="54"> <!-- EASY+ -->
                    <left>-40</left>
                    <top>110</top>
                    <right>0</right>
                    <bottom>0</bottom>
                    <onleft>9000</onleft>
                    <onright>74</onright>
                    <onup>52</onup>
                    <ondown>52</ondown>
                    <pagecontrol>74</pagecontrol>
                    <itemlayout width="835" height="256">
                        <control type="group">
                            <left>70</left>
                            <control type="image">
                                <width>830</width>
                                <height>255</height>
                                <texture>dialogs/dialog-bg-nobo.png</texture>
                                <bordertexture border="21">overlays/shadow.png</bordertexture>
                                <bordersize>20</bordersize>
                            </control>
                            <control type="image">
                                <top>32</top>
                                <left>18</left>
                                <width>184</width>
                                <height>150</height>
                                <texture fallback="icons/sidemenu/radio.png">$INFO[ListItem.Icon]</texture>
                                <aspectratio>keep</aspectratio>
                            </control>
                            <control type="label">
                                <left>32</left>
                                <top>178</top>
                                <width>164</width>
                                <height>52</height>
                                <wrapmultiline>true</wrapmultiline>
                                <label>$INFO[ListItem.ChannelNumberLabel,[B],[/B]]$INFO[ListItem.Label, [B],[/B]]</label>
                                <font>font10</font>
                                <shadowcolor>text_shadow</shadowcolor>
                                <align>left</align>
                                <aligny>top</aligny>
                            </control>
                            <control type="label">
                                <left>32</left>
                                <top>202</top>
                                <width>760</width>
                                <height>49</height>
                                <!-- <label>$INFO[ListItem.Title]</label> -->
                                <label>$INFO[ListItem.Title] [I][COLOR grey]$VAR[SeasonEpisodeLabel][/COLOR]$INFO[ListItem.EpisodeName,[COLOR white],[/COLOR]][/I]</label>
                                <font>font10</font>
                                <shadowcolor>text_shadow</shadowcolor>
                                <align>left</align>
                                <aligny>top</aligny>
                            </control>
                            <control type="textbox">
                                <left>200</left>
                                <top>28</top>
                                <width>600</width>
                                <height>180</height>
                                <align>justify</align>
                                <label>$INFO[ListItem.Date,[COLOR grey]$LOCALIZE[552]:[/COLOR] , ]$INFO[ListItem.EndTime,- ,  ]$INFO[ListItem.Duration,[COLOR grey]$LOCALIZE[180]:[/COLOR] ,  ][CR]$VAR[RecordingSizeLabel]$VAR[PremieredLabel]$INFO[ListItem.Rating,[COLOR grey]$LOCALIZE[563]:[/COLOR] ]$VAR[ExpirationDateTimeLabel]$INFO[ListItem.Genre,[COLOR grey]$LOCALIZE[515]:[/COLOR] ,[CR]]$INFO[ListItem.Writer,[COLOR grey]$LOCALIZE[20417]:[/COLOR] ,[CR]]$INFO[ListItem.Director,[COLOR grey]$LOCALIZE[20339]:[/COLOR] ,[CR]]$INFO[ListItem.Cast,[COLOR grey]$LOCALIZE[206]:[/COLOR] ,[CR]]$INFO[ListItem.Plot]</label>
                                <font>font_flagL</font>
                                <autoscroll time="3000" delay="4000" repeat="5000">Skin.HasSetting(AutoScroll)</autoscroll>
                            </control>
                            <control type="image">
                                <!-- <left>195</left> -->
                                <right>-40</right>
                                <top>23</top>
                                <width>24</width>
                                <height>24</height>
                                <texture>$VAR[WallWatchedIconVar]</texture>
                            </control>
                            <control type="progress">
                                <left>20</left>
                                <top>215</top>
                                <width>800</width>
                                <height>1</height>
                                <texturebg></texturebg>
                                <midtexture colordiffuse="button_focus" border="3">progress/texturebg_alt_white.png</midtexture>
                                <info>ListItem.Progress</info>
                                <visible>ListItem.HasEpg</visible>
                            </control>
                        </control>
                    </itemlayout>
                    <focusedlayout width="835" height="256">
                        <control type="group">
                            <depth>DepthContentPopout</depth>
                            <left>70</left>
                            <animation type="Focus">
                                <effect type="zoom" start="100" end="105" time="200" tween="sine" easing="inout" center="415,100" />
                            </animation>
                            <animation type="Unfocus">
                                <effect type="zoom" start="105" end="100" time="200" tween="sine" easing="inout" center="415,100" />
                            </animation>
                            <control type="image">
                                <width>830</width>
                                <height>255</height>
                                <texture>dialogs/dialog-bg-nobo.png</texture>
                                <bordertexture border="21">overlays/shadow.png</bordertexture>
                                <bordersize>20</bordersize>
                            </control>
                            <control type="image">
                                <width>830</width>
                                <height>255</height>
                                <texture colordiffuse="button_focus">colors/grey.png</texture>
                                <bordersize>20</bordersize>
                                <include>Animation_FocusTextureFade</include>
                            </control>
                            <control type="image">
                                <top>32</top>
                                <left>18</left>
                                <width>184</width>
                                <height>150</height>
                                <texture fallback="icons/sidemenu/radio.png">$INFO[ListItem.Icon]</texture>
                                <aspectratio>keep</aspectratio>
                            </control>
                            <control type="label">
                                <left>32</left>
                                <top>178</top>
                                <width>164</width>
                                <height>52</height>
                                <wrapmultiline>true</wrapmultiline>
                                <label>$INFO[ListItem.ChannelNumberLabel,[B],[/B]]$INFO[ListItem.Label, [B],[/B]]</label>
                                <font>font10</font>
                                <shadowcolor>text_shadow</shadowcolor>
                                <align>left</align>
                                <aligny>top</aligny>
                            </control>
                            <control type="label">
                                <left>32</left>
                                <top>202</top>
                                <width>760</width>
                                <height>49</height>
                                <!-- <label>$INFO[ListItem.Title]</label> -->
                                <label>$INFO[ListItem.Title] [I][COLOR grey]$VAR[SeasonEpisodeLabel][/COLOR]$INFO[ListItem.EpisodeName,[COLOR white],[/COLOR]][/I]</label>
                                <font>font10</font>
                                <shadowcolor>text_shadow</shadowcolor>
                                <align>left</align>
                                <aligny>top</aligny>
                            </control>
                            <control type="textbox">
                                <left>200</left>
                                <top>28</top>
                                <width>600</width>
                                <height>180</height>
                                <align>justify</align>
                                <label>$INFO[ListItem.Date,[COLOR grey]$LOCALIZE[552]:[/COLOR] , ]$INFO[ListItem.EndTime,- ,  ]$INFO[ListItem.Duration,[COLOR grey]$LOCALIZE[180]:[/COLOR] ,  ][CR]$VAR[RecordingSizeLabel]$VAR[PremieredLabel]$INFO[ListItem.Rating,[COLOR grey]$LOCALIZE[563]:[/COLOR] ]$VAR[ExpirationDateTimeLabel]$INFO[ListItem.Genre,[COLOR grey]$LOCALIZE[515]:[/COLOR] ,[CR]]$INFO[ListItem.Writer,[COLOR grey]$LOCALIZE[20417]:[/COLOR] ,[CR]]$INFO[ListItem.Director,[COLOR grey]$LOCALIZE[20339]:[/COLOR] ,[CR]]$INFO[ListItem.Cast,[COLOR grey]$LOCALIZE[206]:[/COLOR] ,[CR]]$INFO[ListItem.Plot]</label>
                                <font>font_flagL</font>
                                <autoscroll time="3000" delay="4000" repeat="5000">Skin.HasSetting(AutoScroll)</autoscroll>
                            </control>
                            <control type="image">
                                <right>-10</right>
                                <top>23</top>
                                <width>24</width>
                                <height>24</height>
                                <texture>$VAR[WallWatchedIconVar]</texture>
                            </control>
                            <control type="progress">
                                <left>20</left>
                                <top>215</top>
                                <width>800</width>
                                <height>1</height>
                                <texturebg></texturebg>
                                <midtexture colordiffuse="button_focus" border="3">progress/texturebg_alt_white.png</midtexture>
                                <info>ListItem.Progress</info>
                                <visible>ListItem.HasEpg</visible>
                            </control>
                        </control>
                    </focusedlayout>
                </control>
            </control>

pro úpravu side panelu je ale třeba také sáhnout do Includes_MediaMenu.xml a v definici include PVRSideBar nahradit radiobutton s id=6060 button (pokud už ale používáte zobrazení Zeď, tak to už dělat nemusíte):
 
Kód:
                <!-- <control type="radiobutton" id="6060"> -->
                    <!-- <include>MediaMenuItemsCommon</include> -->
                    <!-- <label>$LOCALIZE[31127]</label> -->
                    <!-- <selected>Control.IsVisible(50)</selected> -->
                    <!-- <onclick>Container.NextViewMode</onclick> -->
                    <!-- <visible>Window.IsActive(MyPVRChannels.xml)</visible> -->
                <!-- </control> -->
                <control type="button" id="6060"> <!-- EASY + -->
                    <include>MediaMenuItemsCommon</include>
                    <label>$LOCALIZE[24140]</label>
                    <label2>[B]$VAR[MyPVRChannelsViewVar][/B]</label2>
                    <onclick>Container.NextViewMode</onclick>
                    <visible>Window.IsActive(MyPVRChannels.xml)</visible>
                </control>

no a poslední úprava s etýká Variables.xml, kde byste měli doplnit definici proměnné MyPVRChannelsViewVar (opět, pokud již používáte zeď, takbyste tam tu proměnnou mít měli):
 
Kód:
    <variable name="MyPVRChannelsViewVar"> <!-- SideBar PVRChannel for advanced type of view selection (added wall type) -->
        <value condition="Control.IsVisible(50)">$LOCALIZE[536]</value>
        <value condition="Control.IsVisible(51)">$LOCALIZE[535]</value>
        <value condition="Control.IsVisible(52)">$LOCALIZE[31102]</value>
        <value condition="Control.IsVisible(53)">$LOCALIZE[31102]</value>
        <value condition="Control.IsVisible(54)">$LOCALIZE[20020]</value>
    </variable>

No a vypadá to pak nějak takto:
   

Berte na vědomí, že je to první pokus, který jsme slepil dnes ráno při snídani. Momentálně předělávám celou koncepci Easy úprav a tak jsem se k tomu dostal při přesouvání upraveného kódu víceméně náhodou. Výsledek také není bůhví jaký, čitelnost focused položky je mizerná, budu se nad tím ještě muset zamyslet. Ona snaha, nacpat do malého porstoru co nejvíce informací také nemusí být úplně tou správnou cestou...

Doporučení skinnerům (1)...

Mé úpravy skinů jsou spíše náhodné než koncepční a nemám ambice mít vlastní skin. Jde mi spíše o drobné úpravy a vylepšení, případně doplnění zajímavých "must to have" funkcí. Jedinou z výjimek z tohto pravidla bylo vytvoření "velké modifikace" Estuary Stream Cinema, které ale poměrně brzy (a po různých peripetiích) vzalo za své. Nyní se k tomu nenapádně vracím. Je to jednak v souvislosti s tím, že si chci ve vlastní modifikaci (které říkám Easy) při přechodu na Nexus udělat pořádek, a pak také to, že jsem se nakonec nechal přemluvit a připravuji velmi jednoduchý skin pro Stream Cinema Cinema. Pokud se mi to podaří, uložím ho do zdejšího repozitáře a budu se ho snažit udržovat...  4 Snad mi to vydrží...

Práce tedy jak na kostele a abych si ji ulehčil a do budocna údržbu skinu co nejvíce zjednodušil, rozhodl jsme se, že do toho hrábnu pořádně. Dospěl jsme tak nakonec k filosofii řešení takové jednoduché modifikace, u které předpokládám delší dobu trvání, která je myslím pro amatérské skinnery, ke kterým se řadím i já, podle mne zajímavá. Dá se shrnout do několika jednoduchých zásad:
  1. Minimalizovat rozsah kódu, který vkládám/měním v originálních souborech skinu, ze kterého modifikace vychází. Samozřejmě kromě výjimek, u kterých to z logiky věci a toho, jak jsou změny provázané v původním kódu. Jinak řečeno, pokud chci něco do kódu doplnit a pokud to jenom trochu jde a má t v dané funkci logiku, vytvořím definici include v nějakém vhodně pojmenovaném souboru, např. Easy_*.xml a z originálního souboru to include "zavolám".
  2. Vytvořit si jednoduchý systém identifikace nově vytvořených definičních souborů - já jsem si všechny takové soubory opatřil prefixem Easy_. Jsou v adresáři pěkně pohormadě, mají označení, které je jednozančně přiřazuje k funkcím, které se v nich řeší. A při přechodu na novou major verzi je pak velmi jendoduché a rychlé nový skin modifikovat.
  3. Definiční soubory orientovat "objektově" (to je samozřejmě eufemismus), lepší by bylo označit to "funkčně". Mám tím namysli, aby všechno to, co se týká dané úpravy v dané funkci bylo v jednom souboru, včetně všech includes, definic animationsconstant, expression, variables. Tedy ne tak, jak je to například v originální Estuary, kde je např. jeden obří soubor Variables.xml a tak je vše...
  4. Všechny úpravy v originálních souborech komentovat. Já používám komentáře označující změnu v kódu <!-- EASY* --> nebo novou část kódu <!-- EASY+ -->.
  5. Vlastní obrazové soubory, které by se potenciálně mohly stát součástí Textures.xbt, ukládat strukturovaně a právě podle zásad, které v Textures používá originální skin. Umožní to, pokud se pro to rozhodnete, po čase ty nové soubory do textues jendoduše vložit a centrálně pak (ve všech xml souborech) provést změnu v adresaci těchto souborů. Já to např. dělám tak, že takové soubory ukládám do adresáře ve skinu a v definičních souborech je adresuji jako special://skin/extras/textures/... No a pokud se jednou za čas rozhodnu o vložení těchto souborů do Textures.xbt, tak v Notepad++ projedu všechny xml a text special://skin/extras/textures/ prostě vyhodím.
  6. Po zkušenostech z úprav skinu pro použití v jiném, než nativním rozměru FHD doporučuji na klíčových místech maximalizovat použití rozměrů a pozic relativně (v % nebo kombnací <left> a <right> místo <left> a <width>) a tam, kde to nejde, použít pro definici absolutní pozice definici constant. Estuary je sice flexibilní skin, takže já už ho na obrazovkách, které to umožní, zobrazuji ve 2560x1440, ale přeci jen je v jeho definicích několik děr, které je třeba explicitně ošetřit. Tak proč si do budoucna při vlastních úpravách nekomplikovat situaci ještě více, než je třeba...
Jak teď tedy vypadá můj xml adreář skinu:
   

Je toho ještě více, o čem by se mělo psát, ale na to si asi každý skinner postupně přijde sám. No a pokud ne, budu tu čas ood času na takové zásady a doporučení upozorňovat...
 
Citovat
Zdravím páni, chcem sa Vás opýtať, je možné v kodi v skine Estuary docieliť, aby pri názve programu v programovom sprievodcovi sa pri živých prenosoch zobrazoval popis "Živě", prípadne "LIVE"? Podobne ako je to na obrázku nižšie pri kanále ČT Sport? Má niekto s tým skúsenosť? Ak to ide, je niekto ochotný poradiť, ako by sa to dalo? Snáď som to napísal zrozumiteľne. Za prípadnú odpoveď budem vďačný. Rado.

https://imgur.com/a/j1rq0xX
 
Citovat
@radoorech V EPG symbol je jeden symbol (*), který se zobrazí, pokud je splněna alespoň jedna z podmínek pro daný pořad, jedna z nich je, že je to Live vysílání. Ale je to hodně triviální a vastně ani nevím, jestli a jak se ta informace z EPG (xmltv) do PVR přenáší, jestli vůbec v xmltv existuje nějaký tag a jestli vůbec někdo takovou informci do xmltv jinak, než jako textovou informaci v popisu pořadu, vkládá. Já to tam tedy ještě neviděl.

Teoreticky by asi šlo analyzovat text v popisu pořadu a pokud se např. najde řetězec "přímý přenos" nebo nějaký podobný, tak to zobrazení v EPG zmodifikovat. Buď před titul pořadu přidat text nebo použít nějaký grafický symbol, podobně jako tu (*). Dokáží si představit, že by to dokonce mohlo vypadat přesně tak, jak uvádíš.

Chtělo by to asi nějaké kratší zkoumání jak to udělat konkrétně. Ale stejně to nebude 100% spolehlivé. V ČT Sport by to asi nějak fungovalo, tam živé přenosy označují víceméně pořád stejně, na ostatních kanálech by to asi mohl být problém. Funkce by to jistě byla hezká, ale já osobně se do ní nepohrnu. Leda že bych se nudil a měj hodně volného času... 3

No, tak ne, že bych se přímo nudil, ale nakone mi to nedalo. Uvědomil jsme si, že jsem to v podstatě popsal tak, že udělat to, tedy v nějaké testsovací formě, by už problém měl být minimální. Takže jsem využil už existující symbol (*) a do podmínky pro její zobrazení jsem přidal:
 
Kód:
String.Contains(ListItem.Plot,Přímý přenos)
No, a tady je výsledek:
   
Dva pořady na ČT Sport, klasické lyžování mají v popisu text "Přímý přenos" a je u nich vidět ta hvězdička. Asi by nebyl problém vymyslet to podobně např. i pro Záznam, případně do té podmínky vložit více variant textu... A nakonec vymyslet nějaký lepší způsob zobrazení...

A nebo s přidáním testu na řetězec "záznam"...
   
A hned je tam vidět i nevýhoda této metody, viz pořad Toufarova křížová cesta.

Na druhou stranu, na to, jak je to jendoduchá úprava to dává docela zajímavé výsledky:
   
 
Citovat
Ahoj Jiro, ďakujem za odpoveď a ochotu. Ja som vychádzal z toho, že ešte v matrixe boli pridané nové, radšej to napíšem po anglicky "infobools" pre PVR.

https://forum.kodi.tv/showthread.php?tid...pid2934615

A na tom fóre som našiel jeden upravený skin estuary, kde sa tieto informácie zobrazujú, tak som chcel vedieť, či je to možné aj v základnom skine po určitých úpravách.

https://imgur.com/VFKtbwW
 
Citovat
@radoorech Ano, to je přesně ono. Ten "badge" New na obrázku, to je ta (*) v současné verzi skinu. V definiční souboru se zobrazí v případě, pokud je splněna podmínka:
Kód:
ListItem.IsNew | ListItem.IsPremiere | ListItem.IsFinale | ListItem.IsLive
Já jsem k ní v podstatě jen přidal to shodu s řetězcem "Přímý přenos" textu v popisu programu.

A ještě jeden pokus, pouze přímé přenosy:
   
 
Citovat
@JiRo: ďakujem za ochotu a čas. Ospravedlňujem sa, ak som ťa nechtiac okradol o tvoj čas, nakoľko si písal "Funkce by to jistě byla hezká, ale já osobně se do ní nepohrnu."
Mne sa žiaľ nezobrazuje ani tá hviezda (*), takže mi celkom nie je jasné, odkiaľ kodi a iptv simple client berie informácie, či je to živý prenos, premiéra alebo novinka, čiže či je splnená tá podmienka, o ktorej si písal ListItemIsLive a pod. Ak môžem otázku, ktorý .xml súbor si editoval, aby sa ti zobrazovalo to "live" ako to máš v tom poslednom príspevku? Ďakujem ti za prípadnú pomoc.
 
Citovat
Několi postů výše přišel @radoorech s nápadem, zda by se nedala v Kodi jednouše zobrazit informace o tom, že jde vysílání sportovního zápasu/závodu živě, tedy že je to přímý přenos. Má první reakce byla, že je to zbytečnost, která stejně nijak udělat nepůjde. Nakonec mi to ale nedalo, zamyslel se nad tím a řekl si, že to zkusím. Výsledek, který mě nakonec stál jen pár minut času, stojí za to. Teprve ve chvíli, kdy jsem si v Kodi zobrazil toto:
   
došlo mi, jaký měl @radoorech dobrý nápad. Až v té chvíli jsme si uvědomil, kolikrát se v té nabídce sportovních kanálů ztrácím, a že někdy přehlédnu vyloženou perlu živého vysílání. Uznáte sami, že není nad okamžitý zážitek...

Takže jak na to. To hlavní se děje v souboru Includes_PVR.xml, konkrétně v includes EpgGrid. Z několika možných jsem si vybral řešení, kdy smybol LIVE vkládám před text názvu pořadu. Protože v EpgGrid nejde použí grouplist, který by byl přirozeným řešením, musím místo pro zobrazení symbolu získat podmíněným přesunutím textu pomocí animation. To je první úprava:
 
Kód:
                    <control type="label" id="1">
                        <left>6</left>
                        <top>0</top>
                        <height>36</height>
                        <aligny>center</aligny>
                        <font>font13</font>
                        <label>$INFO[ListItem.Label]</label>
                        <animation effect="slide" start="0,0" end="40,0" condition="$EXP[epg_event_live]">Conditional</animation> <!-- EASY+ -->
                    </control>
Druhá úprava je pak už jenom vložení symbolu do stejného místa, kdy byl před tím text, který jsem si odsunul stranou. Přidám celý control blok typu image:
 
Kód:
                    <control type="image"> <!-- EASY+ -->
                        <visible>$EXP[epg_event_live]</visible>
                        <left>6</left>
                        <top>0</top>
                        <width>36</width>
                        <height>36</height>
                        <aspectratio>keep</aspectratio>
                        <texture>special://skin/extras/textures/flags/pvr/live.png</texture>
                    </control>
V obou případech je podmínkou posunu a vložení obrázku výraz $EXP[epg_event_live], což je jednoduchá logická funkce. Můžete se obejít bez $EXP a vložit tam tu funkci přímo, ale protože je tam ta podmínka použita 4x, je samozřejmě použití $EXP lepší cestou. Navíc se dá předpokládat, že ta logická funkce bude časem narůstat, takže je lepší, mít ji definovanou zvlášť, a ne přímo v kodu definice include. Jejím obsahem je (pro tuto chvíli) pouze toto:
 
Kód:
    <expression name="epg_event_live">String.Contains(ListItem.Plot,Přímý přenos) | String.Contains(ListItem.Plot,Priamy prenos)</expression>
Nezapomeňte, že tu úpravu musíte provést 2x, jednou v <itemlayout> a jednou ve <focusedlayout> bloku.

Co se týče obrázku, já si ho umisťuji přímo do adresáře skinu special://skin/extras/textures/flags/pvr/live.png, zatím jako obyčejný soubor, ale čas od času tyto soubory vkládám do Texture.xbt. Proto ho mám uložený ve struktuře adresářů, kterou pak mohu jednoduše nakopírovat do adresáře textures, ze kterého vytvářím komprimovaný xbt.
   
Soubor jsem vyrobil v jednoduchém graf. editoru a moc jsme nad tím nepřemýšlel. Jistě by šel vytvořit i mnohem lépe. Grafik tedy nejsem...  3
 
Citovat
Tongue 
@JiRo: ďakujem ti za tieto úpravy, vyzerá to fakt super. Som rád, že to bol dobrý nápad. Aj keď žiadosť nebola adresovaná priamo na tebe, ale dúfal som, že by ťa to mohlo zaujať 1 3 . A výsledok stojí za to. Ešte raz ďakujem za tvoju ochotu a trpezlivosť. Rado.
 
Citovat
@JiRo: upravil som to podľa tvojho návodu, symbol LIVE sa zobrazuje, ale neviem kam treba vložiť tú podmienku <expression name="epg_event_live">String.Contains(ListItem.Plot,Přímý přenos) | String.Contains(ListItem.Plot,Priamy prenos)</expression>

Teraz sa mi to LIVE zobrazuje pri každom programe a na každom kanály. Poradíš prosím ťa kam to vložiť? Ďakujem.
 
Citovat
@radoorech Kodi s tím pracuje jako s include, takže např. rovnou do toho souboru Includes_PVR.xml a třeba hned na začátek.
Kód:
<?xml version="1.0" encoding="utf-8"?>
<includes>
    <expression name="epg_event_live">String.Contains(ListItem.Plot,Přímý přenos) | String.Contains(ListItem.Plot,Priamy prenos)</expression>
    <expression name="listitem_has_episode_info">!String.IsEmpty(ListItem.Episode) | !String.IsEmpty(ListItem.EpisodeName) | !String.IsEmpty(ListItem.Season)</expression>
    <expression name="listitem_has_epg_event_info">!String.IsEmpty(ListItem.EpgEventTitle) | $EXP[listitem_has_episode_info]</expression>
    <include name="PVRListItemLayout">
    ...
 
Citovat
Šlo to krásně spíchnout i v Confluence. A pro ty, kteří by to chtěli, tam editovat souborViewsPVRGuide.xml.

A hned do druhého řádku tamtéž:
 
Kód:
<expression name="epg_event_live">String.Contains(ListItem.Plot,Přímý přenos) | String.Contains(ListItem.Plot,Priamy prenos)</expression>
X96max plus 4/32 + CE 21 + skin Confluence SCC / TV Samsung QE55Q6FNA
X96max plus 4/32 + CE 20.5 + skin Confluence SCC

AVR Denon 1600H / Dali Spektor 5.1
Win10pro + Kodi19.5
NAS Synology 215j 3TB Raid1
Router Turris 1.1
 
Citovat
Ďakujem @JiRo: za ochotu, teraz to vyzerá presne ako som to chcel. Veľké ďakujem.
 
Citovat
Nedávno jsem tu referoval o nově zamýšlené modifikaci skinu, nazvaném Estuary Cinema. Jak jsem již dříve uvedl, jeho idea vzešla z požadavku vytvořit jednoduchý skin pro Kodi, kde bude užíván pouze jeden jediný doplněk, a to Stream Cinema Community (SCC). Začal jsem skin připravovat, ale velmi brzy se ukázalo, že ani zadavatel si není jistý, zda takto redukovanou funkci vlastně chce. Slovo dalo slovo a brzy jsme se dohodli na tom, že asi bude lepší vyrobit standardní modifikaci použitelnou jako skin pro všeobecné použití. Ovšem s tím, že doplněk Stream Cinema Community, v něm bude mít výsadní postavení.

Dnes jsem tedy zhruba na 1/3 času, kterou tomu asi budu věnovat, než vydám 1. alpha verzi.  Je to oproti předpokladu zpoždění (podle plánu bych teď měl být zhruba v polovině či za ní), ale vzhledem k podstatnému rozšíření zadání se to nad dá akceptovat. Navíc dělám úpravy více koncepčněji - především s ohledem na jeho další rozvoj a údržbu, protože předpokldáám, že skin si po této změně najde více uživatelů a což se jistě na čase věnovaném jeho dalšímu vývoji projeví.

Abych jen nesliboval, tak zatím několik screenshot-ů. Jsou pořízeny na základu ze skinu Easy, takže obsahují i části, které v novém skinu (určitě ne v Alpha) zatím nebudou - to se týká hlavně stavového řádku, nebo budou redukované - rozšířený formát části času a data. Tři screenshot-y ukazují hlavně logiku ovládání v hlavním menu. Položka Stream Cinema Community v něm bude jedna, a její widgety to bude jen vybraná podmnožina z celého doplňku.
   
Uživatel si v této chvíli bude moci vybrat a buď spustí addon (Enter/OK/Click) nebo přejde (ve směru šipky) na "sidemenu". Do něj se dostane stiskem tlačítka ve směru šipky, tedy levého kurzorového tlačítka. Následuje animované výměna položek menu, položky hlavního menu zajedou mimo obrazovku a položky nového menu se na ní zleva objeví, samozřejmě i s odpovídajcíími widgety. Obsahem tohto sidemenu jsou všechny základní položky z addon.
   
Widgety pro "sidemenu" ještě nejsou vytvořené, ale budou vypadat i chovat se úplně stejně, jako ty z hlavního menu. Návrat ze sidemenu je pak obdobný, stiskem ve směru šipky, tentokrát u kterékoliv položky, se menu vymění zpět. 
   
Předpokládám, že podobnou podporu by časem mohly dostat i další doplňky. Počítám i se Stream Cinema CZ/SK.

Změna konceptu vývoje se projeví i v tom, že skin bude zcela jistě veřejný, bude umístěný na github a bude samozřejmě dostupný i v repozitáři tohoto fóra.
 
Citovat
@JiRo: Nemůžu se dočkat, vypadá to parádně!
Nvidia Shield TV - Kodi Nexus
LG OLED65B7A 
 
Citovat
Kdyby SCC nehrála prim tak bych standardní Estuary opustil a nainstaloval si ho.

Ugoos X3 Pro + Synology DS218, D216play +Synology RT2600ac
SZ nečtu!!! Ptejte se ve fóru, pomůžete ostatním.
 
Citovat
Poněkud se to komplikuje. Jedna ne tak špatná, jedna hoprší a jedna celkem neutrální (ale s jistou pachutí) zpráva o stavu vývoje...

Myšlenka integrovat nastavení hlavního memu a widgetů přímo do Home stránky není špatná, leč přišly s ní porblémy. Aby se změny pormítl do aktuálního tozbrazení, je třeba po změně provést reload skinu. To se provede autoamaticky na základě toho, zda se nějaký paramer změní. Bohužel to, cca 1x z 20 pokusů, způsobí pád Kodi. Což o to, to je známá věc, že reload skinu není úplně stabilní funkcí Kodi. Ale nějak jsem na to při tom svém návrhu zapomněl. Je možné, že za normálního provozu, kdy změnu zobrazení Home stránky nebudou uživatelé provádět často, se to neprojeví, ale spoléhat se na to nemůžu. Proto nastavené hlavního menu a widgetů vrátím tam, kde bylo vždycky. Tedy do Nastavení Kodi. Sice tím přijdu o jednu zásadní ideu, ale to zase taková tragedie není.

Druhý problém je horší. Dokončil jsem konečně nepříjemnou část kódu skinu, zobrazení Novinek dabovaných a Novinek  s vloženými titulky, u kterých se obsah widgetů i jejich název mění podle nastavení doplňku Stream Cinema Community. Teď už se po změně v nastavení doplňku widgety aktualizují na nové nastavení kombinace jazyků CZ/SK/EN.
   
Bohužel ale opět s občasným pádem Kodi. A tady to vyřešit zatím neumím, protože jsem nepřišel na to, proč to vlastně padá. Snad to bude jen nějaká blbost, protože absence této vzájemné integrace skinu a doplňku by mě opravdu mrzela. Takže přibyl jeden zásadní úkol...

A poslední zpráva se týká nových funkcí v doplňku Stream Cinema Community, které se mi objevily poté, co jsem po týdenní služební cestě spustil čekají instalaci. Konkrétně mám na mysli Hledání ve Webshare. Funkce je dostupná v kontextovém menu položky Hledat v hlavním menu doplňku, já jsem ji ale ještě přidal (stejně jako funkci Hledat ve Stream Cinema Community) do funkce Hledat v Kodi.
               
Funguje pěkně, jen mám při jejím použití nepříjemný pocit (pachuť), že je to součást reakce na očekávaný proces změn, na jejichž konci bude konec toho, jak doplněk Stream Cinema Community známe teď. Ale to jsme asi všichni tak nějak tušili...

Asi ale nebude moc dobré, nechávat funkci Hledat... (ve) Webshare jen tak volně přístupnou. Vrací totiž úplně všechno, co hledanému řetězci vyhovuje. A že na Webshare nejsou jen pohádky a romantické příběhy je snad jasné...  4
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)