2011-03-25, 22:52
Now that I've finally got a handle on how the skinning system works and how all the pieces fit together, I've got some thoughts.
I'm an Android app developer. I've noticed that the XBMC ecosystem is a lot like the Android system (XML gui, and java APIs) in some ways. XBMC has XML GUI, some core APIs (http://wiki.xbmc.org/index.php?title...t_In_Functions) and Python scripting.
The big difference is that XBMC programmatically limits the structure of the overall skin by by making the built-in controls available only in the context of certain windows, which are predefined and are not skinner configurable.
http://wiki.xbmc.org/index.php?title=Lis...n_Controls
XBMC as a media engine could be used for many more things than just a typical media center. Right now it's limited to a certain way of doing things by exposing only certain controls in certain windows. It could be a one-stop shop for creating any kind of media based application.
Here's a hypothetical example. Say I want to make a skin that turns the computer into a basic, mulitlingual CD player. I want to only have one screen that shows playback controls, language selection, and displays fetched cover art when a CD is inserted. Right now I can't put the language selection on the home screen, because that built-in control can only be accessed from WINDOW_SETTINGS_APPEARANCE.
Likewise, when building a Boxee-like home screen. Say I want to place a group list on the home screen that was, for example, a list of all the videos in the Classic Cinema App in the Sci-Fi category. Currently I can't display that list on any screen except WINDOW_ADDON_BROWSER ( I think).
All of these limitations can be overcome by de-coupling the built-in controls from the pre-defined window definitions, making them available in any window . This would let the skinner define which built-in controls to use on any window. This can be accomplished by giving each built in control a globally unique ID, rather than just a locally unique ID in each pre-defined window definition like it is now.
This could be done with a window definitions master xml file that acts like the current internal table, linking the name, definition, window ID, source xml file, and built in control-ids for each window.
What do you guys think? Is this something the XBMC team would be interested in for future versions? It would simplify things, I think, because XBMC would no longer have to define and maintain all the current window definitions and their associated built-in controls. Skinners would have no limitations with what they could do in regards to layout and navigation for all controls.
Similar to the way Android lets you just build xml windows and define what controls to use (or what they do with java), XBMC could do the same thing, opening up the full functionality of its exceptional media engine so anyone could make any kind of media-based application very very easily.
I'm an Android app developer. I've noticed that the XBMC ecosystem is a lot like the Android system (XML gui, and java APIs) in some ways. XBMC has XML GUI, some core APIs (http://wiki.xbmc.org/index.php?title...t_In_Functions) and Python scripting.
The big difference is that XBMC programmatically limits the structure of the overall skin by by making the built-in controls available only in the context of certain windows, which are predefined and are not skinner configurable.
http://wiki.xbmc.org/index.php?title=Lis...n_Controls
XBMC as a media engine could be used for many more things than just a typical media center. Right now it's limited to a certain way of doing things by exposing only certain controls in certain windows. It could be a one-stop shop for creating any kind of media based application.
Here's a hypothetical example. Say I want to make a skin that turns the computer into a basic, mulitlingual CD player. I want to only have one screen that shows playback controls, language selection, and displays fetched cover art when a CD is inserted. Right now I can't put the language selection on the home screen, because that built-in control can only be accessed from WINDOW_SETTINGS_APPEARANCE.
Likewise, when building a Boxee-like home screen. Say I want to place a group list on the home screen that was, for example, a list of all the videos in the Classic Cinema App in the Sci-Fi category. Currently I can't display that list on any screen except WINDOW_ADDON_BROWSER ( I think).
All of these limitations can be overcome by de-coupling the built-in controls from the pre-defined window definitions, making them available in any window . This would let the skinner define which built-in controls to use on any window. This can be accomplished by giving each built in control a globally unique ID, rather than just a locally unique ID in each pre-defined window definition like it is now.
This could be done with a window definitions master xml file that acts like the current internal table, linking the name, definition, window ID, source xml file, and built in control-ids for each window.
What do you guys think? Is this something the XBMC team would be interested in for future versions? It would simplify things, I think, because XBMC would no longer have to define and maintain all the current window definitions and their associated built-in controls. Skinners would have no limitations with what they could do in regards to layout and navigation for all controls.
Similar to the way Android lets you just build xml windows and define what controls to use (or what they do with java), XBMC could do the same thing, opening up the full functionality of its exceptional media engine so anyone could make any kind of media-based application very very easily.