• 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
#1
Minimání nároky na HW a jednoduché funkce, to jsou nesporné výhody výchozího skinu Estuary. Nemožnost modifikovat jeho základní menu jsem obešel jeho drobnou úpravou. Vím, není to úplně ten nešťastnější způsob, ale to v tomto vlákně nechci řešit. Abych si práci na úpravách zjednodušil, vytvořil jsem si kopii skinu, kterou jsme nazval Estuary Easy.
[attachment=2350]
Easy proto, že chci na příkladu mých úprav dát odpovědi na často kladené otázky, jak na to? Nemám v úmyslu Estuary Easy distribuovat a udržovat ho trvale aktuální. Spíše na jeho příkladu popíšu základní strukturu výchozího skinu a postupně odpovím na otázky:
  • Jak do záhlaví přidat datum a den v týdnu?
  • Jak změnit pořadí položek hlavního menu?
  • Jak přidat do hlavního menu novou položku?
  • Jak vytvořit nebo změnit widget zobrazující se při najetí na položku hlavního menu?
  • ...
Nevylučuji, ani odpovědi na otázky další, tedy pokud o ně bude zájem.

Při svých zásazích dodržuji (snažím se dodržovat) několik pravidel:
  • Každá změna je označena komentářem.
  • Je-li to možné a účelné, před změnou nějaké funkce vytvořím její kopii, přejmenuji ji a teprve potom ji edituji. Zůstává tak možnost použit jak původní, tak novou funkci.
  • Je-li to možné a účelné, každou novou funkci opatřím příznakem (povolit/zakázat), který je možné v nastavení skinu měnit.
  • Protože nepočítám s veřejnou distribucí a trvalým udržováním, veškeré texty (názvy, nápisy, apod) píšu česky rovnou do kódu. Možná někdy později tuto část upravím podle standardů Kodi. 
V současné verzi jsou tedy dispozici:

Nové informace v záhlaví
[attachment=2351]
Kromě už existujících informací - příznak spuštěného časovače vypnutí, teploty a ikony počasí jsme přidal:
  • příznak rozdílu verzí Estuary a Estuary Easy - verze Estuary Easy čísluji stejně jako verze Estuary a trvale je porovnávám. Po upgrade Estuary, kdy se zobrazí příznak do kruhu stočené šipky, tak okamžitě vím, že k němu došlo
  • příznak budoucího nahrávání - existuje alespoň jedno budoucí nahrávání - ikona hodin
  • příznak probíhajícího nahrávání - příznak, že právě probíhá alespoň jedno nahrávání - "red point"
  • zobrazení obsazení disku pro nahrávání
  • datum a den v týdnu
Nahrávky
[attachment=2352]
Umožňuje přístup přístup k TV nahrávkám z vlastní položky menu, je zde i mírně upravený widget - vzniklo jako kopie z Televize.

Online
[attachment=2353]
Jiné označení pro Video doplňky s přístupem z vlastní položky menu. Widget zobrazuje instalované video doplňky, které jsou seřazené podle toho, jak byly naposledy použity (tzn. ty nejčastěji používané se zobrazují vždy vpředu).

Radio
[attachment=2354]
Do widgetu přidána sekce s odkazy na hudební doplňky, kde mám vesměs pouze internetová radia.

Nastavení Kodi a Nastavení skinu
[attachment=2355][attachment=2356][attachment=2357]
Přeskládal jsem menu Nastavení a do podmenu Nastavení skinu jsme přidal možnost výběru (povolit/zakázat) nových funkcí.

Bude-li tedy zájem, postupně tedy v tomto fóru odpovím na otázky, které jsem uvedl výše. Případně na otázky další. Hledejte téma začínající Estuary Skin...
 
Citovat
#2
Nezkusil jsem (zatím), protože ze zvyku Confluence, ale za mne všechny 4 palce nahoru!!! [Obrázek: 3005.gif]
Kodi 20 -LibreELEC/LinuxMint/Win/Android -RPi4/3/2/ IntelPC/xMiStick4K -Router 1Gbit 2.4+5GHz
 
Citovat
#3
Thumbs Up 
main favorites skin ;) no. 1
 
Citovat
#4
Musím uznat že to máš pěkně vychytané, sice provedené úpravy prozatím nevyužiji, každopádně dávám +1 za sdílení tvé práce  Thumbup .
RPi 4B - LibreELEC
RPi Zero W - LibreELEC
 
Citovat
#5
Jak udělat přidání názvu + roku + hodnocení (někam dolu) - po najetí na plakát filmu ve widgetu ???? a bonus levý sloupec s obsahem filmu ....

Nějak takto:
[Obrázek: ZwpGsqsLSkRpj1nkCBBL-HMkb1oD_Sz9rOQ19XpR...87-h780-no]

ještě bych udělal větší opacity(ale to umím)1
 
Citovat
#6
@otava5 Udělat to lze, zatím jsem to slepil jen tak narychlo, výsledek je vidět zde:
[attachment=2360]
Myslím, že je to to, co jsi chtěl, jen ještě hodnocení filmu chybí. Ale to je už maličkost.

Realizačně to ale není to žádá krása, v tomto směru je v Kodi hodně děr a některé funkce nepracují tak, jak by měly nebo jsou u nich nikde nepopsaná omezení. Nějak jsme to zatím obešel, ještě to bude chtít doladit a učesat...
 
Citovat
#7
Datum v záhlaví.

Edituje se soubor Includes.xml. Záhlaví, v terminologii Estuary skinu se označuje jako TopBar, je definováno v <include name="TopBar">.

Datum bude zobrazen ve dvou řádcích, v prvním je den (číslo s tečkou) a měsíc (název měsíce), ve druhém řádku název dne v týdnu.

Postup je následující:

1. Najděte definici pro zobrazení času:

Kód:
<control type="label">
<font>font_clock</font>
<shadowcolor>text_shadow</shadowcolor>
<height>200</height>
<width>auto</width>
<animation effect="fade" start="100" end="0" time="300" condition="Window.Next(screencalibration)">WindowClose</animation>
<label>$INFO[System.Time]</label>
</control>

2. Za definici vložte kód s definicí pro zobrazení data:

Kód:
<control type="label">
<font>font10</font>
<shadowcolor>text_shadow</shadowcolor>
<height>95</height>
<width>auto</width>
<aligny>center</aligny>
<animation effect="fade" start="100" end="0" time="300" condition="Window.Next(screencalibration)">WindowClose</animation>
<label>$INFO[System.Date(dd. MMM)][CR]$INFO[System.Date(DDD)]</label>
</control>


Nahrazení User Rating

Edituje se soubor Includes.xml. User Rating se zobrazuje uprostřed nahoře nebo dole u obrázku DVD obalu (posteru). Většinou ho uživatelé nepoužívají, ale velmi často by raději zobrazili Rating vložený do databáze scraperem (IMDb, TMDb, atp.). Uvedená úprava změní typ zobrazeného ratingu, která je definována v  <include name="UserRatingCircle">. Pokud není Rating definován (nebyl scraperem vložen do databáze), pak se nezobrazuje.

Úprava spočívá v editaci dvou výskytů jedné položky odkazující do databáze. Kód ListItem.UserRating se nahradí kódem ListItem.Rating.

Kód:
<include name="UserRatingCircle">
<param name="animation">False</param>
<definition>
<control type="group">
<visible>!String.IsEmpty(ListItem.Rating)</visible>
<animation effect="fade" time="0" condition="$PARAM[animation]">VisibleChange</animation>
<control type="image">
<left>3</left>
<top>-3</top>
<width>44</width>
<height>44</height>
<aspectratio>keep</aspectratio>
<texture colordiffuse="button_focus">overlays/badge.png</texture>
</control>
<control type="label">
<left>3</left>
<top>-3</top>
<align>center</align>
<aligny>center</aligny>
<width>44</width>
<height>44</height>
<font>font20_title</font>
<label>$INFO[ListItem.Rating]</label>
</control>
</control>
</definition>
</include>
 
Citovat
#8
User Rating dobrá vychytávka...dík
 
Citovat
#9
Widget Info

Rozšíření Estuary, které zajistí, že se při prohlížení seznamů Filmů nebo Seriálů na hlavní obrazovce zobrazí v levém sloupci, který překrývá hlavní menu, detail o právě vybraném filmu, kolekcí, seriálu nebo epizodě. Při realizaci jsme narazil na několik známých omezení, takže řešení není tak elegantní jak by mohlo být, ale funguje. A to je to hlavní.
[attachment=2383][attachment=2384][attachment=2385][attachment=2386]

Edituje se Includes_Home.xml, kde se přidá zcela nový widget s názvem WidgetInfo a Home.xml, kde se přidá animace pozadí pro WidgetInfo a výběr zobrazení podle zvoleného položky a předání parametrů právě pro WidgetInfo.

Postup je následující:

1. Do Includes_Home.xml přidáte na konec, tedy před poslední uzavírací tag </includes>,  kód WidgetInfo začínající <include name="WidgetInfo">:

Kód:
    <include name="WidgetInfo"> <!-- Easy+ Selected Item Info -->
        <param name="episode">false</param>
        <definition>
            <control type="grouplist">
                <left>10</left>
                <top>100</top>
                <bottom>40</bottom>
                <visible>Control.HasFocus($PARAM[container_id])</visible>
                <control type="textbox">
                    <height>100</height>
                    <width>442</width>
                    <aligny>center</aligny>
                    <scroll>true</scroll>
                    <font>font36_title</font>
                    <label>$INFO[Container($PARAM[container_id]).ListItem.Label]</label>
                    <shadowcolor>text_shadow</shadowcolor>
                    <autoscroll delay="5000" time="1500" repeat="5000">Skin.HasSetting(autoscroll)</autoscroll>
                    <visible>!$PARAM[episode]</visible>
                </control>
                <control type="textbox">
                    <height>100</height>
                    <width>442</width>
                    <aligny>center</aligny>
                    <font>font36_title</font>
                    <label>$INFO[Container($PARAM[container_id]).ListItem.TVShowTitle] $INFO[Container($PARAM[container_id]).ListItem.Label]</label>
                    <shadowcolor>text_shadow</shadowcolor>
                    <autoscroll delay="5000" time="1500" repeat="5000">Skin.HasSetting(autoscroll)</autoscroll>
                    <visible>$PARAM[episode]</visible>
                </control>
                <control type="label">
                    <height>50</height>
                    <width>442</width>
                    <aligny>center</aligny>
                    <font>font37</font>
                    <label color=grey>($INFO[Container($PARAM[container_id]).ListItem.Year])</label>
                    <shadowcolor>text_shadow</shadowcolor>
                    <visible>!String.IsEmpty(Container($PARAM[container_id]).ListItem.Year) + !Container($PARAM[container_id]).ListItem.IsCollection</visible>
                </control>
                <control type="image">
                    <height>320</height>
                    <width>442</width>
                    <aspectratio aligny="center" align="left">keep</aspectratio>
                    <texture background="true">$INFO[Container($PARAM[container_id]).ListItem.Art(fanart)]</texture>
                    <visible>!String.IsEmpty(Container($PARAM[container_id]).ListItem.Art(fanart))</visible>
                </control>
                <control type="textbox">
                    <height>450</height>
                    <width>442</width>
                    <label>$INFO[Container($PARAM[container_id]).ListItem.Tagline,[I],[/I][CR][CR]]$INFO[Container($PARAM[container_id]).ListItem.Plot][CR][CR]</label>
                    <shadowcolor>text_shadow</shadowcolor>
¨                    <autoscroll delay="10000" time="3000" repeat="10000">Skin.HasSetting(autoscroll)</autoscroll>
                    <visible>!Container($PARAM[container_id]).ListItem.IsCollection</visible>
                </control>
                <control type="panel">
                    <height>490</height>
                    <width>442</width>
                    <orientation>vertical</orientation>
                    <autoscroll delay="10000" time="3000" repeat="10000">Skin.HasSetting(autoscroll)</autoscroll>
                    <visible>Container($PARAM[container_id]).ListItem.IsCollection</visible>
                    <focusedlayout height="40" width="442">
                        <control type="label">
                            <label>$INFO[ListItem.Year,[color=#000000],[/color]  -  ]$INFO[ListItem.Label]</label>
                            <shadowcolor>text_shadow</shadowcolor>
                        </control>
                    </focusedlayout>
                    <itemlayout height="40" width="442">
                        <control type="label">
                            <label>$INFO[ListItem.Year,[color=#000000],[/color]  -  ]$INFO[ListItem.Label]</label>
                            <shadowcolor>text_shadow</shadowcolor>
                        </control>
                    </itemlayout>
                    <content sortby="year" sortorder="descending">$INFO[Container($PARAM[container_id]).ListItem.FolderPath]</content>
                </control>
            </control>
        </definition>
    </include>

2. Do Home.xml přidáte za níže uvedenou sekvenci kódu:

Kód:
                    <include content="IconButton">
                        <param name="control_id" value="803" />
                        <param name="onclick" value="Fullscreen" />
                        <param name="icon" value="icons/now-playing/fullscreen.png" />
                        <param name="label" value="$LOCALIZE[31000]" />
                        <param name="visible" value="Player.HasMedia" />
                    </include>
                </control>
            </control>

novou část kódu, začínající <control type="group">:

Kód:
            <control type="group">
                <visible>Control.HasFocus(5100) | Control.HasFocus(5200) | Control.HasFocus(5300) | Control.HasFocus(5400) | Control.HasFocus(5600) | Control.HasFocus(6100) | Control.HasFocus(6200) | Control.HasFocus(6300)</visible>
                <animation type="Visible">
                    <effect type="fade" start="0" end="100" time="300" tween="sine" easing="out" />
                    <effect type="slide" start="-320" end="0" time="400" tween="cubic" easing="out" />
                </animation>
                <animation type="Hidden">
                    <effect type="fade" start="100" end="0" time="300" tween="sine" easing="out" />
                    <effect type="slide" start="0" end="-320" time="300" tween="cubic" easing="out" />
                </animation>
                <left>0</left>
                <top>0</top>
                <control type="image">
                    <width>462</width>
                    <bottom>0</bottom>
                    <texture>colors/black.png</texture>
                </control>
                <include content="WidgetInfo">
                    <param name="container_id" value="5100" />
                </include>
                <include content="WidgetInfo">
                    <param name="container_id" value="5200" />
                </include>
                <include content="WidgetInfo">
                    <param name="container_id" value="5300" />
                </include>
                <include content="WidgetInfo">
                    <param name="container_id" value="5400" />
                </include>
                <include content="WidgetInfo">
                    <param name="container_id" value="5600" />
                </include>
                <include content="WidgetInfo">
                    <param name="container_id" value="6100" />
                </include>
                <include content="WidgetInfo">
                    <param name="container_id" value="6200" />
                    <param name="episode" value="true" />                
                </include>
                <include content="WidgetInfo">
                    <param name="container_id" value="6300" />
                </include>
            </control>
 
Citovat
#10
JiRo: Rozšíření funkční,ale nefunguje automatické posouvání děje u dělších popisů.... u kratších se to posune .... šlo by to spravit???
U toho hodnocení mám hvězdičku modrou jak jsi tam dostal jinou barvu....???
Díky
 
Citovat
#11
@otava5 Na ten posuv textu se podívám až večer doma, barvu u hodnocení změníš například na červenou takto:

1. původní kód

<texture colordiffuse="button_focus">overlays/badge.png</texture>

2. nový kód

<texture colordiffuse="red">overlays/badge.png</texture>
 
Citovat
#12
dotaz: mám položku "Televize" tu bych si rád zeditoval a udělal si tam své dva widgety na pravé straně, jenže je tam nějaká podmínka povolit nějakého pvr klienta. Lze tuto podmínku na pravé straně zrušit,abych nemusel povolovat pvr klienta??? Snad mi rozumíš....
 
Citovat
#13
@otava5 Jestli myslíš tuhle část, tak ano, tak tu je možné podle mne klidně zrušit celou.

<include content="ImageWidget" condition="!System.HasPVRAddon">
<param name="text_label" value="$LOCALIZE[31143]" />
<param name="button_label" value="$LOCALIZE[31144]" />
<param name="button_onclick" value="ActivateWindow(addonbrowser,addons://user/xbmc.pvrclient,return)"/>
<param name="button_id" value="12400"/>
<param name="button2_onclick" value="Skin.SetBool(HomeMenuNoTVButton)"/>
</include>
 
Citovat
#14
a koukal jsi na ten posuv?
 
Citovat
#15
@otava5 Posuv jsem opravil. Jen u kolekcí to nebude fungovat. Tam je použit pro zobrazení element, které posuv nemá.

Načti si znovu ten kód z původního příspěvku. Vyměnil jsem to tam.
 
Citovat
#16
super velké díky ... teď je to vymazlený skin 52
 
Citovat
#17
JiRo: jak zmenšit náhledy na pravé straně u položky oblíbené... nyní tam mám dva řádky ikon a chtěl bych tři aby se tam vešli....
dík
 
Citovat
#18
Widget pro Oblíbené (Favorites) "5 položek na řádek"

Rozšíření Estuary, které se ve widgetu umožní zobrazení 5 položek na řádek. Použití - např. widget pro Oblíbené (Favorites) nebo widgety pro doplňky, apod. V původním řešení se pro zobrazení používá definice z View_54_InfoWall.xml, typ zobrazení Info Wall (v českém překladu Zeď Informací). přímá úprava tohoto kódu by ovlivnila celou řadu dalších zobrazení, proto jsem vytvořil nový widget, umístěný v Includes_Home.xml. Jeho použití ukážu právě na příkladu úpravy widgetu pro Oblíbené (Favorites).

Edituje se Includes_Home.xml, kde se přidá zcela nový widget s názvem WidgetWallItem a Home.xml, kde se drobně upraví parametry widgetu pro Oblíbené (Favorites).

Postup je následující:

1. Do Includes_Home.xml přidáte na konec, tedy před poslední uzavírací tag </includes>,  kód WidgetWallItem začínající <include name="WidgetWallItem">:

Kód:
    <include name="WidgetWallItem">
        <param name="fallback_image">DefaultFolder.png</param>
        <param name="single_label">$INFO[ListItem.Label]</param>
        <param name="focused">false</param>
        <definition>
            <control type="image">
                <top>0</top>
                <width>248</width>
                <height>312</height>
                <texture>dialogs/dialog-bg-nobo.png</texture>
                <bordertexture border="21">overlays/shadow.png</bordertexture>
                <bordersize>20</bordersize>
            </control>
            <control type="image">
                <top>-4</top>
                <left>-4</left>
                <width>256</width>
                <height>320</height>
                <texture colordiffuse="button_focus">colors/grey.png</texture>
                <bordertexture border="21">overlays/shadow.png</bordertexture>
                <bordersize>20</bordersize>
                <visible>$PARAM[focused]</visible>
                <include condition="$PARAM[focused]">Animation_FocusTextureFade</include>
            </control>
            <control type="image">
                <left>0</left>
                <top>0</top>
                <width>248</width>
                <height>248</height>
                <texture fallback="$PARAM[fallback_image]" background="true">$VAR[InfoWallThumbVar]</texture>
                <aspectratio>keep</aspectratio>
                <bordersize>20</bordersize>
            </control>
            <control type="textbox">
                <left>20</left>
                <top>218</top>
                <width>210</width>
                <height>80</height>
                <font>font12</font>
                <align>center</align>
                <aligny>center</aligny>
                <label>$PARAM[single_label]</label>
            </control>
        </definition>
    </include>

2. V Home.xml najdete definici widgetu pro Oblíbené (Favoriets). Je to tato část kódu:

Kód:
                <control type="group" id="14000">
                    <visible>String.IsEqual(Container(9000).ListItem.Property(id),favorites)</visible>
                    <include content="Visible_Right_Delayed">
                        <param name="id" value="favorites"/>
                    </include>
                    <control type="panel" id="14100">
                        <left>65</left>
                        <top>0</top>
                        <right>0</right>
                        <bottom>0</bottom>
                        <onleft>9000</onleft>
                        <onright>9000</onright>
                        <onup>14100</onup>
                        <ondown>14100</ondown>
                        <onclick>$INFO[ListItem.FileNameAndPath]</onclick>
                        <preloaditems>2</preloaditems>
                        <scrolltime tween="cubic" easing="out">500</scrolltime>
                        <orientation>vertical</orientation>
                        <visible>Integer.IsGreater(Container(14100).NumItems,0) | Container(14100).IsUpdating</visible>
                        <itemlayout width="330" height="396">
                            <control type="group">
                                <top>130</top>
                                <include content="InfoWallMusicLayout">
                                    <param name="fallback_image" value="DefaultFavourites.png" />
                                    <param name="focused" value="false" />
                                </include>
                            </control>
                        </itemlayout>
                        <focusedlayout width="330" height="396">
                            <control type="group">
                                <depth>DepthContentPopout</depth>
                                <top>130</top>
                                <animation effect="zoom" start="100" end="110" time="200" tween="sine" easing="inout" center="170,320">Focus</animation>
                                <animation effect="zoom" start="110" end="100" time="200" tween="sine" easing="inout" center="170,320">UnFocus</animation>
                                <include content="InfoWallMusicLayout">
                                    <param name="fallback_image" value="DefaultFavourites.png" />
                                    <param name="focused" value="true" />
                                </include>
                            </control>
                        </focusedlayout>
                        <content>favourites://</content>
                    </control>
                    <include content="ImageWidget">
                        <param name="text_label" value="$LOCALIZE[31025]" />
                        <param name="button_label" value="$LOCALIZE[31116]" />
                        <param name="button_onclick" value=""/>
                        <param name="button_id" value="5500"/>
                        <param name="visible" value="!Integer.IsGreater(Container(14100).NumItems,0) + !Container(14100).IsUpdating"/>
                        <param name="visible_1" value="false"/>
                        <param name="button2_onclick" value="Skin.SetBool(HomeMenuNoFavButton)"/>
                    </include>
                </control>

a v ní nahradíte:
  • v řádku <itemlayout width="330" height="396"> hodnotu 330 hodnotou 275 a hodnotu 396 hodnotou 299
  • v řádku <focusedlayout width="330" height="396"> hodnotu 330 hodnotou 275 a hodnotu 396 hodnotou 299
  • v řádcích (pozor, je to tam taky 2x) <include content="InfoWallMusicLayout"> text InfoWallMusicLayout textem WidgetWallItem
 
Citovat
#19
v té první úpravě řádku mám: itemlayout a focusedlayout - oba jsem upravil podle Tebe..
ještě se chci zeptat na zpomalení textu a větší prodlevu spuštění scroolingu textu po najetí na poster Widget Infa...
Díky jinak vše funguje ...
 
Citovat
#20
@otava5 Jo díky za upozornění. Neuvědomil jsme si, že ten druhý je "focusedlayout", v popisu jsem to upravil. Je vidět, že si umíš poradit.

S těmi časy u WidgetInfo jsme si hrál, myslel jsme si, že tam budou stačit kratší časy a asi máš pravdu, je to moc rychlé. Tak jsem do kódu vrátil obvyklé časy. Jen u názvu filmu, tam jsem nechal kratší časy. Ten název je jen na dva řádky a jsou filmy, které ho mají delší. Nechtělo se mi tam nechávat větší počet řádků, protože by tam u většiny filmů byla moc velká mezera a nevypadalo by to hezky.

Jinak, kdybys měl zájem, tak posuvy se definují v řádcích <autoscroll delay="10000" time="3000" repeat="10000">Skin.HasSetting(autoscroll)</autoscroll>, kde jednotlivé parametry času (jsou v ms) znamenají:

delay - prodleva, než se začne text po zobrazení obrázku posouvat
time - rychlost posuvu, 3000 znamená, že se text posune o výšku jednoho řádku za 3 vteřiny
repeat - opakování posuvu poté, co se text posunul až na konec
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)