Here is a screenshot of the current working TV guide
Right now this is all contained within the new container CGUIEPGGridContainer, that way it's easy to sync up the horizontal scrolling of the grid with the ruler above and the vertical scrolling of the grid with the channels column. However I have been thinking I could use 2 CGUIListContainers and 1 CGUIEPGGridContainer in a GUIControlGroup. That way the elements could be positioned more independently from - though keeping things lined up is still a primary function of a tv-guide. I just thought maybe there would be more scope for interesting layouts if the page was more modular. Happy to hear anyone's views on this.
here's a link to the skin paramaters for the GridContainer:
http://pastecode.com/?show=f6e536e53
points worth noting:
a 'block' is the unit of measurement inside the grid - it represents 5 minutes (subject to change) ...so:
Code:
<timeblocks>36</timeblocks>
is the number of blocks visible on screen at any one point - 36 * 5 gives us 3 hours.
Code:
<rulerunit>12</rulerunit>
is the number of blocks that makes up a unit of the ruler/timeline along the top. so if you give me 12, you get three listitems per page (representing 1 hour each), with <rulerunit>3</rulerunit> you get 12 which is 12 quarter hour slots and so on.
Everything is calculated automatically from these two values and the following pixel values:
Code:
<control type="epggrid" id="20">
<width>656</width>
<height>437</height>
</control>
<rulerlayout height="29" width="40">
<channellayout height="34" width="80">
<itemlayout height="34" width="40">
"But how does this work?" I hear you ask.. with help from a new function CGUIListGroup::EnlargeWidth which lets us resize elements of a ControlGroup by ID. So the background of the gridItems is resized along with the Label, but any element without ID of 1 or 2 stays the same size, useful for any overlay graphics skinners will use to signify upcoming recordings etc.