First of all, I want to thank everyone who is working on KODI to make it better (core/addons/scripts/skins/forum or other things). Now that Leia is out, I really hope that there is a developer who has some spare time to further improve KODI, in my case the skinning engine.
If anyone is interested, here is a summary of skinning enhancements which would be nice to have, improve performance or add new possibilities:
DialogNotification.xml
Please add an option to get notification information (ID 400,401,402) via skinning engine, e.g. make something like this work would be great:
(if that isn't possible, maybe set a window property?)
Unfortunately, "onload" method does not work with modeless dialogs like DialogNotification.xml
Reason:
This enhancement would allow skin developers to create a "Notification Center", Home automation triggers on certain notifications (e.g. Incoming Call --> Pause Video --> Turn on Light) and more ...
(most useful with apps like yatse, ..)
New boolean condition
Returns true if a specific file or directory exist
Reason:
Check if a file/dir exist before calling "PlayMedia()", this is especially useful for playing "theme" files or showing extra fanart while browsing your library, can also be useful to check user input "e.g. The directory/file you entered does not exist!"
<includes>
Allow $INFO for <include> and <include content="">, e.g.:
In this case KODI should first get the $INFO value (e.g. 10) and then include the content, e.g.: <include>Transparency_10</include>. This would save hundreds or even thousand lines of code in most skins because you don't need to add a condition for every possible value like this:
Extreme case: If there are 100+ possible user values you would also need 100+ conditions instead of 1 <include>, this would also improve performance on low-end hardware because KODI doesn't need to go through 100 conditions ...
Container (Content)
Option to fill a container with static items from an URL e.g.:
Useful for containers with frequently changing content. Normally you have to update the skin .xml file to add/remove or change a static item, with this feature you could just edit the .xml on the server and users will automatically get the new content.
Thanks for considering these enhancements!
If anyone is interested, here is a summary of skinning enhancements which would be nice to have, improve performance or add new possibilities:
DialogNotification.xml
Please add an option to get notification information (ID 400,401,402) via skinning engine, e.g. make something like this work would be great:
Code:
<onload>Skin.SetString(notification_icon,$INFO[Control.GetLabel(400)])</onload>
<onload>Skin.SetString(notification_label1,$INFO[Control.GetLabel(401)])</onload>
<onload>Skin.SetString(notification_label2,$INFO[Control.GetLabel(402)])</onload>
Unfortunately, "onload" method does not work with modeless dialogs like DialogNotification.xml
Reason:
This enhancement would allow skin developers to create a "Notification Center", Home automation triggers on certain notifications (e.g. Incoming Call --> Pause Video --> Turn on Light) and more ...
(most useful with apps like yatse, ..)
New boolean condition
Code:
File.Exist(/test)
File.Exist($INFO[ListItem.Path]/extrafanart.jpg)
!File.Exist(/test/theme.mp3)
Reason:
Check if a file/dir exist before calling "PlayMedia()", this is especially useful for playing "theme" files or showing extra fanart while browsing your library, can also be useful to check user input "e.g. The directory/file you entered does not exist!"
<includes>
Allow $INFO for <include> and <include content="">, e.g.:
Code:
<include>Transparency_$INFO[Skin.String(Transparency_Value)]</include>
Code:
<include condition="String.isEqual(Skin.String(Transparency_Value),10)">Transparency_10</include>
<include condition="String.isEqual(Skin.String(Transparency_Value),20)">Transparency_20</include>
<include condition="String.isEqual(Skin.String(Transparency_Value),30)">Transparency_30</include>
...
<include condition="String.isEqual(Skin.String(Transparency_Value),100)">Transparency_100</include>
Container (Content)
Option to fill a container with static items from an URL e.g.:
Code:
<control type="list">
...
<content>http://kodi.tv/items.xml</content>
</control>
items.xml:
----------
<item>
<label>test</label>
...
</item>
Thanks for considering these enhancements!