04.7.2020, 20:23
Estuary Stream Cinema a všechny podobné skiny ve kterých mám prsty jsou zalžené na maximálním využívámí widgetů. Vím, že jsou uživatelé, kteří do "hloubi" addons zabloudí jen málokdy a když, tak přávě přes widgety. Snažil jsme se tedy do widgetů zabudovat i vyhledávání podle počátečních písmen a vznikly widgety A-Z. Konkrétně jendoduchá verze, do které pouze zpracování jendoduchá seznam obsahujcíí jednotlivé znaky (WidgetListLetters) a verze o kapánek složitější (WidgetListLettersContent), kde je možná provést příslušný "překlad". Funguje to celkem přirozeně například v addon iVysilani nebo také v originální SC, kde je použita ona jednodušší varianta, a co jsem měl možnost zjistit, tak si na to lidé poměrně zvykli.
V SCC je s widgetem A-Z o něco složitější. V první implementace widgetu A-Z na SCC vzala jendoduchost a elegance řady čtvercových ikon s jednotlivými písmeny za své, ale funkčně to žádnou další chybu nemělo. Co mě ale překvapilo bylo, že uživatelé ten původní seznam vyžadovali i u SCC. Argumentoval jsme, že tento je lepší, že v něm kromě počátečního písmena vidí i počet titulů, ale málo platné. Někteří lidé jsou zkrátka konzervy. Vznikla tedy první verze složitějšího řešení, umožňující vytvořit seznam 0-9, A, ..., Z, ale protože se SCC stáe vyvíjela, brzy bylo po ní. Až teprve teď, kdy se do vyhledávání podle abecedy vrátila čísla přišel čas na to, se k řešení vrátit. A opět začali uživatelé reptat. Seznam 0, 1, ..., 9, A, ..., Z se jim nelíbil. Respektive se jim nelíbila ta podle některých zcela bytečná řada 0, ..., 9 na začátku. Chvíli jsem bojoval s tím, to celé převést na původní 0-9, A, ..., Z, což se mi nakonec podařilo, ale za cenu poměrně komplikovaného řešení. Hodil jsme ho do koše a udělal jediné možné a otočil to na seznam A, ..., Z, 0, ..., 9. A kupodivu, všichni jsou spokojení. Někdy fakt stačí málo...
Kdyby někoho zajímalo řešení, uvádím příslušné include, které je třeba (ideálně v souboru Include_Home.xml kam logicky patří) vytvořit:
Vlastní volání addon se do include předává v parametru command, vybraná položka (znak) se do něj vkládá přes ListItem.Label, který je umístěn na příslušném místě zmíněného volání (při použití widgetu). Všimněte si použití $NUMBER, které je třeba u textů složených z číslic použít, jinak nebudete z výsledku, který uvidíte po spuštění Kodi nebo reload skinu, příliš nadšení.
V SCC je s widgetem A-Z o něco složitější. V první implementace widgetu A-Z na SCC vzala jendoduchost a elegance řady čtvercových ikon s jednotlivými písmeny za své, ale funkčně to žádnou další chybu nemělo. Co mě ale překvapilo bylo, že uživatelé ten původní seznam vyžadovali i u SCC. Argumentoval jsme, že tento je lepší, že v něm kromě počátečního písmena vidí i počet titulů, ale málo platné. Někteří lidé jsou zkrátka konzervy. Vznikla tedy první verze složitějšího řešení, umožňující vytvořit seznam 0-9, A, ..., Z, ale protože se SCC stáe vyvíjela, brzy bylo po ní. Až teprve teď, kdy se do vyhledávání podle abecedy vrátila čísla přišel čas na to, se k řešení vrátit. A opět začali uživatelé reptat. Seznam 0, 1, ..., 9, A, ..., Z se jim nelíbil. Respektive se jim nelíbila ta podle některých zcela bytečná řada 0, ..., 9 na začátku. Chvíli jsem bojoval s tím, to celé převést na původní 0-9, A, ..., Z, což se mi nakonec podařilo, ale za cenu poměrně komplikovaného řešení. Hodil jsme ho do koše a udělal jediné možné a otočil to na seznam A, ..., Z, 0, ..., 9. A kupodivu, všichni jsou spokojení. Někdy fakt stačí málo...
Kdyby někoho zajímalo řešení, uvádím příslušné include, které je třeba (ideálně v souboru Include_Home.xml kam logicky patří) vytvořit:
Kód:
<include name="WidgetListLettersContent">
<param name="visible">true</param>
<param name="command"></param>
<param name="letter">$INFO[ListItem.Label]</param>
<definition>
<include content="CategoryLabel">
<param name="label">$PARAM[widget_header]</param>
<param name="list_id" value="$PARAM[list_id]"/>
<param name="visible" value="$PARAM[visible]"/>
<param name="title_icon">$PARAM[title_icon]</param>
</include>
<include content="BusyListSpinner">
<param name="list_id" value="$PARAM[list_id]"/>
<param name="visible" value="$PARAM[visible]"/>
</include>
<control type="panel" id="$PARAM[list_id]">
<left>0</left>
<top>110</top>
<right>0</right>
<height>240</height>
<include content="WidgetListCommon">
<param name="list_id" value="$PARAM[list_id]"/>
</include>
<onclick>ActivateWindow(10025,$PARAM[command],return)</onclick>
<visible>$PARAM[visible]</visible>
<visible>Integer.IsGreater(Container($PARAM[list_id]).NumItems,0) | Container($PARAM[list_id]).IsUpdating</visible>
<itemlayout width="156" height="200">
<control type="group">
<left>70</left>
<control type="image">
<width>150</width>
<height>150</height>
<texture>dialogs/dialog-bg-nobo.png</texture>
<bordertexture border="21">overlays/shadow.png</bordertexture>
<bordersize>20</bordersize>
</control>
<control type="textbox">
<left>0</left>
<top>0</top>
<width>150</width>
<height>150</height>
<label>$INFO[ListItem.Label]</label>
<font>font52_title</font>
<shadowcolor>text_shadow</shadowcolor>
<align>center</align>
<aligny>center</aligny>
</control>
</control>
</itemlayout>
<focusedlayout width="156" height="200">
<control type="group">
<depth>DepthContentPopout</depth>
<left>70</left>
<animation type="Focus">
<effect type="zoom" start="100" end="115" time="200" tween="sine" easing="inout" center="150,75" />
</animation>
<animation type="Unfocus">
<effect type="zoom" start="115" end="100" time="200" tween="sine" easing="inout" center="150,75" />
</animation>
<control type="image">
<width>150</width>
<height>150</height>
<texture>dialogs/dialog-bg-nobo.png</texture>
<bordertexture border="21">overlays/shadow.png</bordertexture>
<bordersize>20</bordersize>
</control>
<control type="image">
<width>150</width>
<height>150</height>
<texture colordiffuse="button_focus">colors/grey.png</texture>
<bordersize>20</bordersize>
<include>Animation_FocusTextureFade</include>
</control>
<control type="textbox">
<left>0</left>
<top>0</top>
<width>150</width>
<height>150</height>
<label>$INFO[ListItem.Label]</label>
<font>font52_title</font>
<shadowcolor>text_shadow</shadowcolor>
<align>center</align>
<aligny>center</aligny>
</control>
</control>
</focusedlayout>
<content>
<item><label>A</label></item>
<item><label>B</label></item>
<item><label>C</label></item>
<item><label>D</label></item>
<item><label>E</label></item>
<item><label>F</label></item>
<item><label>G</label></item>
<item><label>H</label></item>
<item><label>I</label></item>
<item><label>J</label></item>
<item><label>K</label></item>
<item><label>L</label></item>
<item><label>M</label></item>
<item><label>N</label></item>
<item><label>O</label></item>
<item><label>P</label></item>
<item><label>Q</label></item>
<item><label>R</label></item>
<item><label>S</label></item>
<item><label>T</label></item>
<item><label>U</label></item>
<item><label>V</label></item>
<item><label>W</label></item>
<item><label>X</label></item>
<item><label>Y</label></item>
<item><label>Z</label></item>
<item><label>$NUMBER[0]</label></item>
<item><label>$NUMBER[1]</label></item>
<item><label>$NUMBER[2]</label></item>
<item><label>$NUMBER[3]</label></item>
<item><label>$NUMBER[4]</label></item>
<item><label>$NUMBER[5]</label></item>
<item><label>$NUMBER[6]</label></item>
<item><label>$NUMBER[7]</label></item>
<item><label>$NUMBER[8]</label></item>
<item><label>$NUMBER[9]</label></item>
</content>
</control>
</definition>
</include>