jf-roku/components/MovieList.xml

105 lines
2.6 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="utf-8" ?>
<component name="MovieRow" extends="RowList">
<interface>
2019-03-05 05:18:01 +00:00
<field id="rowSize" type="int" />
<field id="movieData" type="associativearray" onChange="setData" />
2019-03-12 23:34:51 +00:00
<field id="library" type="associativearray" />
</interface>
<script type="text/brightscript">
<![CDATA[
sub init()
m.top.itemComponentName = "ListPoster"
m.top.content = getData()
m.top.rowFocusAnimationStyle = "floatingFocus"
'm.top.vertFocusAnimationStyle = "floatingFocus"
m.top.showRowLabel = [false]
updateSize()
m.top.setfocus(true)
end sub
sub updateSize()
m.top.numrows = 1
2019-03-09 20:08:34 +00:00
m.top.rowSize = 5
dimensions = m.top.getScene().currentDesignResolution
border = 75
2019-03-12 23:34:51 +00:00
m.top.translation = [border, border + 115]
2019-03-09 20:08:34 +00:00
textHeight = 50
' Do we decide width by rowSize, or rowSize by width...
itemWidth = (dimensions["width"] - border*2) / m.top.rowSize
itemHeight = itemWidth * 1.5 + textHeight
m.top.visible = true
2019-03-09 20:08:34 +00:00
' size of the whole row
m.top.itemSize = [dimensions["width"] - border*2, itemHeight]
' spacing between rows
m.top.itemSpacing = [ 0, 10 ]
' size of the item in the row
m.top.rowItemSize = [ itemWidth, itemHeight ]
' spacing between items in a row
m.top.rowItemSpacing = [ 0, 0 ]
end sub
function setData()
movieData = m.top.movieData
rowsize = m.top.rowSize
n = movieData.items.count()
' Test for no remainder
if int(n/rowsize) = n/rowsize then
m.top.numRows = n/rowsize
else
m.top.numRows = n/rowsize + 1
end if
m.top.content = getData()
end function
function getData()
if m.top.movieData = invalid then
data = CreateObject("roSGNode", "ContentNode")
return data
end if
movieData = m.top.movieData
rowsize = m.top.rowSize
data = CreateObject("roSGNode", "ContentNode")
for rownum=1 to m.top.numRows
row = data.CreateChild("ContentNode")
for i=1 to rowsize
index = (rownum - 1) * rowsize + i
if index > movieData.items.count() then
exit for
end if
datum = movieData.Items[index-1]
2019-03-12 01:24:39 +00:00
item = row.CreateChild("MovieData")
item.full_data = datum
end for
end for
return data
end function
2019-03-12 03:49:17 +00:00
function onKeyEvent(key as string, press as boolean) as boolean
if not press then return false
if key = "down" and (m.top.itemFocused + 1) = m.top.content.getChildCount()
m.top.getScene().findNode("pager").setFocus(true)
m.top.getScene().findNode("pager").getChild(0).setFocus(true)
return true
end if
return false
end function
]]>
</script>
</component>