• 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
@radoorech Ta definice pro country je velmi pravděpodobně v pořádku. Problém asi bude, že Kodi z EPG tu hodnotu prostě nepřevezme, takže ta položka, když se použije ve skinu, je prázdná. S tím asi neuděláme nic.

V tom upraveném souboru je ještě chybička, upozornil mě na ní kamarád. Chybí tam animace těch přesunutých hodnot (kanál, datum a čas začátku, doba trvání, expirace v případě nahrávky). Prý je to vidět, když si navolíš stránku, tak zatímco tam ta ikona s logem stanice nebo posterem pořadu "pomalu přijede zleva", tak tyhle údaje se tam objeví až poté a okamžitě. A při odchodu ze stránky podobně, napřed "pomalu odjede" ikona/poster a až pak najednou zmizí ty údaje. To je samozřejmě špatně a já si toho nevšiml. 10 Až budu u Kodi, tak to opravím a postnu sem novou verzi.
 
Citovat
JiRo: Ahoj Jiro, tak nevadí, snaha bola, country tam nebude.

A s tou chybičkou je to ako píšeš, teraz som to pozrel a je to tak, tie údaje zmiznú neskôr po odchode zo stránky.
 
Citovat
Na přání @otava5 přidávám popis vytvoření nového pohledu sestavy přehledu TV/Radio kanálů ve formátu Zeď.
   
K dosavadním dvěma pohledům, které jsem nově pojmenoval Seznam a Ikony, tedy přibyl třetí, pojmenovaný analogicky, tedy Zeď:
           

Změny v definičních souborech se týkají celkem tří z nich.

První je definiční soubor Variables.xml

Jednoduchá úprava, při které se pouze přidává následující definice proměnné MyPVRChannelsViewVar. Ta zajišťuje přiřazení názvů tří pohledů podle id control elementu, která obsahuje základní definici zobrazení a použije se v následující definici:
Kód:
<variable name="MyPVRChannelsViewVar"> <!-- EASY+ -->
<value condition="Control.IsVisible(50)">$LOCALIZE[536]</value>
<value condition="Control.IsVisible(51)">$LOCALIZE[535]</value>
<value condition="Control.IsVisible(52)">$LOCALIZE[31102]</value>
</variable>

Druhý je definiční soubor includes Includes_MediaMenu.xml.

V include PVRSideBar se mění definice přepínání původně pouze dvou pohledů (Seznam a Ikony) v control elementu radiobutton s id=6060. Původní definice je tato:
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>
Nahradí se novou definicí, ve které se změní typ control elementu na button, Id control elementu zůstává původí, tedy 6060:
Kód:
<control type="button" id="6060"> <!-- EASY + -->
<include>MediaMenuItemsCommon</include>
<label>Zobrazit</label>
<label2>[B]$VAR[MyPVRChannelsViewVar][/B]</label2>
<onclick>Container.NextViewMode</onclick>
<visible>Window.IsActive(MyPVRChannels.xml)</visible>
</control>
Vidíte, že se pro zobrazená názvu zobrazení použíje dříve definovaná proměnná MyPVRChannelsViewVar.

Poslední a hlavní úprava se týká vlastní definice zobrazení v souboru MyPVRChannels.xml.

Úprav v souboru je více. Jednak se přidává celý blok definice popisu zobrazení Zeď v control elementu typu panel s id=52. Následuje definice zobrazení horního řádku s číslem a jménem kanálu, začátkem a koncem pořadu a jeho jménem:
Kód:
<control type="group"> <!-- EASY+ -->
<control type="label">
<left>35</left>
<top>120</top>
<width>auto</width>
<height>65</height>
<label>$INFO[ListItem.ChannelNumberLabel,[B],[/B]]$INFO[ListItem.Label, [B],[/B]]$INFO[ListItem.StartTime, · , - ]$INFO[ListItem.EndTime]$INFO[ListItem.Title, · ]</label>
<font>font27</font>
<shadowcolor>text_shadow</shadowcolor>
<visible>Control.IsVisible(52)</visible>
</control>
Další je drobné úprava zobrazení pravého panelu pro Seznam a Ikony, kde se přidává podmínka:
Kód:
<visible>!Control.IsVisible(52)</visible>
takže nová podoba tohoto control elementu je:
Kód:
<control type="group"> <!-- EASY* -->
<visible>!Control.IsVisible(52)</visible> <!-- EASY+ -->
<depth>DepthContentPanel</depth>
<include>OpenClose_Right</include>
<width>870</width>
<right>0</right>
<include content="ContentPanel">
<param name="left" value="-72" />
<param name="width" value="970" />
<param name="top" value="-20" />
<param name="flipx" value="true" />
</include>
Pak se ještě přidá nově definice scrollbar pro zobrazení Zeď:
Kód:
<control type="scrollbar" id="74"> <!-- EASY+ -->
<visible>Control.IsVisible(52)</visible>
<right>0</right>
<top>list_y_offset</top>
<width>12</width>
<bottom>list_y_offset</bottom>
<onleft>52</onleft>
<onright>52</onright>
<orientation>vertical</orientation>
<animation effect="slide" end="6,0" time="300" tween="sine" easing="inout" condition="!Control.HasFocus(74)">conditional</animation>
</control>
Nakonec jen nepovinná drobná úprava zobrazení následujícího pořadu v control elementu typu label:
Kód:
<control type="label"> <!-- EASY* -->
<right>20</right>
<include>OpenClose_Right</include>
<bottom>10</bottom>
<width>850</width>
<height>60</height>
<visible>!String.isempty(ListItem.NextTitle)</visible>
<label>[COLOR grey]$LOCALIZE[19031][/COLOR]$INFO[ListItem.NextStartTime,: , - ]$INFO[ListItem.NextEndTime]$INFO[ListItem.NextTitle, · ]</label> <!-- EASY* -->
<shadowcolor>black</shadowcolor>
<align>right</align>
<aligny>center</aligny>
<wrapmultiline>true</wrapmultiline>
<font>font27</font>
</control>
Kompetní definiční soubor MyPVRChannels.xml se všemi úpravami přikládám. V textu používám komentáře s následujícím významem:
  • <!-- EASY* --> - v tomto control elementu je nějaká změna
  • <!-- EASY+ --> - tento control blok nebo jeho část jsou nově přidané


Přiložené soubory
.xml   MyPVRChannels.xml (Velikost: 16,9 KB / Stažení: 76)
 
Citovat
@JiRo: Klobúk dole pred tvojou prácou a ochotou.
Ďakujem za úpravy, vyzerá to parádne.
 
Citovat
@radoorech Jo a ještě dlužím tu opravu v DialogPVRInfo.xml. Ta chyba je v nově přidaném control elementu s id=400:
Kód:
<control type="textbox" id="400"> <!-- EASY+ -->
<left>141</left>
<top>720</top>
<width>461</width>
<height>250</height>
<align>justify</align>
<label>$INFO[ListItem.ChannelName,[B],[/B][CR]]$INFO[ListItem.Date,[COLOR grey]$LOCALIZE[552]:[/COLOR] ,[CR]]$INFO[ListItem.Duration,[COLOR grey]$LOCALIZE[180]:[/COLOR] ,[CR]]$VAR[ExpirationDateTimeLabel]</label>
</control>
Jsou tam vlastně chyby dvě.

Ta první není kritická a nijak se neprojevuje, ale abych měl klid, tak by se měla také opravit. Jde o id toho control elementu, který je 400. Měl by ale být správně jiný, protože toto id je v této definici již použito. Takže nově by mohlo báýt třeba 401.

Druhá chyba se týká už toho zmíněného chybějícího posunu. Estuary má pro tyhle operace animace, které by měly být na různých stránkách pokud možno stejné, řadu includes, které ty posuny řeší jednotně. V tomto případě je to include OpenClose_Left, které dělá to, že element, ve kterém je použité, při otevření nebo zavření okna "připluje" nebo "odpluje" z leva nebo do leva.

Po opravách obou chyb tedy bude control element nyní vypadat takto:
Kód:
<control type="textbox" id="401"> <!-- EASY+ -->
<include>OpenClose_Left</include>
<left>141</left>
<top>720</top>
<width>461</width>
<height>250</height>
<align>justify</align>
<label>$INFO[ListItem.ChannelName,[B],[/B][CR]]$INFO[ListItem.Date,[COLOR grey]$LOCALIZE[552]:[/COLOR] ,[CR]]$INFO[ListItem.Duration,[COLOR grey]$LOCALIZE[180]:[/COLOR] ,[CR]]$VAR[ExpirationDateTimeLabel]</label>
</control>
Opravenou verzi celého souboru DialogPVRInfo.xml přikládám.


Přiložené soubory
.xml   DialogPVRInfo.xml (Velikost: 6,43 KB / Stažení: 55)
 
Citovat
@JiRo: ďakujem veľmi pekne za opravu súboru DialogPVRInfo.xml, odskúšané, funguje to parádne. Si fakt borec.
 
Citovat
@JiRo: Děkuji pěkně pane...Jen jsem si lehce zvětšil a posunul horní řádek....
 
Citovat
@JiRo: Ahoj, dal by se prosím napsat nějaký návod jak dát do hlavního menu Filmy a Seriály  ze SCC.

Děkuji moc.
RaspberryPi 3B, LibreELEC Leia
WeTek_Play, LibeELEC Leia
Odroid N2, CoreELEC Leia
 
Citovat
@hitman222 Návody jsou to nejhorší...

Což o to, asi by to šlo, jen je otázka, jak do hloubky jít. Zda je cílem vysvětlit, jak je to celé organizované a nebo to celé napsat s tím, že si to uživatel vloží do příslušných definičních souborů skinu na určená místa. A pak také, zda-li k tomu chceš i widgety. Další pak je, jak moc "dokonalé" to má být. Zda stačí jen jednoduché řešení, ve kterém například texty zadáš přímo do definičního souboru, nebo to chceš udělat komplet, tzn. textovou část doplnit do příslušných jazykových souborů skinu.
 
Citovat
@JiRo: Ahoj,mne stačí jen jednoduché řešení,vkladat do definicnich souboru jak byl navod přehledu TV/Radio kanálů. Jestli by to šlo,něco jak to bylo ve starém Stream Cinema.
RaspberryPi 3B, LibreELEC Leia
WeTek_Play, LibeELEC Leia
Odroid N2, CoreELEC Leia
 
Citovat
Jak změnit výchozí hodnotu vzhledu - barva

Velmi častá otázka. Změna barvy je u skinu celkem jednoduchá, provede se na této obrazovce v nastavení:
   
V této ukázce je výchozí barva změněna na charcoal a výchozí motiv na curial.

Proč tedy měnit výchozího barvu vzhledu? Jsou k tomu dva důvody. Návrat do výchozí barvy Kodi provede vždycky poté, pokud změníte skin a pak se vrátíte k tomu původnímu a vy si musíte změnu pak provést ručně. A druhým důvodem je, že pokud provádíte modifikace skinu a jeho distribuci dalším uživatelům, můžete například chtít změnit i barvu takto modifikovaného skinu. Jako to třeba provedli autoři instalace Kodi v rámci CoreELEC nebo jak to provádím já, který různé barvy Kodi používá pro odlišení verzí instalace.

Postup je jednoduchý. Definice barev vzhledu jsou uloženy v adresáři skinu .../addons/skin.estuary/colors v souborech .xml. Definice výchozí barvy vzhledu pak v souboru defaults.xml, ostatní barvy v dalších souborech s odpovídajícím pojemnováním.

Chcete-li tedy změnit výhoztí barvu, stačí soubor s definicí vámi vybrané barvy přejmenovat na defaults.xml. Doporučuji při tom původní defaults.xml přejmenovat tak, abyste o definice v něm nepřišli. Já to v případě Kodi pro Windows, Linux nebo LibreELEC dělám tak, že původní defaults.xml přejmenuji na blue.xml nebo classsic.xml a ze souboru s definicí nově vybrané barvy si udělám kopii a teprve tu přejmenuji na defaults.xml. Nepřijdu tak o možnost se později o výběru výchozí barvy rozhodnout jinak. Podobné je to u CoreELEC, kde jeho výchozí barva je barvou, jejíž definice je v jiných instalacích Kodi uložena v souboru maroon.xml. A mimochodem, klasická modrá (blue.xml) Kodi je v CoreELEC označená jako classic.xml.

Pozn. Možná by někdo chtěl mít možnost změnit i výchozí motiv vzhledu. Ano, i to jde, ale je to o něco složitější. V tomto případě nepomůže jen kopířování definičních souborů, ten postup je náročnější a proto ho popíši někdy jindy.
 
Citovat
(11.7.2021, 15:33)otava5 Napsal(a): @JiRo: měl bych zájem o kompletní úpravu "TV kanály - zobrazení typu zeď" .... případně šla by udělat úprava typu zeď jako widget?

Tak kompletní úpravu "TV kanály - zobrazení typu zeď" jsme už popsal, teď tedy ještě úprava typu zeď jako widget.

K tomu jednu poznámku. Přidávat do widgetů stylu originálního Estuary widget typu zeď není úplně bezproblémové. Jak jste si jiště všimli, v Estuary se aktuální pozice vybrané položky widgetu v zobrazené části pamatuje a při přechodu na předcházející nebo následující widget se použije. To funguje dobře, pokud jsou widgety shodného typu. Pokud tedy mezi standardní widgety Estuary vložíme widget typu zeď, nebude ta zapamatovaná pozic fungovat správně. S tím je prostě se třeba smířit, skin-engin na to, aby mohl řešit i tyto případy korektně, nemá funkce.

Teď tedy k vlastnímu řešení. Uvádím ho tak, jak ho používám ve své modifikaci Estuary Easy, takže některé drobnosti jsou v definičních souborech nadbytečné. Ale protože tohle je určeno už lidem s vyššími znalostmi skinningu, tak si s tím snad poradí.

V první řadě je třeba vytvořit patřičné include widgetu, pojmenované analogicky k názvům ostatních widgetů WidgetWallChannels, které je třeba umístit do vhodného souboru, v tomto případě tedy nejlépe do Includes_Home.xml, kam definice widgetů obecně v Estuary patří.
Kód:
    <include name="WidgetWallChannels"> <!-- EASY+ -->
        <param name="item_limit">$INFO[Skin.String(widget_limit)]</param>
        <param name="icon">$INFO[ListItem.Icon]</param>
        <param name="label">$INFO[ListItem.Label]</param>
        <param name="label2">$INFO[ListItem.Title]</param>
        <definition>
            <include content="CategoryLabel">
                <param name="label">$PARAM[widget_header]</param>
                <param name="list_id">$PARAM[list_id]</param>
                <param name="visible">$PARAM[visible]</param>
                <param name="title">$PARAM[title]</param>
                <param name="title_icon">$PARAM[title_icon]</param>
            </include>
            <include content="BusyListSpinner">
                <param name="list_id" value="$PARAM[list_id]"/>
                <param name="posy" value="200"/>
            </include>
            <control type="panel" id="$PARAM[list_id]">
                <left>0</left>
                <top>120</top>
                <right>0</right>
                <height>1000</height>
                <!-- <bottom>0</bottom> -->
                <include content="WidgetWallCommon">
                    <param name="list_id" value="$PARAM[list_id]"/>
                </include>
                <visible>Integer.IsGreater(Container($PARAM[list_id]).NumItems,0) | Container($PARAM[list_id]).IsUpdating</visible>
                <itemlayout width="310" height="350">
                    <control type="group">
                        <left>70</left>
                        <control type="image">
                            <width>319</width>
                            <height>340</height>
                            <texture>dialogs/dialog-bg-nobo.png</texture>
                            <bordertexture border="21">overlays/shadow.png</bordertexture>
                            <bordersize>20</bordersize>
                        </control>
                        <control type="image">
                            <top>43</top>
                            <left>38</left>
                            <width>245</width>
                            <height>200</height>
                            <texture fallback="icons/sidemenu/radio.png">$PARAM[icon]</texture>
                            <aspectratio>keep</aspectratio>
                        </control>
                        <control type="label">
                            <left>42</left>
                            <top>247</top>
                            <width>245</width>
                            <height>70</height>
                            <wrapmultiline>true</wrapmultiline>
                            <label>$PARAM[label]</label>
                            <font>font12</font>
                            <shadowcolor>text_shadow</shadowcolor>
                            <align>center</align>
                            <aligny>top</aligny>
                        </control>
                        <control type="label">
                            <left>42</left>
                            <top>277</top>
                            <width>245</width>
                            <height>65</height>
                            <label>$PARAM[label2]</label>
                            <font>font12</font>
                            <shadowcolor>text_shadow</shadowcolor>
                            <align>center</align>
                            <aligny>top</aligny>
                        </control>
                        <control type="image">
                            <left>260</left>
                            <top>30</top>
                            <width>32</width>
                            <height>32</height>
                            <texture>$VAR[WallWatchedIconVar]</texture>
                        </control>
                    </control>
                </itemlayout>
                <focusedlayout width="310" height="350">
                    <control type="group">
                        <depth>DepthContentPopout</depth>
                        <left>70</left>
                        <animation type="Focus">
                            <effect type="zoom" start="100" end="110" time="200" tween="sine" easing="inout" center="240,100" />
                        </animation>
                        <animation type="Unfocus">
                            <effect type="zoom" start="110" end="100" time="200" tween="sine" easing="inout" center="240,100" />
                        </animation>
                        <control type="image">
                            <width>319</width>
                            <height>340</height>
                            <texture>dialogs/dialog-bg-nobo.png</texture>
                            <bordertexture border="21">overlays/shadow.png</bordertexture>
                            <bordersize>20</bordersize>
                        </control>
                        <control type="image">
                            <width>319</width>
                            <height>340</height>
                            <texture colordiffuse="button_focus">colors/grey.png</texture>
                            <bordersize>20</bordersize>
                            <include>Animation_FocusTextureFade</include>
                        </control>
                        <control type="image">
                            <top>43</top>
                            <left>38</left>
                            <width>245</width>
                            <height>200</height>
                            <texture fallback="icons/sidemenu/radio.png">$PARAM[icon]</texture>
                            <aspectratio>keep</aspectratio>
                        </control>
                        <control type="label">
                            <left>42</left>
                            <top>247</top>
                            <width>245</width>
                            <height>70</height>
                            <wrapmultiline>true</wrapmultiline>
                            <label>$PARAM[label]</label>
                            <font>font12</font>
                            <shadowcolor>text_shadow</shadowcolor>
                            <align>center</align>
                            <scroll>true</scroll>
                            <aligny>top</aligny>
                        </control>
                        <control type="label">
                            <left>42</left>
                            <top>277</top>
                            <width>245</width>
                            <height>65</height>
                            <label>$PARAM[label2]</label>
                            <font>font12</font>
                            <shadowcolor>text_shadow</shadowcolor>
                            <align>center</align>
                            <scroll>true</scroll>
                            <aligny>top</aligny>
                        </control>
                        <control type="image">
                            <left>260</left>
                            <top>30</top>
                            <width>32</width>
                            <height>32</height>
                            <texture>$VAR[WallWatchedIconVar]</texture>
                        </control>
                    </control>
                </focusedlayout>
                <content sortby="$PARAM[sortby]" sortorder="$PARAM[sortorder]" target="$PARAM[widget_target]" limit="$PARAM[item_limit]">$PARAM[content_path]</content>
            </control>
        </definition>
    </include>

V druhém kroku je pak třeba výše uvedené include zavolat v patřičném místě a s patřičnými parametry. Tím patřičným místem je zobrazení widgetů pro volbu hlavního menu Televize, tedy s id=12 000. Widget by měl být (s oheldem na výše uvedenou poznámku) umístěn nejlépe jako poslední v řadě widgetů, tedy za widget který zobrazuje Nedávné nahrávky. Volání widgetu a jeho parametry pak mohou vypadat například takto:
Kód:
                <include content="WidgetWallChannels" condition="System.HasPVRAddon">
                    <param name="content_path" value="pvr://channels/tv/*"/>
                    <param name="widget_header" value="TV kanály"/>
                    <param name="widget_target" value="videos"/>
                    <param name="list_id" value="12500"/>
                    <param name="item_limit" value="$INFO[NumItems]"/>
                    <param name="label2" value=""/>
                </include>
Tady pozor, v Estuary Easy mám rozšíření, které umožňuje definovat počet položek widgetů (v originál Estuary je tento počet nastaven "natvrdo"), to se zohleďnuje při volání tohoto widgetu tím, že do parametru item_limit při volání vkládám hodnotu NumItems, což je počet položek aktuálního containeru. Ale jak už jsem napsal, tyto popisy jsou určeny těm, kteří to už se skinningem trochu umí a dokáží si s úpravou pro vlastní modifikace Estuary poradit.
 
Citovat
@JiRo: Používám tvé a Clienta úpravy pro Leia ke spokojenosti. Bohužel nám teď CE Team oznámil, že končí s podporou k 31.12. 2021

https://discourse.coreelec.org/t/coreele...ment/16684

Jak hodně je složité předělat na Matrix?
 
Citovat
@otava5 No, v podstatě máš dvě možnosti:
  1. Upravit závisloti ve skinu pro Leia tak, aby skin fungoval i po Matrixem s tím, že:
    • přijdeš o některé nové funkce nebo funkce v Matrix řešené odlišně než v Leia
    • upravíš si ty definiční soubory, které tyto nové funkce řeší tak, aby odpovídaly tomu, jak jsou definované ve skinu pro Matrix
  2. Vezmeš skin pro Matrix a krok po kroku v něm provedš ty samé změny, jako jsi před tím provedl ve skinu pro Leia
Hodně může pomoci i postup takový, že si vezmeš originál skin pro Leia, vložíš ho např. do projektu github, pak ho aktualizuješ skinem pro Matrix a uvidíš, co se kde změnilo a pak se rozhodneš, které tebou upravené definiční soubory z Leia můžeš rovnou 1:1 nakopírovat do nově upravovaného Matrix (to bude u souborů, kde mezi Leia a Matrix nebude žádný rozdíl) a u kterých musíš ty změny přepsat ručně (to u souborů, kde jsou mezi Leia a Matrix rozdíly).
 
Citovat
@JiRo: pozerám tvoj príspevok ohľadom prehľadu typu Zeď a vidím na screenshotoch, že sa ti v pravom hornom rohu pri aktuálne prehrávaným programe (v tomto prípade Rédl, Jednotka) zobrazuje aj ikona stanice Jednotka. Rád by som sa ťa opýtal, ako sa ti to podarilo? Vyzerá to super. Ak budeš ochotný sa podeliť, budem rád. S pozdravom Rado.
 
Citovat
@radoorech Asi jsem to tu už někdy popisoval. Zkusím to najít a dám sem odkaz nebo to případně popíši znova.
 
Citovat
Ikona přehrávaného titulu na Home stránce

Jak jsem slíbil @radoorech, a protože jsem to v tomto tématu nenašel, popíšu tuto úpravu celou. Aby bylo jasno všem, jde o toto:
   
To, co se na vyznačeném místě zobrazí závisí na tom, co se přehrává. U Live TV je to ikona kanálu, u filmu většinou cover, u hudby také. Ve skinu se obsah přehávaného titulu dopočítává a výsedný odkaz je uložen do proměnné NowPlayingPosterVar. Vlastní dopočet je uložen, jak jinak, ve Variabes.xml:
Kód:
    <variable name="NowPlayingPosterVar">
        <value condition="!String.IsEmpty(Player.Art(poster))">$INFO[Player.Art(poster)]</value>
        <value condition="!String.IsEmpty(Player.Art(tvshow.poster))">$INFO[Player.Art(tvshow.poster)]</value>
        <value condition="String.IsEmpty(Player.Icon) + VideoPlayer.Content(livetv)">DefaultTVShows.png</value>
        <value>$INFO[Player.Icon]</value>
    </variable>
Je tedy možné si v případě, že se u nějakého typu přehrávaného obsahu nebude zobrazovat to, co je potřeba, výpočet upravit. Pokud ale budete s tím, co za obrázek se vám zobrazí, tak do Variables.xml v tomto případě zasahovat nemusíte.

A teď k vlastní úpravě definice

Pozn. Dále uvedený postup platí pro Estuary v Kodi 19, v Kodi 18 je to (myslím) krapet jiné, ale dá se to tam nalézt také.

Vlastní definice zobrazení je uložena v Includes.xml, v include TopBar., při editaci tedy hledejte deinici, která začíná:
Kód:
 ...
   <include name="TopBar">
        <param name="sublabel">$INFO[Container.SortMethod,$LOCALIZE[31022]: ,  ∙  ]$INFO[Container.CurrentItem,, / ]$INFO[Container.NumItems]</param>
        <definition>
...
Část, která zobrazuje to, co je na screenshotu výše označeno, je definována v originále (tedy bez ikony) v tomto control bloku:
Kód:
 ...
                   <control type="group">
                        <width>600</width>
                        <visible>!Control.IsVisible(503) + Player.HasMedia + String.IsEmpty(Window(Videos).Property(PlayingBackgroundMedia))</visible>
                        <animation effect="fade" time="200">VisibleChange</animation>
                        <control type="grouplist">
                            <left>-75</left>
                            <orientation>horizontal</orientation>
                            <height>38</height>
                            <top>14</top>
                            <align>right</align>
                            <width>660</width>
                            <itemgap>5</itemgap>
                            <usecontrolcoords>true</usecontrolcoords>
                            <control type="image">
                                <top>4</top>
                                <width>32</width>
                                <height>32</height>
                                <aspectratio>keep</aspectratio>
                                <texture colordiffuse="button_focus">$VAR[NowPlayingIconVar]</texture>
                            </control>
                            <control type="label">
                                <label>$INFO[Player.Title]</label>
                                <font>font27</font>
                                <shadowcolor>text_shadow</shadowcolor>
                                <height>35</height>
                                <width min="1" max="602">auto</width>
                            </control>
                        </control>
                        <control type="label" id="7700">
                            <label>$VAR[NowPlayingSublabelVar]</label>
                            <left>-44</left>
                            <top>44</top>
                            <font>font12</font>
                            <textcolor>grey</textcolor>
                            <shadowcolor>text_shadow</shadowcolor>
                            <height>25</height>
                            <width>630</width>
                            <align>right</align>
                            <scroll>true</scroll>
                        </control>
                    </control>
...
Vlastní zobrazení ikony, které musíme do definice vložit, vypadá takto:
Kód:
                    <control type="group">  <!-- EASY+ Playing title icons -->
                        <width>60</width>
                        <animation effect="fade" time="150">VisibleChange</animation>
                        <control type="image">
                            <top>22</top>
                            <width>50</width>
                            <height>50</height>
                            <aspectratio>keep</aspectratio>
                            <texture>$VAR[NowPlayingPosterVar]</texture>
                        </control>
                    </control>
Abychom ho dostali tam kam potřebujeme, vložíme ho za ten originální control blok, takže to pak bude celé vypadat takto:
Kód:
...
                    <control type="group">
                        <width>600</width>
                        <visible>!Control.IsVisible(503) + Player.HasMedia + String.IsEmpty(Window(Videos).Property(PlayingBackgroundMedia))</visible>
                        <animation effect="fade" time="200">VisibleChange</animation>
                        <control type="grouplist">
                            <left>-75</left>
                            <orientation>horizontal</orientation>
                            <height>38</height>
                            <top>14</top>
                            <align>right</align>
                            <width>660</width>
                            <itemgap>5</itemgap>
                            <usecontrolcoords>true</usecontrolcoords>
                            <control type="image">
                                <top>4</top>
                                <width>32</width>
                                <height>32</height>
                                <aspectratio>keep</aspectratio>
                                <texture colordiffuse="button_focus">$VAR[NowPlayingIconVar]</texture>
                            </control>
                            <control type="label">
                                <label>$INFO[Player.Title]</label>
                                <font>font27</font>
                                <shadowcolor>text_shadow</shadowcolor>
                                <height>35</height>
                                <width min="1" max="602">auto</width>
                            </control>
                        </control>
                        <control type="label" id="7700">
                            <label>$VAR[NowPlayingSublabelVar]</label>
                            <left>-44</left>
                            <top>44</top>
                            <font>font12</font>
                            <textcolor>grey</textcolor>
                            <shadowcolor>text_shadow</shadowcolor>
                            <height>25</height>
                            <width>630</width>
                            <align>right</align>
                            <scroll>true</scroll>
                        </control>
                    </control>
                    <control type="group">  <!-- EASY+ Playing title icons -->
                        <width>60</width>
                        <animation effect="fade" time="150">VisibleChange</animation>
                        <control type="image">
                            <top>22</top>
                            <width>50</width>
                            <height>50</height>
                            <aspectratio>keep</aspectratio>
                            <texture>$VAR[NowPlayingPosterVar]</texture>
                        </control>
                    </control>
...
 
Citovat
@JiRo: ďakujem veľmi pekne za odpoveď a ochotu sa podeliť. Mal som na mysli presne to, čo je na obrázku. Dnes sa k tomu nedostanem, ale zajtra to vyskúšam upraviť podľa návodu. Ešte raz veľká vďaka za čas a ochotu, ktorú tomuto fóru venuješ. S pozdravom Rado.
 
Citovat
Full Screen Pause

Dostal jsem zadání, vymyslet takovou úpravu Estuary, která by v případě, je-li video ve stavu pause, nezobrazovala se u horního i spodního okraje obrazovky žádná další informace, tedy ani podkladové pruhy. Prostě aby při pause byl na obrazovce jen čistý obraz. Už jsem to kdysi řešil, takže jsem v tom problém neviděl, jen jsem navrhoval, aby tuto možnost mohl uživatel jednoduše ovládat. Tzn. aby si takové chování mohl zapnout i vypnout. Což o to, v mém Estuary Easy ani tohle není problém, ale protože to teď chtěl vyrobit člověk, který Estuary Easy nepoužívá (má prý nějaký jiný Estuary Mod) tak jsme se dohodli, že mu úpravu pošlu, ale bude trvalá. Případné zapínání/vypínání si musí dodělat sám. Souhlasil.

S tímto tedy popíšu tuto úpravu i zde. Bude trvalá, já však naznačím, jak by se zapnutí/vypnutí mohlo doplnit.

Úprava se týká dvou definičních souborů. První je Custom_1109_TopBarOverlay.xml, ve kterém je definice toho, co se při pause (a nejen při ní) objevuje u horního okraje obrazovky. Druhým definičním souborem je DialogSeekBar.xml, ve kterém je definice toho, co se zobrazuje při spodním okraji obrazovky.

V obou případech jsou úpravy celkem jednoduché, v podstatě se do jejich definice doplní vždy pouze jeden řádek a to hned v úvodu obou souborů. Proto popis omezím jen na výpis úvodních řádků obou souborů s již vloženým řádkem. Ten je v obou případec doplněn komentářem  <!-- EASY+ Full Screen PAuse -->.

Soubor Custom_1109_TopBarOverlay.xml:
Kód:
<?xml version="1.0" encoding="utf-8"?>
<window type="dialog" id="1109">
    <visible>Window.IsActive(fullscreenvideo) | Window.IsActive(visualisation)</visible>
    <visible>Window.IsActive(seekbar) | Window.IsActive(pvrosdchannels) | Window.IsActive(pvrchannelguide)</visible>
    <visible>![true + Window.IsActive(fullscreenvideo) + Player.Paused + ![Window.IsActive(videoosd) | Window.IsActive(pvrosdchannels)]]</visible> <!-- EASY+ Full Screen Pause -->
    <depth>DepthOSD</depth>
    <include>Animation_TopSlide</include>
    <zorder>0</zorder>
...

Soubor DialogSeekBar.xml:
Kód:
<?xml version="1.0" encoding="UTF-8"?>
<window>
    <visible>Player.Seeking | Player.DisplayAfterSeek | [Player.Paused + !Player.Caching] | Player.Forwarding | Player.Rewinding | Player.ShowInfo | Player.ShowTime | Window.IsActive(videoosd) | Window.IsActive(musicosd) | Window.IsActive(playerprocessinfo) | !String.IsEmpty(Player.SeekNumeric) | !String.IsEmpty(PVR.ChannelNumberInput)</visible>
    <visible>![Window.IsActive(sliderdialog) | Window.IsActive(pvrosdchannels)]</visible>
    <visible>Window.IsActive(fullscreenvideo) | Window.IsActive(visualisation)</visible>
    <visible>![true + Window.IsActive(fullscreenvideo) + Player.Paused + ![Window.IsActive(videoosd) | Window.IsActive(pvrosdchannels)]]</visible> <!-- EASY+ Full Screen Pause -->
    <include>Animation_BottomSlide</include>
    <depth>DepthOSD</depth>
    <zorder>0</zorder>
...

Všimněte si, že v obou případech je vlastně jen doplněn logický výraz do tagu <visible>. Logický výraz kombinuje vybrané logické proměnné, je možné, že jsem nepodchytil všechny možné stavy a v některých případech se při pause přeci informace objeví. V takovém případě je pak možné pouze do výrazů doplnit odpovídající proměnné a příslušné operace. Tohle ale budeme řešit, až to nastane. Já jsem to testoval ve třech případech, při přehrávání videa, Live TV a nahrávek a fungovalo to správně.

A ještě poznámka k funkci. Neřešil jsme to, že se po zadání play (po předchozí pauze, kdy jsou ty informace skryté) se na krátkou  dobu, při obnovení přehrávání, objeví. To je dané logikou a jednoduchostí řešení. Známý říkal, že se mu to ale líbí a že by tedy ještě chtěl, aby se ta informace nakrátko objevila i při zadání pauzy. Má asi pravdu, bylo by to efektní i praktické. To už ale tak jednoduché nebude, to si musím rozmyslet. No, opět se potrvdilo staré známé: "Podej prst a ..."

Také si můžete všimnout, že v obou výrazech je použita konstanta true. Její změnou na false je možné tuto funkci vypnout. Na místě této konstanty může být vyhodnocení nějaké další proměnné, může to být například proměnná skinu, pro kterou se pak může vytvořit zadání (například v části nastavení skinu nebo například v OSD menu). S tím by si ale zkušený skinner už mohl poradit sám. Po této úpravě pak zapínání/vypínání této funkce může provádět sám uživatel.

Jen pro inspiraci ukážu, jak to zapínání/vypínání funkce může vypadat v OSD. Pokud bude zájem, můžu se k tomu ještě někdy vrátit a popsat i tuto úpravu.
   
Jen abyste se nedivili, proč je na ukázce zastavené přehrávání a přesto se ty infromace zobrazují. Úprava řeší pouze stav pauzy. V případě, že je současně s tím zobrazeno i OSD, tak tam ke skrytí těch informací samozřejmě nedochází, to by bylo nelogické.
 
Citovat
@JiRo: tak som sa konečne dostal k tej úprave " Ikona přehrávaného titulu na Home stránce " a funguje to presne ako na tom screenshote, ako som to chcel, za mňa veľká vďaka.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)