Make ItemGrids more abstract (#49)
* Make the movie grid a bit more abstract * Make the tvshow/collection grids more abstract
This commit is contained in:
parent
70cbbf11f0
commit
498440f2c5
96
components/ItemGrid.brs
Normal file
96
components/ItemGrid.brs
Normal file
|
@ -0,0 +1,96 @@
|
|||
sub init()
|
||||
m.top.itemComponentName = "ListPoster"
|
||||
m.top.content = setData()
|
||||
|
||||
m.top.rowFocusAnimationStyle = "floatingFocus"
|
||||
|
||||
m.top.showRowLabel = [false]
|
||||
|
||||
m.top.setFocus(true)
|
||||
end sub
|
||||
|
||||
sub updateSize()
|
||||
m.top.numRows = 1
|
||||
if m.top.itemsPerRow = invalid or m.top.itemsPerRow = 0 then
|
||||
m.top.itemsPerRow = 5
|
||||
end if
|
||||
|
||||
dimensions = m.top.getScene().currentDesignResolution
|
||||
|
||||
border = 75
|
||||
m.top.translation = [border, border + 115]
|
||||
|
||||
textHeight = 80
|
||||
itemWidth = (dimensions["width"] - border*2) / m.top.itemsPerRow
|
||||
itemHeight = itemWidth * 1.5 + textHeight
|
||||
|
||||
m.top.visible = true
|
||||
|
||||
' Size of the individual rows
|
||||
m.top.itemSize = [dimensions["width"] - border*2, itemHeight]
|
||||
' Spacing between Rows
|
||||
m.top.itemSpacing = [ 0, 10]
|
||||
|
||||
' Size of items in the row
|
||||
m.top.rowItemSize = [ itemWidth, itemHeight ]
|
||||
' Spacing between items in the row
|
||||
m.top.rowItemSpacing = [ 0, 0 ]
|
||||
end sub
|
||||
|
||||
function setupRows()
|
||||
updateSize()
|
||||
|
||||
objects = m.top.objects
|
||||
itemsPerRow = m.top.itemsPerRow
|
||||
|
||||
n = objects.items.count()
|
||||
|
||||
' This tests to make sure we are at an integer number of rows
|
||||
if int(n/itemsPerRow) = n/itemsPerRow then
|
||||
m.top.numRows = n/itemsPerRow
|
||||
' Otherwise we need an extra (not full) row for the leftovers
|
||||
else
|
||||
m.top.numRows = n/itemsPerRow + 1
|
||||
end if
|
||||
|
||||
m.top.content = setData()
|
||||
|
||||
end function
|
||||
|
||||
function setData()
|
||||
data = CreateObject("roSGNode", "ContentNode")
|
||||
if m.top.objects = invalid then
|
||||
' Return an empty node just to return something; we'll update once we have data
|
||||
return data
|
||||
end if
|
||||
|
||||
objects = m.top.objects
|
||||
itemsPerRow = m.top.itemsPerRow
|
||||
|
||||
for rowNum = 1 to m.top.numRows
|
||||
row = data.CreateChild("ContentNode")
|
||||
for i = 1 to itemsPerRow
|
||||
index = (rowNum - 1) * itemsPerRow + i
|
||||
if index > objects.items.count() then
|
||||
exit for
|
||||
end if
|
||||
row.appendChild(objects.items[index-1])
|
||||
end for
|
||||
end for
|
||||
|
||||
return data
|
||||
end function
|
||||
|
||||
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.escapeButton = "down"
|
||||
return true
|
||||
else if key = "options"
|
||||
m.top.escapeButton = "options"
|
||||
return true
|
||||
end if
|
||||
|
||||
return false
|
||||
end function
|
9
components/ItemGrid.xml
Normal file
9
components/ItemGrid.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="ItemGrid" extends="RowList">
|
||||
<interface>
|
||||
<field id="itemsPerRow" type="int" />
|
||||
<field id="objects" type="associativearray" onChange="setupRows" />
|
||||
<field id="escapeButton" type="string" alwaysNotify="true" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="ItemGrid.brs" />
|
||||
</component>
|
|
@ -1,99 +0,0 @@
|
|||
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
|
||||
m.top.rowSize = 5
|
||||
|
||||
dimensions = m.top.getScene().currentDesignResolution
|
||||
|
||||
border = 75
|
||||
m.top.translation = [border, border + 115]
|
||||
|
||||
textHeight = 80
|
||||
' 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
|
||||
|
||||
' 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()
|
||||
itemData = m.top.itemData
|
||||
rowsize = m.top.rowSize
|
||||
|
||||
n = itemData.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.itemData = invalid then
|
||||
data = CreateObject("roSGNode", "ContentNode")
|
||||
return data
|
||||
end if
|
||||
|
||||
itemData = m.top.itemData
|
||||
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 > itemData.items.count() then
|
||||
exit for
|
||||
end if
|
||||
item = itemData.Items[index-1]
|
||||
row.appendChild(item)
|
||||
end for
|
||||
end for
|
||||
return data
|
||||
end function
|
||||
|
||||
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
|
||||
else if key = "options"
|
||||
options = m.top.getScene().findNode("options")
|
||||
list = options.findNode("panelList")
|
||||
|
||||
options.visible = true
|
||||
list.setFocus(true)
|
||||
|
||||
return true
|
||||
end if
|
||||
|
||||
return false
|
||||
end function
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="CollectionRow" extends="RowList">
|
||||
<interface>
|
||||
<field id="rowSize" type="int" />
|
||||
<field id="itemData" type="associativearray" onChange="setData" />
|
||||
<field id="library" type="associativearray" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="rowlist.brs"/>
|
||||
</component>
|
|
@ -1,10 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="Collections" extends="Scene">
|
||||
<children>
|
||||
<CollectionRow
|
||||
id="CollectionSelect"
|
||||
visible="true"
|
||||
/>
|
||||
<ItemGrid id="picker" visible="true" itemsPerRow="5" />
|
||||
<Overhang
|
||||
id="overhang"
|
||||
title="Collections"
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="CollectionData" extends="ContentNode">
|
||||
<interface>
|
||||
<field id="id" type="string" />
|
||||
<field id="title" type="string" />
|
||||
<field id="image" type="node" onChange="setPoster" />
|
||||
<field id="posterUrl" type="string" />
|
||||
|
|
|
@ -1,98 +0,0 @@
|
|||
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
|
||||
m.top.rowSize = 5
|
||||
|
||||
dimensions = m.top.getScene().currentDesignResolution
|
||||
|
||||
border = 75
|
||||
m.top.translation = [border, border + 115]
|
||||
|
||||
textHeight = 80
|
||||
' 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
|
||||
|
||||
' 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
|
||||
row.appendChild(movieData.items[index-1])
|
||||
end for
|
||||
end for
|
||||
return data
|
||||
end function
|
||||
|
||||
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
|
||||
else if key = "options"
|
||||
options = m.top.getScene().findNode("options")
|
||||
list = options.findNode("panelList")
|
||||
|
||||
options.visible = true
|
||||
list.setFocus(true)
|
||||
|
||||
return true
|
||||
end if
|
||||
|
||||
return false
|
||||
end function
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="MovieRow" extends="RowList">
|
||||
<interface>
|
||||
<field id="rowSize" type="int" />
|
||||
<field id="movieData" type="associativearray" onChange="setData" />
|
||||
<field id="library" type="associativearray" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="rowlist.brs" />
|
||||
</component>
|
|
@ -1,10 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="Movies" extends="Scene">
|
||||
<children>
|
||||
<MovieRow
|
||||
id="MovieSelect"
|
||||
visible="true"
|
||||
/>
|
||||
<ItemGrid id="picker" visible="true" itemsPerRow="10" />
|
||||
<Overhang
|
||||
id="overhang"
|
||||
title="Movies"
|
||||
|
|
|
@ -1,99 +0,0 @@
|
|||
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
|
||||
m.top.rowSize = 5
|
||||
|
||||
dimensions = m.top.getScene().currentDesignResolution
|
||||
|
||||
border = 75
|
||||
m.top.translation = [border, border + 115]
|
||||
|
||||
textHeight = 80
|
||||
' 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
|
||||
|
||||
' 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()
|
||||
tvshowData = m.top.TVShowData
|
||||
rowsize = m.top.rowSize
|
||||
|
||||
n = tvshowData.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.TVShowData = invalid then
|
||||
data = CreateObject("roSGNode", "ContentNode")
|
||||
return data
|
||||
end if
|
||||
|
||||
TVShowData = m.top.TVShowData
|
||||
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 > tvshowData.items.count() then
|
||||
exit for
|
||||
end if
|
||||
row.appendChild(tvShowData.items[index-1])
|
||||
end for
|
||||
end for
|
||||
return data
|
||||
end function
|
||||
|
||||
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
|
||||
else if key = "options"
|
||||
options = m.top.getScene().findNode("options")
|
||||
list = options.findNode("panelList")
|
||||
|
||||
options.visible = true
|
||||
list.setFocus(true)
|
||||
|
||||
return true
|
||||
end if
|
||||
|
||||
return false
|
||||
end function
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="TVShowRow" extends="RowList">
|
||||
<interface>
|
||||
<field id="rowSize" type="int" />
|
||||
<field id="TVShowData" type="associativearray" onChange="setData" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="rowlist-show.brs" />
|
||||
</component>
|
|
@ -1,10 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="TVShows" extends="Scene">
|
||||
<children>
|
||||
<TVShowRow
|
||||
id="TVShowSelect"
|
||||
visible="true"
|
||||
/>
|
||||
<ItemGrid id="picker" visible="true" itemsPerRow="10" />
|
||||
<Overhang
|
||||
id="overhang"
|
||||
title="TV Shows"
|
||||
|
|
|
@ -42,7 +42,7 @@ sub ShowServerSelect()
|
|||
print "Server not found, is it online? New values / Retry"
|
||||
scene.findNode("alert").text = "Server not found, is it online?"
|
||||
SignOut()
|
||||
else
|
||||
else
|
||||
return
|
||||
endif
|
||||
end if
|
||||
|
@ -221,28 +221,28 @@ sub ShowMovieOptions(library)
|
|||
|
||||
themeScene(scene)
|
||||
|
||||
options = scene.findNode("MovieSelect")
|
||||
options.library = library
|
||||
item_grid = scene.findNode("picker")
|
||||
|
||||
page_num = 1
|
||||
page_size = 30
|
||||
page_size = 50 ' Make this customizable somehow
|
||||
|
||||
sort_order = get_user_setting("movie_sort_order", "Ascending")
|
||||
sort_field = get_user_setting("movie_sort_field", "SortName")
|
||||
|
||||
options_list = ItemList(library.id, {"limit": page_size,
|
||||
item_list = ItemList(library.id, {"limit": page_size,
|
||||
"StartIndex": page_size * (page_num - 1),
|
||||
"SortBy": sort_field,
|
||||
"SortOrder": sort_order,
|
||||
"IncludeItemTypes": "Movie"
|
||||
})
|
||||
options.movieData = options_list
|
||||
item_grid.objects = item_list
|
||||
|
||||
options.observeField("itemSelected", port)
|
||||
item_grid.observeField("escapeButton", port)
|
||||
item_grid.observeField("itemSelected", port)
|
||||
|
||||
pager = scene.findNode("pager")
|
||||
pager.currentPage = page_num
|
||||
pager.maxPages = options_list.TotalRecordCount / page_size
|
||||
pager.maxPages = item_list.TotalRecordCount / page_size
|
||||
if pager.maxPages = 0 then pager.maxPages = 1
|
||||
|
||||
pager.observeField("escape", port)
|
||||
|
@ -286,22 +286,31 @@ sub ShowMovieOptions(library)
|
|||
msg = wait(0, port)
|
||||
if type(msg) = "roSGScreenEvent" and msg.isScreenClosed() then
|
||||
return
|
||||
else if nodeEventQ(msg, "escapeButton")
|
||||
node = msg.getRoSGNode()
|
||||
if node.escapeButton = "down"
|
||||
pager.setFocus(true)
|
||||
pager.getChild(0).setFocus(true)
|
||||
else if node.escapeButton = "options"
|
||||
sidepanel.visible = true
|
||||
sidepanel.findNode("panelList").setFocus(true)
|
||||
end if
|
||||
else if nodeEventQ(msg, "escape") and msg.getNode() = "pager"
|
||||
options.setFocus(true)
|
||||
item_grid.setFocus(true)
|
||||
else if nodeEventQ(msg, "escape") and msg.getNode() = "options"
|
||||
options.setFocus(true)
|
||||
item_grid.setFocus(true)
|
||||
else if nodeEventQ(msg, "pageSelected") and pager.pageSelected <> invalid
|
||||
pager.pageSelected = invalid
|
||||
page_num = int(val(msg.getData().id))
|
||||
pager.currentPage = page_num
|
||||
options_list = ItemList(library.id, {"limit": page_size,
|
||||
item_list = ItemList(library.id, {"limit": page_size,
|
||||
"StartIndex": page_size * (page_num - 1),
|
||||
"SortBy": sort_field,
|
||||
"SortOrder": sort_order,
|
||||
"IncludeItemTypes": "Movie"
|
||||
})
|
||||
options.movieData = options_list
|
||||
options.setFocus(true)
|
||||
item_grid.objects = item_list
|
||||
item_grid.setFocus(true)
|
||||
else if nodeEventQ(msg, "itemSelected")
|
||||
target = getMsgRowTarget(msg)
|
||||
ShowMovieDetails(target)
|
||||
|
@ -375,26 +384,25 @@ sub ShowTVShowOptions(library)
|
|||
|
||||
themeScene(scene)
|
||||
|
||||
options = scene.findNode("TVShowSelect")
|
||||
options.library = library
|
||||
item_grid = scene.findNode("picker")
|
||||
|
||||
page_num = 1
|
||||
page_size = 30
|
||||
page_size = 50
|
||||
|
||||
sort_order = get_user_setting("series_sort_order", "Ascending")
|
||||
sort_field = get_user_setting("series_sort_field", "SortName")
|
||||
|
||||
options_list = ItemList(library.id, {"limit": page_size,
|
||||
item_list = ItemList(library.id, {"limit": page_size,
|
||||
"page": page_num,
|
||||
"SortBy": sort_field,
|
||||
"SortOrder": sort_order })
|
||||
options.TVShowData = options_list
|
||||
item_grid.objects = item_list
|
||||
|
||||
options.observeField("itemSelected", port)
|
||||
item_grid.observeField("itemSelected", port)
|
||||
|
||||
pager = scene.findNode("pager")
|
||||
pager.currentPage = page_num
|
||||
pager.maxPages = options_list.TotalRecordCount / page_size
|
||||
pager.maxPages = item_list.TotalRecordCount / page_size
|
||||
if pager.maxPages = 0 then pager.maxPages = 1
|
||||
|
||||
pager.observeField("escape", port)
|
||||
|
@ -437,22 +445,19 @@ sub ShowTVShowOptions(library)
|
|||
while true
|
||||
msg = wait(0, port)
|
||||
if nodeEventQ(msg, "escape") and msg.getNode() = "pager"
|
||||
options.setFocus(true)
|
||||
' TODO - rename
|
||||
' Obnoxiously here, "options" getNode is the "options panel"
|
||||
' and options.setFocus is the "options of tv shows"
|
||||
item_grid.setFocus(true)
|
||||
else if nodeEventQ(msg, "escape") and msg.getNode() = "options"
|
||||
options.setFocus(true)
|
||||
item_grid.setFocus(true)
|
||||
else if nodeEventQ(msg, "pageSelected") and pager.pageSelected <> invalid
|
||||
pager.pageSelected = invalid
|
||||
page_num = int(val(msg.getData().id))
|
||||
pager.currentPage = page_num
|
||||
options_list = ItemList(library.id, {"limit": page_size,
|
||||
item_list = ItemList(library.id, {"limit": page_size,
|
||||
"StartIndex": page_size * (page_num - 1),
|
||||
"SortBy": sort_field,
|
||||
"SortOrder": sort_order })
|
||||
options.TVShowData = options_list
|
||||
options.setFocus(true)
|
||||
item_grid.objects = item_list
|
||||
item_grid.setFocus(true)
|
||||
else if type(msg) = "roSGScreenEvent" and msg.isScreenClosed() then
|
||||
return
|
||||
else if nodeEventQ(msg, "itemSelected")
|
||||
|
@ -553,26 +558,25 @@ sub ShowCollections(library)
|
|||
|
||||
themeScene(scene)
|
||||
|
||||
options = scene.findNode("CollectionSelect")
|
||||
options.library = library
|
||||
item_grid = scene.findNode("picker")
|
||||
|
||||
page_num = 1
|
||||
page_size = 30
|
||||
page_size = 50
|
||||
|
||||
sort_order = get_user_setting("collection_sort_order", "Ascending")
|
||||
sort_field = get_user_setting("collection_sort_field", "SortName")
|
||||
|
||||
options_list = ItemList(library.id, {"limit": page_size,
|
||||
item_list = ItemList(library.id, {"limit": page_size,
|
||||
"StartIndex": page_size * (page_num - 1),
|
||||
"SortBy": sort_field,
|
||||
"SortOrder": sort_order })
|
||||
options.itemData = options_list
|
||||
item_grid.objects = item_list
|
||||
|
||||
options.observeField("itemSelected", port)
|
||||
item_grid.observeField("itemSelected", port)
|
||||
|
||||
pager = scene.findNode("pager")
|
||||
pager.currentPage = page_num
|
||||
pager.maxPages = options_list.TotalRecordCount / page_size
|
||||
pager.maxPages = item_list.TotalRecordCount / page_size
|
||||
if pager.maxPages = 0 then pager.maxPages = 1
|
||||
|
||||
pager.observeField("escape", port)
|
||||
|
@ -617,19 +621,19 @@ sub ShowCollections(library)
|
|||
if type(msg) = "roSGScreenEvent" and msg.isScreenClosed() then
|
||||
return
|
||||
else if nodeEventQ(msg, "escape") and msg.getNode() = "pager"
|
||||
options.setFocus(true)
|
||||
item_grid.setFocus(true)
|
||||
else if nodeEventQ(msg, "escape") and msg.getNode() = "options"
|
||||
options.setFocus(true)
|
||||
item_grid.setFocus(true)
|
||||
else if nodeEventQ(msg, "pageSelected") and pager.pageSelected <> invalid
|
||||
pager.pageSelected = invalid
|
||||
page_num = int(val(msg.getData().id))
|
||||
pager.currentPage = page_num
|
||||
options_list = ItemList(library.id, {"limit": page_size,
|
||||
item_list = ItemList(library.id, {"limit": page_size,
|
||||
"StartIndex": page_size * (page_num - 1),
|
||||
"SortBy": sort_field,
|
||||
"SortOrder": sort_order })
|
||||
options.itemData = options_list
|
||||
options.setFocus(true)
|
||||
item_grid.itemData = item_list
|
||||
item_grid.setFocus(true)
|
||||
else if nodeEventQ(msg, "itemSelected")
|
||||
target = getMsgRowTarget(msg)
|
||||
ShowMovieOptions(target)
|
||||
|
|
Loading…
Reference in New Issue
Block a user