• 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
Po čase studia skinu a úprav od @JiRo jsem si troufl na samostatné úpravy a tak jsem se rozhodl také pokračovat v tomto zajímavém tématu a hned zkraje do něj vkládám jeden delší dobu nevyřešený požadavek:

Zobrazení informace ve Full Screen

Tento požadavek se objevil na fóru už několikrát. Často šlo o možnost trvalého zobrazení času, nedávno se pak objevil zajímavý požadavek Vložení informací do obrazu.

Z logiky věci a základních principů GUI Kodi a jeho skinů je zřejmé, že místem pro vložení informací do full screen je soubor VideoFullScreen.xml. V případě tohoto souboru je však třeba postupovat poněkud jinak, než u většiny ostatních. Tento soubor je přímo navázán na Kodi Player, ale žádnou definici control bloku pro zobrazení full screen v něm nehledejte. Ta vazba je zajištěna přesně v opačném směru. Chceme-li tedy ve full screen zobrazit nějaké informace, musíme respektovat pravidla, podle kterých Kodi Palyer a GUI s definice ve VideoFullScreen.xml používá. Pravidlo pro všechny dodatečně umístěné definice zobrazení je to, že každý control blok musí mít definované Id s hodnotou 1.

Níže je uvedený příklad, kdy jsem do VideoFullScreen.xml vložil definici zkopírovanou z OSD overlay, která zajistí zobrazení aktuálního času, času ukončení přehrávání obsahu (je-li znám) a příznak stavu Mute, do které jsem ještě doplnil informaci o zbývajícím času do konce přehrávání. Nakonec jsme ještě přidal pro ilustraci i zobrazení RSS. Vypadá to pak takto:
[attachment=5116][attachment=5117]
Obsahu definice souboru je doplněn control blokem začínající řádkem <control type="group" id="1"> <!-- Easy/SC+ -->:

Kód:
<?xml version="1.0" encoding="utf-8"?>
<!-- Easy/SC* -->
<window>
    <defaultcontrol></defaultcontrol>
    <controls>
        <control type="group" id="0">
            <control type="label" id="10">
                <left>45</left>
                <top>15</top>
                <width>1770</width>
                <height>100</height>
                <label></label>
                <font>font12</font>
                <shadowcolor>black</shadowcolor>
            </control>
            <control type="label" id="11">
                <left>45</left>
                <top>45</top>
                <width>1770</width>
                <height>100</height>
                <label></label>
                <font>font12</font>
                <shadowcolor>black</shadowcolor>
            </control>
            <control type="label" id="12">
                <left>45</left>
                <top>75</top>
                <width>1770</width>
                <height>100</height>
                <label></label>
                <font>font12</font>
                <shadowcolor>black</shadowcolor>
            </control>
        </control>
        <control type="group" id="1"> <!-- Easy/SC+ -->
            <control type="group" id="1">
                <visible>!Window.IsVisible(extendedprogressdialog)</visible>
                <animation effect="fade" time="150">VisibleChange</animation>
                <control type="label" id="1">
                    <font>font_clock</font>
                    <shadowcolor>text_shadow</shadowcolor>
                    <top>0</top>
                    <right>20</right>
                    <height>200</height>
                    <width>600</width>
                    <align>right</align>
                    <label>$INFO[System.Time]</label>
                </control>
                <control type="grouplist" id="1">
                    <right>24</right>
                    <top>74</top>
                    <width>800</width>
                    <height>100</height>
                    <align>right</align>
                    <itemgap>5</itemgap>
                    <orientation>horizontal</orientation>
                    <usecontrolcoords>true</usecontrolcoords>
                    <control type="label" id="1">
                        <label>$INFO[Player.TimeRemaining(hh:mm),Zbývá: ]</label>
                        <shadowcolor>text_shadow</shadowcolor>
                        <height>100</height>
                        <width>auto</width>
                        <visible>!String.isempty(Player.TimeRemaining)</visible>
                        <visible>Player.HasVideo + ![Player.HasGame | VideoPlayer.HasEpg]</visible>
                    </control>
                    <control type="label" id="1">
                        <label>$INFO[Player.FinishTime,$LOCALIZE[31080]: ]</label>
                        <shadowcolor>text_shadow</shadowcolor>
                        <height>100</height>
                        <width>auto</width>
                        <visible>!String.isempty(Player.Duration)</visible>
                        <visible>Player.HasVideo + ![Player.HasGame | VideoPlayer.HasEpg]</visible>
                    </control>
                    <control type="label" id="1">
                        <label>$INFO[PVR.EpgEventRemainingTime(hh:mm),Zbývá: ]</label>
                        <shadowcolor>text_shadow</shadowcolor>
                        <height>100</height>
                        <width>auto</width>
                        <visible>VideoPlayer.HasEpg</visible>
                    </control>
                    <control type="label" id="1">
                        <label>$INFO[PVR.EpgEventFinishTime,$LOCALIZE[31080]: ]</label>
                        <shadowcolor>text_shadow</shadowcolor>
                        <height>100</height>
                        <width>auto</width>
                        <visible>VideoPlayer.HasEpg</visible>
                    </control>
                    <control type="image" id="1">
                        <top>2</top>
                        <left>0</left>
                        <width>60</width>
                        <height>40</height>
                        <fadetime>300</fadetime>
                        <aspectratio aligny="center" align="right">keep</aspectratio>
                        <texture>dialogs/volume/mute.png</texture>
                        <visible>Player.Muted</visible>
                    </control>
                </control>
                <control type="image" id="1">
                    <left>0</left>
                    <bottom>0</bottom>
                    <width>110%</width>
                    <height>100</height>
                    <texture flipy="true">frame/InfoBar.png</texture>
                </control>
                <control type="group" id="1">
                    <depth>DepthBars</depth>
                    <bottom>0</bottom>
                    <height>30</height>
                    <aligny>top</aligny>
                    <animation effect="fade" start="0" end="100" time="300" delay="300">WindowOpen</animation>
                    <animation effect="fade" start="100" end="0" time="200">WindowClose</animation>
                    <control type="rss" id="1">
                        <animation effect="slide" end="0,90" time="300" tween="sine" easing="inout" condition="$EXP[infodialog_active]">conditional</animation>
                        <left>0</left>
                        <bottom>0</bottom>
                        <height>39</height>
                        <width>100%</width>
                        <font>font12</font>
                        <urlset>1</urlset>
                        <hitrect x="-100" y="0" w="1" h="1" />
                        <titlecolor>button_focus</titlecolor>
                        <textcolor>button_focus</textcolor>
                        <shadowcolor>text_shadow</shadowcolor>
                        <headlinecolor>FFC0C0C0</headlinecolor>
                        <animation effect="fade" time="300">VisibleChange</animation>
                    </control>
                </control>
            </control>
        </control>
        <control type="group" id="1">
            <depth>DepthOSD+</depth>
            <visible>Player.Caching + Integer.IsGreater(Player.CacheLevel,0)</visible>
            <animation effect="fade" delay="300" time="200">Visible</animation>
            <animation effect="fade" delay="200" time="150">Hidden</animation>
            <centerleft>50%</centerleft>
            <width>110</width>
            <centertop>50%</centertop>
            <height>110</height>
            <control type="image" id="1">
                <centerleft>50%</centerleft>
                <centertop>50%</centertop>
                <width>110</width>
                <height>110</height>
                <texture colordiffuse="BFFFFFFF">osd/buffer-bg.png</texture>
            </control>
            <control type="image" id="1">
                <centerleft>50%</centerleft>
                <centertop>50%</centertop>
                <width>92</width>
                <height>92</height>
                <texture>dialogs/extendedprogress/loading-back.png</texture>
            </control>
            <control type="image" id="1">
                <centerleft>50%</centerleft>
                <centertop>50%</centertop>
                <width>92</width>
                <height>92</height>
                <texture colordiffuse="button_focus">$INFO[Player.CacheLevel,dialogs/volume/progress/p,.png]</texture>
            </control>
            <control type="label" id="1">
                <description>buffering value</description>
                <label>$INFO[Player.CacheLevel]</label>
                <centerleft>50%</centerleft>
                <centertop>50%</centertop>
                <width>200</width>
                <height>200</height>
                <aligny>center</aligny>
                <align>center</align>
                <font>font13</font>
            </control>
        </control>
    </controls>
</window>

Pozn. Komentáře <!-- Easy/SC+ --> zavedl zakladatel tématu, @JiRo. Easy znamená, že je to úprava Easy modifikace základního vzhledu (to je privátní modifikace) SC označuje, že je to modifikace použitá (nebo použitá bude) ve Stream-Cinema.

Co se týče obsahu z hlediska zatížení CPU, tak zobrazení RSS klade na CPU vyšší nároky. Takže ho doporučuji používat pouze u HW s odpovídajícím výkonem.

Úpravu vyžadovanou ve výše uvedeném odkazu Vložení informací do obrazu popíši někdy příště...
 
Citovat
Už ani nespočítám, kolikrát se mě někdo zeptal, zda je možné na Home stránce zobrazit informaci o addons čekajících na aktualizaci. Zdálo by se to na první pohled jednoduché, ale není tomu tak. Kodi žádnou položku "addon čekají na aktualizaci" nemá a k počtu takových addon je třeba se dostat trikem. Dělají to tak všechny skiny, samozřejmě tedy i Estuary. Pokaždé, když je třeba počet čekajících addon zobrazit, musí se spustit interní funkce AddonBrowseru, který seznam čekajících addon vytvoří a teprve od délky seznamu se dá určit, kolik addons na aktualizaci čeká. Nepříjemné je, že vytvoření seznamu je činnost, kterou Kodi řadí až někam na konec všech posloupností, které provádí po restartu nebo po novém načtení skinu. Proto se hodnota počtu čekajících addon zobrazuje až s jistou prodlevou. ale to by zas tak vadit nemuselo, pozdě ale přece, se říká.

Jak to celé funguje. Oním výše zmiňovaným trikem je vytvoření seznamu čekajících addons. To je ve standardním Estuary uloženo v definičním souboru pro zobrazení AddonLauncher. Je to uživatelský definované okno, proto ho najdete v souboru Custom_1100_AddonLauncher.xml. V tomto souboru je také třeba hledat onen špinavý trik. Je jím to vytvoření fake seznamu mimo viditelnou plochu. Cílem tohoto kroku je získat container obsahující seznam čekajících addons. Příslušnou sekvenci najdete až na konci definičního souboru. Všimněte si řádku <left>-10000</left>, které zobrazení seznamu posílá daleko od levého okraje plochy. Mimochodem, takový elementů máte v každém skinu mimo vaše zorné pole zobrazeno celou řadu. Je to často používaný postup:
Kód:
            <control type="group">
                <left>-10000</left>
                <include content="InfoList">
                    <param name="path" value="addons://outdated/" />
                    <param name="bottom" value="1" />
                    <param name="width" value="1" />
                    <param name="list_id" value="8000" />
                    <param name="item_label" value="" />
                </include>
            </control>
Dalším trikem, tentokrát už ne tak špinavým, ale poměrně obvyklým, je výpočet, definovaný v obvyklých Variables.xml, konkrétně tato část - je to standardní obsah Estuary, ten doplňovat nemusíte, uvádím ho jen jako ilustraci pro pochopení toho, jak to celé fungujke):
Kód:
    <variable name="AddonCountLabel">
        <value condition="Integer.IsGreater(Container(8000).NumItems,10)">&gt;9</value>
        <value condition="Integer.IsGreater(Container(8000).NumItems,9)">9</value>
        <value condition="Integer.IsGreater(Container(8000).NumItems,8)">8</value>
        <value condition="Integer.IsGreater(Container(8000).NumItems,7)">7</value>
        <value condition="Integer.IsGreater(Container(8000).NumItems,6)">6</value>
        <value condition="Integer.IsGreater(Container(8000).NumItems,5)">5</value>
        <value condition="Integer.IsGreater(Container(8000).NumItems,4)">4</value>
        <value condition="Integer.IsGreater(Container(8000).NumItems,3)">3</value>
        <value condition="Integer.IsGreater(Container(8000).NumItems,2)">2</value>
        <value condition="Integer.IsGreater(Container(8000).NumItems,0)">1</value>
        <value>[COLOR grey]0[/COLOR]</value>
    </variable>
Zdálo by se tedy, že použití vypočítané proměnné AddonCountLabel kdekoliv, tedy i na Home stránce, nic nebrání. Chyba! Problémem je, že onen fake seznam se vytváří pouze v okamžiku, když jste na stránce AddonLauncheru. Pomoc je snadná. Stačí definici fake seznamu vložit tam, kde ho potřebujeme. Zdálo by se, že by stačila Home stránka, ale to je omyl. My tu hodnotu potřebujeme v záhlaví, které je zobrazeno nejen na Home stránkce, ale na úvodních stránkách každé další funkce hlavního seznamu. Definici záhlaví najdeme v souboru Includes.xml. Je to mimochodem stejné místo, do kterého později umístíme i vlastní zobrazení čekajících addon.

Jaký je tedy další postup? Přesunout definici fake záznamu do Includes.xml, konkrétně do definici includes TopBar. Třeba takto:
Kód:
    <include name="TopBar"> <!-- Easy/SC* Top Bar Info -->
        <param name="sublabel">$INFO[Container.SortMethod,$LOCALIZE[31022]: ,  ∙  ]$INFO[Container.CurrentItem,, / ]$INFO[Container.NumItems]</param>
        <definition>
            <control type="group">
                <animation effect="slide" end="0,-112" time="300" tween="sine" easing="inout" condition="$EXP[infodialog_active]">conditional</animation>
                <depth>DepthBars</depth>
                <animation effect="fade" start="0" end="100" time="300" condition="[Window.Previous(fullscreenvideo) | Window.Previous(startup)] + !Window.IsVisible(1109)">WindowOpen</animation>
                <control type="group"> <!-- Easy/SC+ -->
                    <left>-10000</left>
                    <include content="InfoList">
                        <param name="path" value="addons://outdated/" />
                        <param name="bottom" value="1" />
                        <param name="width" value="1" />
                        <param name="list_id" value="8000" />
                        <param name="item_label" value="" />
                    </include>
                </control>
Důležitá poznámka. Musíte pochopitelně onu definici v původním umístění (tedy Custom_1100_AddonLauncher.xml) smazat (či lépe zakomentovat).

No a pak už následuje ona obvyklá třešnička na dortu. Umístit do stejného include, ale do jiné části, vlastní definici zobrazení. Já jsme si pro něj zvolil tradiční druhý řádek, pro který definice může vypadat například takto:
Kód:
                    <control type="image"> <!-- Easy/SC+ Addons update info -->
                        <top>14</top>
                        <width>24</width>
                        <height>24</height>
                        <fadetime>300</fadetime>
                        <aspectratio aligny="center" align="center">keep</aspectratio>
                        <colordiffuse>red</colordiffuse>
                        <texture>icons/submenu/updatelibrary.png</texture>
                        <visible>Integer.IsGreater(Container(8000).NumItems,0)</visible>
                    </control>
                    <control type="label"> <!-- Easy/SC+ Addons update info -->
                        <height>50</height>
                        <width>auto</width>
                        <aligny>center</aligny>
                        <font>font_flag</font>
                        <textcolor>red</textcolor>
                        <label>$VAR[AddonCountLabel]</label>
                        <visible>Integer.IsGreater(Container(8000).NumItems,0)</visible>
                    </control>
Logika zobrazení je takové, že pokud je počet čekajících addons =0, nezobrazuje se nic, pokud je > 0, zobrazí se příznak "stahování" a za ním počet čekajících addon. Je-li počet větší jak 10, zobrazí se ">9" Pokud vše provedete správně, může to pak vypadat třeba nějak takto:
[attachment=5189]
Celé to má (kromě dlouhé odezvy na aktualizaci seznamu po restartu nebo novém načtení skinu) jednu chybu. Pokud najedete v hlavní seznam na položku Doplňky (Addons) nebo na jejich widget, tak se v položce délky onoho fake seznamu objeví 0 a zobrazení zmizí. Ale to pokládám za drobnou patálii, kterou brzy vyřeším.
 
Citovat
Od uživatele @alar přišel požadavek na zobrazení žánru v seznamu filmů/seriálů. Já jsme mu na to odpověděl takto https://www.xbmc-kodi.cz/prispevek-estua...9#pid66819, a tak tady ukážu jak by se to dalo řešit.

1. možností je integrace přímo do vlastního seznamu. Už před tím jsme vyslovil obavu, že tam bude málo místa a to se ukázalo jako oprávněné. prosté přidání na konec názvu (případě jazy a rok u Steram-Cinema), velmi často žánry zmizí celé nebo částečně za pravým okrajem a je třeba počkat, až text v řádku odroluje. Zkusil jsme tedy druhou varintu a přidal před zobrazení žánru odřádkování. To už je z praktického hlediska asi vyhovující, ale esteticky...? Posuďte sami. Obě varianty pak mohou vypadat například takto:
[attachment=5201][attachment=5202]
Jak na to?Definice pro zbrazení Seznam, je uložená v souboru View_50_List.xml. /prava je velmi jednoduché, provede se v definici zobrazení názvu, které se doplní zobrazením žánru. Obě varianty /s a bez odřádkování se od sebe liší pouze znakem [CR] v druhé varinatě a oddělením " - ". Edituje se definice zobrazení label v seznamu <control type="fixedlist" id="$PARAM[list_id]">, ve dvou místech. První pro focusedlayout a druhé pro itemlayout. Definice je pro obě místa shodná a ta původní vypadá takto:
Kód:
                    <control type="label">
                        <left>70</left>
                        <right>70</right>
                        <top>0</top>
                        <bottom>0</bottom>
                        <aligny>center</aligny>
                        <scroll>true</scroll>
                        <font>font27</font>
                        <label>$INFO[ListItem.Label]</label>
                        <shadowcolor>text_shadow</shadowcolor>
                    </control>
Pro první variantu pak upravená definice vypadá takto:
Kód:
                    <control type="label"> <!-- Easy/SC* -->
                        <left>70</left>
                        <right>70</right>
                        <top>0</top>
                        <bottom>0</bottom>
                        <aligny>center</aligny>
                        <scroll>true</scroll>
                        <font>font27</font>
                        <label>$INFO[ListItem.Label]$INFO[ListItem.Genre, - [COLOR button_focus],[/COLOR]]</label>  <!-- Easy/SC* -->                        <shadowcolor>text_shadow</shadowcolor>
                    </control>
Pokud bude v této variantě obsah položky "žánr" u daného filmu prázdný, zobrazí se pouze název filmu (tedy i bez oddělovače " - ")

Pro druhou variantu 2 pak takto:
Kód:
                    <control type="label"> <!-- Easy/SC* -->
                        <left>70</left>
                        <right>70</right>
                        <top>0</top>
                        <bottom>0</bottom>
                        <aligny>center</aligny>
                        <scroll>true</scroll>
                        <font>font27</font>
                        <label>$INFO[ListItem.Label]</label>
                        <shadowcolor>text_shadow</shadowcolor>
                        <visible>![Container.Content(movies) | Container.Content(tvshows)] | String.IsEmpty(ListItem.Genre)</visible> <!-- Easy/SC+ -->
                    </control>
                    <control type="label"> <!-- Easy/SC+ -->
                        <left>70</left>
                        <right>70</right>
                        <top>2</top>
                        <bottom>0</bottom>
                        <scroll>true</scroll>
                        <font>font27</font>
                        <label>$INFO[ListItem.Label]</label>
                        <shadowcolor>text_shadow</shadowcolor>
                        <visible>[Container.Content(movies) | Container.Content(tvshows)] + !String.IsEmpty(ListItem.Genre)</visible>
                    </control>
                    <control type="label"> <!-- Easy/SC+ -->
                        <left>70</left>
                        <right>70</right>
                        <top>38</top>
                        <bottom>0</bottom>
                        <scroll>true</scroll>
                        <font>font27</font>
                        <label>$INFO[ListItem.Genre]</label>
                        <textcolor>button_focus</textcolor>
                        <shadowcolor>text_shadow</shadowcolor>
                        <visible>[Container.Content(movies) | Container.Content(tvshows)] + !String.IsEmpty(ListItem.Genre)</visible>
                    </control>
Pokud bude v této variantě obsah položky "žánr" u daného filmu prázdný, zobrazí se název vycentrovaný na jednom řádku. [EDIT] Proti původního návrhu jsem definici poněkud upravil, teď se název i žánr zobrazuje jako samostatný "label", takže se text v případě, že překročí zobrazenou šířku, posouvá u obou položek nezávisle na sobě.
 
2. možností je vložit název žánru do levé části obrazovky, mezi název filmu a jeho popis. Tedy nějak podobně, jako je to u info widgetů skinu Estuary Stream-Cinema. Tuto variantu jsme ještě neodzkoušel, protože bude časově náročnější. Má nevýhodu v tom, že je jsou ní vidět žánry pouze aktuálně vybraného filmu. Výhodou pak je, že sjednocuje zobrazení s widgety, což asi také není na škodu. Jen pro ilustraci, jak to zobrazení info u widgteů vypadá:
[attachment=5205]
Popis tohoto řešení doplním později, je poněkud komplikovanější...
 
Citovat
@Client Díky! Damo za druhá možnost je přesně to, co jsem si představoval, i když druhá varianta 1. možnosti taky není špatná, možná nejlepší pro získání velmi rychlého přehledu, velmi ergonomické (vyplnění nevyužitého prostoru, i barva je dobrá a nepřekáží přehlednosti, důraz je stále na název, super) Tedy mně osobně by stačilo říct, kde co jak upravit (mám Coreelec), a počítám s tím, že po aktualizaci se to přepíše, proto plánuju i skript, který to pak po aktualizaci znovu automaticky upraví po spuštění toho skriptu.
 
Citovat
@alar Tak zatím jen ta první možnost, doplnil jsme popis do mého předchozího postu. Ta je celkem jednoduchá a rychlá. Ta druhá možnost je komplikovanější, jsou v tom nějaké dopočty a tak, takže si to musím pořádně rozmyslet. Ono to na první pohled vypadá jednoduše a asi by to nějak slepit šlo, ale pak by se třeba stalo, že by se to negativně mohlo projevit někde jinde v nějakém jiném zobrazení. Takže je to třeba nejdříve rozplést, co a jak na čem závisí a co se kde používá a teprve pak se pustit do úprav. Dneska to už nedám...

Když jsi tak hezky zhodnotil ty návrhy 1. možnosti a druhé varianty z ergonomického hlediska, měl bych možná drobné zlepšení. U vybraného titulu se název žánru poněkud ztrácí. Možná by tam bylo lepší ten text v tomto případě změnit na kontrastnější. Změna bude tedy pouze v definici pro focusedlayoout [EDIT] a pouze v poslední ze třech bloků label, kde se vyhodí to podbarvení textu a ten pak bude default, tedy bílý:

Kód:
                   ...
                   <control type="label"> <!-- Easy/SC+ -->
                       <left>70</left>
                       <right>70</right>
                       <top>38</top>
                       <bottom>0</bottom>
                       <scroll>true</scroll>
                       <font>font27</font>
                       <label>$INFO[ListItem.Genre]</label>
                       <shadowcolor>text_shadow</shadowcolor>
                       <visible>[Container.Content(movies) | Container.Content(tvshows)] + !String.IsEmpty(ListItem.Genre)</visible>
                   </control>
 
Citovat
@Client Vše vyřešno, je tu jen malý/velký problém: Když je žánr moc dlouhý, tak se názvy opakují neustále za sebou dle velikosti názvů, ne dle velikosti toho delšíhjo textu z názvu a žánru, takže to vypadá hrozně, když je žánr useknutý. Zkus skrollovat, určitě se ti to taky stane, je to docela ošklivý. Asi by to chtělo nějak upravit pravidlo délky dle toho delšího.
 
Citovat
@alar Ano, toho jsem si taky všiml. Udělal jsem to rychle a jednoduše, na úkor dalších důsledků, které jsem si neuvědomil. Toto je jeden z nich. Úprava bude možná, ale bude o něco složitější. Pokusím se o to.
 
Citovat
@Client asi by stačilo nastavit max. délku u žánrů. Určitě by nevadilo, že ty poslední žánry nebudou vidět, jsou taky nejméně důležité ... abys to nemusel tak složitě řešit. Ale nechám to na tobě samo, pokud jsi perfekcionista :) ale provizorně by to stačilo
 
Citovat
@alar Nejde o perfekcionismus 1, ale o to, že to jednoduše prostě upravit nejde. Takže jsme to přepsal, jsou to teď místo jednoho bloku bloky tři. Teď už to funguje správně, název i žánr jsou definované zvlášť a každé se posunuje taky zvlášť (je-li to třeba). Navíc to má výhodu v tom, že se to zobrazuje pouze u filmů a seriálů, ne u sérií (sezon), kde to je podle mne zbytečné, protože to stejně přebírá žánr z celého seriálu, takže je to u všech sérií stejné. Také to umožnilo ty dva řádky šoupnout blíže k sobě, takže je teď ten seznam přehlednější. Je samozřejmě zachované to, že pokud je položka žánr prázdná, přepne se to do zobrazení vycentrovaného řádku s názvem. Upravil jsme to v obou předchozích postech.

Jo a ještě něco. Byl jsem k tvému požadavku ze začátku skeptický, ale čím dál více se mi líbí tak, že si to takhle nechám i na svém Kodi. I ostatní členové domácnosti to přivítali jako dobrý nápad.
 
Citovat
@Client jde o skvělý perfekcionismus, a to se vyplatí v životě :-D Taky jsem si říkal u těch sezón seriálů, ale nechtěl jsem tě otravovat :) Každopádně super. Mohl bys sem hodit na tuto verzi celý návod zvlášť prosím?

Ano ano, tohle jsem nepochopil, jak mohli v Kodi pominout tak důležitou věc pro přehlednost ohledně filmů či seriálů :)
 
Citovat
@alar Je to popsané v těch dvou původních postech, kde jsem tu úpravu vyměnil za novou verzi.
 
Citovat
@Client Takže ty tři labely z prvního postu nahradím původní jeden label a z 2. postu vyměním opět jeden label za původní jeden label?
 
Citovat
@alar Ano, přesně tak. Uznávám, že to není příliš "popisné", ale nechtěl jsem znova přidávat další posty. U toho druhého postu se to týká jen toho posledního labelu. V podstatě jen vyhodíš řádek v definici pro focusedlayoout <textcolor>button_focus</textcolor>, který definuje barvu textu žánru u vybrané položky, takže text pak bude mít default barvu, což je bílá.

Já to mám tak, že vymyslet nějakou úpravu je pro mne mnohdy jednodušší, než to pak nějak smysluplně popsat. 10
 
Citovat
@Client vyhoď ostatní varianty a bude to mnohem lepší, nechal bych jen tu jednu promakanou, která je jasně nejlepší, tím se zjednoduší a zpřehlední i popis ... i sepisování manuálů, volba řešení či i nějaký ten design jsou části mé práce :)
 
Citovat
smazat
 
Citovat
@Client mám CoreELEC tedy Kodi 18 Leia verze Estuary stream-cinema a zkusil jsem tvojí úpravu na zobrazení žánru v seznamu filmů a funguje super.Akorát já spíš používám zobrazení "plakát" tak jsem to podobně zkusil upravit tam.Nevím jestli jsem to sice nacpal do přesného řádku,ale pracuje to jak má.Takže kdyby někdo chtěl....Barvu sem dal žlutou ať je víc vidět,ale každý si může dát jakou chce


Zobrazení žánru v seznamu filmů/seriálů-pouze pro zobrazení v režimu "Plakát"

-------------------------------------------------------------------------------------------------

Je uložená v souboru "View_50_Poster.xml"



Edituje se definice zobrazení label v seznamu:
<control type="fixedlist" id="51">  na konci což znamená po  </control>  :

Kód:
<control type="label"> <!-- Easy/SC+ -->
                       <left>400</left>
                       <right>-800</right>
                       <top>472</top>
                       <bottom>0</bottom>
                       <scroll>true</scroll>
                       <font>font30</font>
                       <label>$INFO[ListItem.Genre]</label>
                       <textcolor>yellow</textcolor>
                       <visible>[Container.Content(movies) | Container.Content(tvshows)] + !String.IsEmpty(ListItem.Genre)</visible>
                   </control>
Ještě by mě zajímalo jestli by se nedal přidat "scraper ratring" do zobrazení v režimu "Posuv".V tom jediném není.Díky


Přiložené soubory Miniatury
   
 
Citovat
@poool Tak přidat jde téměř cokoliv a většinou i kamkoliv. Je to jen otázka, najít si ten čas. Dnes už ne, ale zkusím se na to někdy jindy mrknout.
 
Citovat
Jasně,předem díky
 
Citovat
@poool Tak si to vyzkoušej... 6  

Scraper rating v zobrazení typu Posun (Shift)

Edituje se soubor View_53_Shift.xml. Přidá se definice zobrazení do <control type="fixedlist" id="53">, opět ve dvou místech. První pro focusedlayout a druhé pro itemlayout. Definice je pro obě místa shodná a může se umístit v podstatě kamkoliv:
Kód:
                        <control type="group"> <!-- Easy+ -->
                            <left>160</left>
                            <top>90</top>
                            <include condition="Skin.HasSetting(circle_rating) | Skin.HasSetting(circle_userrating)">RatingCircle</include>
                        </control>
Pro jistotu uvedu příklad, ve které jsem tu definici umístil vždy až na konec focusedlayout a itemlayout sekce:
Kód:
                <control type="fixedlist" id="53">
                    <left>-150</left>
                    <top>0</top>
                    <width>111%</width>
                    <height>695</height>
                    <focusposition>1</focusposition>
                    <movement>0</movement>
                    <pagecontrol>5199</pagecontrol>
                    <scrolltime tween="cubic" easing="out">500</scrolltime>
                    <orientation>horizontal</orientation>
                    <visible>Container.Content(movies) | Container.Content(sets) | Container.Content(tvshows) | Container.Content(seasons) | Container.Content(musicvideos) | Container.Content(artists) | Container.Content(albums) | Container.Content(mixed) | Container.Content(images) | Container.Content(videos) | Container.Content(games)</visible>
                    <onleft>53</onleft>
                    <onup>9000</onup>
                    <ondown>5199</ondown>
                    <onright>53</onright>
                    <preloaditems>1</preloaditems>
                    <viewtype label="31100">icon</viewtype>
                    <itemlayout width="370">
                        <control type="image">
                            <depth>DepthContentPopout</depth>
                            <left>0</left>
                            <top>90</top>
                            <width>370</width>
                            <height>480</height>
                            <aspectratio aligny="center">keep</aspectratio>
                            <texture fallback="DefaultVideo.png">$VAR[ShiftThumbVar]</texture>
                            <bordertexture border="21">overlays/shadow.png</bordertexture>
                            <bordersize>20</bordersize>
                        </control>
                        <control type="textbox">
                            <left>20</left>
                            <top>603</top>
                            <width>330</width>
                            <height>105</height>
                            <align>center</align>
                            <aligny>center</aligny>
                            <label>$INFO[ListItem.Label]</label>
                        </control>
                        <control type="image">
                            <left>169</left>
                            <top>560</top>
                            <width>32</width>
                            <height>32</height>
                            <texture>$VAR[WallWatchedIconVar]</texture>
                        </control>
                        <control type="group"> <!-- Easy+ -->
                            <left>160</left>
                            <top>90</top>
                            <include condition="Skin.HasSetting(circle_rating) | Skin.HasSetting(circle_userrating)">RatingCircle</include>
                        </control>
                    </itemlayout>
                    <focusedlayout width="370">
                        <control type="image">
                            <depth>DepthContentPopout</depth>
                            <left>0</left>
                            <top>90</top>
                            <width>370</width>
                            <height>480</height>
                            <aspectratio aligny="center">keep</aspectratio>
                            <texture fallback="DefaultVideo.png">$VAR[ShiftThumbVar]</texture>
                            <bordertexture border="21">overlays/shadow.png</bordertexture>
                            <bordersize>20</bordersize>
                        </control>
                        <control type="textbox">
                            <left>20</left>
                            <top>603</top>
                            <width>330</width>
                            <height>105</height>
                            <align>center</align>
                            <aligny>center</aligny>
                            <label>$INFO[ListItem.Label]</label>
                            <autoscroll time="3000" delay="3000" repeat="3000">True</autoscroll>
                        </control>
                        <control type="image">
                            <left>169</left>
                            <top>560</top>
                            <width>32</width>
                            <height>32</height>
                            <texture>$VAR[WallWatchedIconVar]</texture>
                        </control>
                        <control type="group"> <!-- Easy+ -->
                            <left>160</left>
                            <top>90</top>
                            <include condition="Skin.HasSetting(circle_rating) | Skin.HasSetting(circle_userrating)">RatingCircle</include>
                        </control>
                    </focusedlayout>
                </control>
 
Citovat
@ Client - pokusil jsem se aplikovat zobrazení žánrů do Estuary SC (KODI 17.6). Zvolil jsem si 2. variantu 1. možnosti - ty máš v náhledovém obrázku vidět žánry u všech položek, ale mně se zobrazí vždy jen na zvýrazněné položce, u ostatních je prázdné místo (snad jsem to popsal srozumitelně). Čím to může být?
SONY KDL-48W705C + X96MAX 4/64 - ANDROID 9, KODI 20
SONY KD-55XG8096 - ANDROID 8, KODI 18.9
RPi3B, RPiZERO (v šuplíku :-)
UPC 300/20, vše připojeno kabelem
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)