Extend skinning engine to allow populating custom containers with filesystem content
#1
Summary:

Currently skin authors must choose between static content (predefined by the them) or dynamic content filled by XBMC over which they have no control. This project would add a 3rd option, whereby the skin author specifies that they want the list filled with particular content from the XBMC virtual filesystem (that could be content of video/music library, local/remote filesystem, current playback queue/playlist, upnp share, rss channel, addons of given type, etc.). This would allow detaching media listing from designated windows and improve already impressive customizability of XBMC.

How will I achieve this:

Currently most of dynamic content related operations are tightly integrated in GUI code. My plan is to provide intermediate layer between GUI and virtual filesystem - Listing model. This model would:
- retrieve the listing with metadata and populate the container
- determine what action should be taken upon user interaction (depending on container content - f.e playing and queueing music files, starting picture slideshow, run addon, etc.),
- generate image thumbnails for items in listing (if weren't generated before), extract additional metadata (f.e id3tags from music files)
- listen to virtual filesystem events and update either entire listing or single item if needed
- allow setting/cycling sort method and order

Optional (if time will allow it):

Add new type of container to allow easy way for skin authors to create visually rich components appropriate for containers used as widgets. Idea is to allow defining what visual effect (zoom,rotation,translation) should be applied to items in container depending on relative item position in list. This system would allow to create containers looking and behaving different from each other (f.e. Android 4.0 photo gallery/youtube widget and coverflow)

Benefits:

Ability to populate custom container with filesystem content was requesteed both on XBMC community forum and XBMC project managment/issue tracking system. First group that will benefit from this project are skin authors - extending skinning engine allows them to create more sophisticated and better looking skins. This project will provide them tool to easly insert widget-like elements on home screen. Second (and bigger) audience will be all users - ability to choose what content will easly available on home scren will greatly improve user experience.

Goals:

4-5 weeks: Implement intermediate layer between GUI and virtual filesystem - Listing model with enough functionality to allow building working proof of concept (needed functionality would be retrieving listing in background and determining proper action upon user interaction).
3-4 weeks: Finish Listing model with all needed functionality (listing updates, thumbnails, sorting). Possibly clean up some code in GUI media windows.
2-3 weeks (optional, if time allow): Implement new type of container to allow easy way for skin authors to create visually rich components appropiate for containers used as widgets.

Requirements:

Good knowledge of C++ and XBMC codebase (mainly virtual filesystem and GUI). It doesn't require any special hardware.

How long have you been writing software for work/fun?

My first contact with programming language BASIC in 1999. Then I was exploring more technologies over next years: HTML+CSS, PHP+MySQL, C++, C#, Java (SE, ME, Android SDK), Python and even had contact with OZ.

What is your primary development language/environment?

Depending on task I mostly use either C++ or Java.

Is this your first GSOC?

Yes.

Have you contributed to XBMC or other FLOSS projects?

Yes, I started contributing to XBMC in summer 2010. In may 2011 I was invited to join Team-XBMC and since then I have write access to xbmc master tree and try to contribute whenever I have time.
Always read the XBMC online-manual, FAQ and search the forums before posting.
Do NOT e-mail Team-XBMC members asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting, make sure you read this first

My previous forum/trac nickname: grajen3
Reply
#2
sooo many good ideas from so many talented people. I wanna combine you amejia Montellese and alcoheca at a really high velocity and see what happens to XBMC
Reply

Logout Mark Read Team Forum Stats Members Help
Extend skinning engine to allow populating custom containers with filesystem content0