Merge branch 'master' into autoplay-playback-info
This commit is contained in:
commit
b6df996503
|
@ -1,96 +0,0 @@
|
|||
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 = 6
|
||||
end if
|
||||
|
||||
dimensions = m.top.getScene().currentDesignResolution
|
||||
|
||||
topBorder = 75
|
||||
border = 96
|
||||
topSpace = topBorder + 105
|
||||
m.top.translation = [96, topSpace]
|
||||
|
||||
textHeight = 100
|
||||
itemWidth = (dimensions["width"] - border*2) / m.top.itemsPerRow -20
|
||||
itemHeight = itemWidth * 1.5 + textHeight
|
||||
|
||||
if itemHeight*m.top.rowsPerPage > (dimensions["height"] - topBorder - 115) then
|
||||
ratio = (itemHeight*m.top.rowsPerPage) / (981 - topSpace - 15)
|
||||
itemHeight = itemHeight / ratio
|
||||
itemWidth = itemWidth / ratio
|
||||
end if
|
||||
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
|
||||
itemSpace = (dimensions["width"] - border*2 - itemWidth*m.top.itemsPerRow) / (m.top.itemsPerRow-1)
|
||||
m.top.rowItemSpacing = [ itemSpace-1, 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
|
||||
|
||||
return false
|
||||
end function
|
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="ItemGrid" extends="RowList">
|
||||
<interface>
|
||||
<field id="itemsPerRow" type="int" />
|
||||
<field id="rowsPerPage" type="int" value="2" />
|
||||
<field id="objects" type="assocarray" onChange="setupRows" />
|
||||
<field id="escapeButton" type="string" alwaysNotify="true" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="ItemGrid.brs" />
|
||||
</component>
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="ItemGrid2" extends="JFGroup">
|
||||
<component name="ItemGrid" extends="JFGroup">
|
||||
<children>
|
||||
<poster id="backdrop"
|
||||
loadDisplayMode="scaleToFill"
|
||||
|
@ -39,5 +39,5 @@
|
|||
<script type="text/brightscript" uri="pkg:/source/utils/misc.brs" />
|
||||
<script type="text/brightscript" uri="pkg:/source/utils/config.brs" />
|
||||
<script type="text/brightscript" uri="pkg:/source/utils/deviceCapabilities.brs" />
|
||||
<script type="text/brightscript" uri="ItemGrid2.brs" />
|
||||
<script type="text/brightscript" uri="ItemGrid.brs" />
|
||||
</component>
|
|
@ -1,14 +0,0 @@
|
|||
sub init()
|
||||
m.top.overhangTitle = "Collections"
|
||||
end sub
|
||||
|
||||
function onKeyEvent(key as string, press as boolean) as boolean
|
||||
if not press then return false
|
||||
|
||||
if key = "down"
|
||||
m.top.lastFocus = m.top.focusedChild
|
||||
m.top.findNode("paginator").setFocus(true)
|
||||
end if
|
||||
|
||||
return false
|
||||
end function
|
|
@ -1,14 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="Collections" extends="JFGroup">
|
||||
<children>
|
||||
<ItemGrid id="picker" visible="true" itemsPerRow="6" />
|
||||
<OptionsSlider id="options" />
|
||||
<Rectangle translation="[0,981]" width="1920" height="100" color="#101010" />
|
||||
</children>
|
||||
<interface>
|
||||
<field id="collectionSelected" alias="picker.itemSelected" />
|
||||
<field id="objects" alias="picker.objects" />
|
||||
<field id="pageNumber" type="integer" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="Collections.brs" />
|
||||
</component>
|
|
@ -1,14 +0,0 @@
|
|||
sub init()
|
||||
|
||||
end sub
|
||||
|
||||
function onKeyEvent(key as string, press as boolean) as boolean
|
||||
if not press then return false
|
||||
|
||||
if key = "down"
|
||||
m.top.lastFocus = m.top.focusedChild
|
||||
m.top.findNode("paginator").setFocus(true)
|
||||
end if
|
||||
|
||||
return false
|
||||
end function
|
|
@ -1,14 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<component name="TVShows" extends="JFGroup">
|
||||
<children>
|
||||
<ItemGrid id="picker" visible="true" itemsPerRow="6" />
|
||||
<OptionsSlider id="options" />
|
||||
<Rectangle translation="[0,981]" width="1920" height="100" color="#101010" />
|
||||
</children>
|
||||
<interface>
|
||||
<field id="seriesSelected" alias="picker.itemSelected" />
|
||||
<field id="objects" alias="picker.objects" />
|
||||
<field id="pageNumber" type="integer" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="TVShows.brs" />
|
||||
</component>
|
|
@ -301,4 +301,16 @@
|
|||
<extracomment>Menu option for showing Live TV Guide / Schedule</extracomment>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name></name>
|
||||
<message>
|
||||
<comment>Message displayed in Item Grid when no item to display. %1 is container type (e.g. Boxset, Collection, Folder, etc)</comment>
|
||||
<source>NO_ITEMS</source>
|
||||
<translation>This %1 contains no items</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add User</source>
|
||||
<translation>Add User</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -269,5 +269,202 @@
|
|||
<translation>Si è verificato un errore durante la riproduzione di questo elemento.</translation>
|
||||
<extracomment>Dialog detail when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>TV Guide</source>
|
||||
<translation>Guida TV</translation>
|
||||
<extracomment>Menu option for showing Live TV Guide / Schedule</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Channels</source>
|
||||
<translation>Canali</translation>
|
||||
<extracomment>Menu option for showing Live TV Channel List</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat</source>
|
||||
<translation>Ripeti</translation>
|
||||
<extracomment>If TV Shows has previously been broadcasted</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Live</source>
|
||||
<translation>Dal vivo</translation>
|
||||
<extracomment>If TV Show is being broadcast live (not pre-recorded)</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ends at</source>
|
||||
<translation>Terminato</translation>
|
||||
<extracomment>(Past Tense) For defining a day and time when a program ended (e.g. Ended Wednesday, 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ended at</source>
|
||||
<translation>Terminato alle</translation>
|
||||
<extracomment>(Past Tense) For defining time when a program will ended (e.g. Ended at 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starts</source>
|
||||
<translation>Inizierà</translation>
|
||||
<extracomment>(Future Tense) For defining a day and time when a program will start (e.g. Starts Wednesday, 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starts at</source>
|
||||
<translation>Inizierà alle</translation>
|
||||
<extracomment>(Future Tense) For defining time when a program will start today (e.g. Starts at 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Started</source>
|
||||
<translation>Iniziato</translation>
|
||||
<extracomment>(Past Tense) For defining a day and time when a program started (e.g. Started Wednesday, 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Started at</source>
|
||||
<translation>Iniziato alle</translation>
|
||||
<extracomment>(Past Tense) For defining time when a program started today (e.g. Started at 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Saturday</source>
|
||||
<translation>Sabato</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Friday</source>
|
||||
<translation>Venerdì</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Thursday</source>
|
||||
<translation>Giovedì</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wednesday</source>
|
||||
<translation>Mercoledì</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tuesday</source>
|
||||
<translation>Martedì</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Monday</source>
|
||||
<translation>Lunedì</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sunday</source>
|
||||
<translation>Domenica</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>tomorrow</source>
|
||||
<translation>domani</translation>
|
||||
<extracomment>Next day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>yesterday</source>
|
||||
<translation>ieri</translation>
|
||||
<extracomment>Previous day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>today</source>
|
||||
<translation>oggi</translation>
|
||||
<extracomment>Current day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for options to filter library content</comment>
|
||||
<source>TAB_FILTER</source>
|
||||
<translation>Filtra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for options to sort library content</comment>
|
||||
<source>TAB_SORT</source>
|
||||
<translation>Ordina</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for switching "views" when looking at a library</comment>
|
||||
<source>TAB_VIEW</source>
|
||||
<translation>Vista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RUNTIME</source>
|
||||
<translation>Tempo trascorso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RELEASE_DATE</source>
|
||||
<translation>Data di rilascio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PLAY_COUNT</source>
|
||||
<translation>Numero di riproduzioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>OFFICIAL_RATING</source>
|
||||
<translation>Valutazione parentale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_PLAYED</source>
|
||||
<translation>Data di riproduzione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_ADDED</source>
|
||||
<translation>Data di aggiunta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CRITIC_RATING</source>
|
||||
<translation>Valutazione critica</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IMDB_RATING</source>
|
||||
<translation>Valutazione IMDb</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Name or Title field of media item</comment>
|
||||
<source>TITLE</source>
|
||||
<translation>Nome</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Message displayed in Item Grid when no item to display. %1 is container type (e.g. Boxset, Collection, Folder, etc)</comment>
|
||||
<source>NO_ITEMS</source>
|
||||
<translation>Questo %1 non contiene elementi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to load Channel Data from the server</source>
|
||||
<translation>Impossibile ottenere dati del canale dal server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading Channel Data</source>
|
||||
<translation>Errore nel caricamento dei dati del canale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading Channel Data</source>
|
||||
<translation>Caricamento dati del canale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error was encountered while playing this item.</source>
|
||||
<translation>C'è stato un errore nella riproduzione di questo elemento.</translation>
|
||||
<extracomment>Dialog detail when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error retrieving the data for this item from the server.</source>
|
||||
<translation>C'è stato un errore nell'ottenimento di informazioni dal sever per questo elemento.</translation>
|
||||
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error During Playback</source>
|
||||
<translation>Errore durante la riproduzione</translation>
|
||||
<extracomment>Dialog title when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Retrieving Content</source>
|
||||
<translation>Errore nell'ottenimento del contenuto</translation>
|
||||
<extracomment>Dialog title when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sign Out</source>
|
||||
<translation>Esci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change Server</source>
|
||||
<translation>Cambia Server</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -61,6 +61,11 @@ sub Main()
|
|||
if type(msg) = "roSGScreenEvent" and msg.isScreenClosed() then
|
||||
print "CLOSING SCREEN"
|
||||
return
|
||||
else if isNodeEvent(msg, "buttonSelected")
|
||||
' Dialog Button Selected - If not handled more locally, just close the dialog
|
||||
dialog = msg.getRoSGNode()
|
||||
dialog.unobserveField("buttonSelected")
|
||||
dialog.close = true
|
||||
else if isNodeEvent(msg, "backPressed")
|
||||
n = m.scene.getChildCount() - 1
|
||||
if msg.getRoSGNode().focusedChild <> invalid and msg.getRoSGNode().focusedChild.isSubtype("JFVideo")
|
||||
|
@ -103,49 +108,12 @@ sub Main()
|
|||
else if isNodeEvent(msg, "selectedItem")
|
||||
' If you select a library from ANYWHERE, follow this flow
|
||||
selectedItem = msg.getData()
|
||||
if (selectedItem.type = "CollectionFolder" OR selectedItem.type = "UserView" OR selectedItem.type = "Folder") AND ( selectedItem.collectionType = "movies" or selectedItem.collectionType = "CollectionFolder")
|
||||
if selectedItem.type = "CollectionFolder" OR selectedItem.type = "UserView" OR selectedItem.type = "Folder"
|
||||
group.lastFocus = group.focusedChild
|
||||
group.setFocus(false)
|
||||
group.visible = false
|
||||
m.overhang.title = selectedItem.title
|
||||
group = CreateMovieListGroup(selectedItem)
|
||||
group.overhangTitle = selectedItem.title
|
||||
m.scene.appendChild(group)
|
||||
else if (selectedItem.type = "CollectionFolder" OR selectedItem.type = "UserView") AND selectedItem.collectionType = "tvshows"
|
||||
group.lastFocus = group.focusedChild
|
||||
group.setFocus(false)
|
||||
group.visible = false
|
||||
|
||||
m.overhang.title = selectedItem.title
|
||||
group = CreateSeriesListGroup(selectedItem)
|
||||
group.overhangTitle = selectedItem.title
|
||||
m.scene.appendChild(group)
|
||||
else if (selectedItem.type = "CollectionFolder" OR selectedItem.type = "UserView") AND selectedItem.collectionType = "boxsets" OR selectedItem.type = "Boxset"
|
||||
group.lastFocus = group.focusedChild
|
||||
group.setFocus(false)
|
||||
group.visible = false
|
||||
|
||||
m.overhang.title = selectedItem.title
|
||||
group = CreateCollectionsList(selectedItem)
|
||||
group.overhangTitle = selectedItem.title
|
||||
m.scene.appendChild(group)
|
||||
else if ((selectedItem.type = "CollectionFolder" OR selectedItem.type = "UserView") AND selectedItem.collectionType = "livetv") OR selectedItem.type = "Channel"
|
||||
group.lastFocus = group.focusedChild
|
||||
group.setFocus(false)
|
||||
group.visible = false
|
||||
|
||||
m.overhang.title = selectedItem.title
|
||||
group = CreateChannelList(selectedItem)
|
||||
group.overhangTitle = selectedItem.title
|
||||
m.scene.appendChild(group)
|
||||
else if selectedItem.type = "Boxset" or selectedItem.collectionType = "folders" then
|
||||
|
||||
group.lastFocus = group.focusedChild
|
||||
group.setFocus(false)
|
||||
group.visible = false
|
||||
|
||||
m.overhang.title = selectedItem.title
|
||||
group = CreateCollectionDetailList(selectedItem.Id)
|
||||
group = CreateItemGrid(selectedItem)
|
||||
group.overhangTitle = selectedItem.title
|
||||
m.scene.appendChild(group)
|
||||
else if selectedItem.type = "Folder"
|
||||
|
@ -154,7 +122,7 @@ sub Main()
|
|||
group.visible = false
|
||||
|
||||
m.overhang.title = selectedItem.title
|
||||
group = CreateCollectionsList(selectedItem)
|
||||
group = CreateItemGrid(selectedItem)
|
||||
group.overhangTitle = selectedItem.title
|
||||
m.scene.appendChild(group)
|
||||
else if selectedItem.type = "Episode" then
|
||||
|
@ -225,14 +193,11 @@ sub Main()
|
|||
dialog.message = tr("Unable to load Channel Data from the server")
|
||||
dialog.buttons = [tr("OK")]
|
||||
m.scene.dialog = dialog
|
||||
m.scene.dialog.observeField("buttonSelected", m.port)
|
||||
end if
|
||||
else
|
||||
' TODO - switch on more node types
|
||||
if selectedItem.type = "CollectionFolder" OR selectedItem.type = "UserView" then
|
||||
message_dialog("This library type is not yet implemented: " + selectedItem.collectionType + ".")
|
||||
else
|
||||
message_dialog("This library type is not yet implemented: " + selectedItem.type + ".")
|
||||
end if
|
||||
message_dialog("This type is not yet supported: " + selectedItem.type + ".")
|
||||
selectedItem = invalid
|
||||
end if
|
||||
else if isNodeEvent(msg, "movieSelected")
|
||||
|
|
|
@ -211,50 +211,6 @@ function CreateHomeGroup()
|
|||
return group
|
||||
end function
|
||||
|
||||
function CreateMovieListGroup(libraryItem)
|
||||
group = CreateObject("roSGNode", "ItemGrid2")
|
||||
group.parentItem = libraryItem
|
||||
|
||||
group.observeField("selectedItem", m.port)
|
||||
group.observeField("quickPlayNode", m.port)
|
||||
|
||||
sidepanel = group.findNode("options")
|
||||
movie_options = [
|
||||
{"title": "Sort Field",
|
||||
"base_title": "Sort Field",
|
||||
"key": "movie_sort_field",
|
||||
"default": "DateCreated",
|
||||
"values": [
|
||||
{display: tr("Date Added"), value: "DateCreated"},
|
||||
{display: tr("Release Date"), value: "PremiereDate"},
|
||||
{display: tr("Name"), value: "SortName"}
|
||||
]},
|
||||
{"title": "Sort Order",
|
||||
"base_title": "Sort Order",
|
||||
"key": "movie_sort_order",
|
||||
"default": "Ascending",
|
||||
"values": [
|
||||
{display: tr("Descending"), value: "Descending"},
|
||||
{display: tr("Ascending"), value: "Ascending"}
|
||||
]}
|
||||
]
|
||||
new_options = []
|
||||
for each opt in movie_options
|
||||
o = CreateObject("roSGNode", "OptionsData")
|
||||
o.title = tr(opt.title)
|
||||
o.choices = opt.values
|
||||
o.base_title = tr(opt.base_title)
|
||||
o.config_key = opt.key
|
||||
o.value = get_user_setting(opt.key, opt.default)
|
||||
new_options.append([o])
|
||||
end for
|
||||
|
||||
sidepanel.options = new_options
|
||||
sidepanel.observeField("closeSidePanel", m.port)
|
||||
|
||||
return group
|
||||
end function
|
||||
|
||||
function CreateMovieDetailsGroup(movie)
|
||||
group = CreateObject("roSGNode", "MovieDetails")
|
||||
|
||||
|
@ -269,18 +225,6 @@ function CreateMovieDetailsGroup(movie)
|
|||
return group
|
||||
end function
|
||||
|
||||
function CreateSeriesListGroup(libraryItem)
|
||||
|
||||
group = CreateObject("roSGNode", "ItemGrid2")
|
||||
group.parentItem = libraryItem
|
||||
|
||||
group.observeField("selectedItem", m.port)
|
||||
|
||||
sidepanel = group.findNode("options")
|
||||
|
||||
return group
|
||||
end function
|
||||
|
||||
function CreateSeriesDetailsGroup(series)
|
||||
group = CreateObject("roSGNode", "TVShowDetails")
|
||||
|
||||
|
@ -304,46 +248,10 @@ function CreateSeasonDetailsGroup(series, season)
|
|||
return group
|
||||
end function
|
||||
|
||||
function CreateCollectionsList(libraryItem)
|
||||
|
||||
group = CreateObject("roSGNode", "ItemGrid2")
|
||||
function CreateItemGrid(libraryItem)
|
||||
group = CreateObject("roSGNode", "ItemGrid")
|
||||
group.parentItem = libraryItem
|
||||
|
||||
group.observeField("selectedItem", m.port)
|
||||
group.observeField("quickPlayNode", m.port)
|
||||
|
||||
sidepanel = group.findNode("options")
|
||||
|
||||
return group
|
||||
end function
|
||||
|
||||
function CreateCollectionDetailList(collectionId)
|
||||
|
||||
sort_order = get_user_setting("movie_sort_order", "Ascending")
|
||||
sort_field = get_user_setting("movie_sort_field", "SortName")
|
||||
|
||||
item_list = ItemList(collectionId, {
|
||||
"SortBy": sort_field,
|
||||
"SortOrder": sort_order
|
||||
})
|
||||
|
||||
group = CreateObject("roSGNode", "CollectionDetail")
|
||||
group.collectionId = collectionId
|
||||
group.objects = item_list
|
||||
|
||||
group.observeField("selectedItem", m.port)
|
||||
|
||||
return group
|
||||
end function
|
||||
|
||||
function CreateChannelList(libraryItem)
|
||||
group = CreateObject("roSGNode", "ItemGrid2")
|
||||
group.parentItem = libraryItem
|
||||
|
||||
group.observeField("selectedItem", m.port)
|
||||
|
||||
sidepanel = group.findNode("options")
|
||||
|
||||
return group
|
||||
end function
|
||||
|
||||
|
|
|
@ -198,7 +198,7 @@ function sortSubtitles(id as string, MediaStreams)
|
|||
'Documentation lists that srt, ttml, and dfxp can be sideloaded but only srt was working in my testing,
|
||||
'forcing srt for all text subtitles
|
||||
url = Substitute("{0}/Videos/{1}/{2}/Subtitles/{3}/0/", get_url(), dashedid, id, stream.index.tostr())
|
||||
url = url + Substitute("Stream.js?api_key={0}&format=srt", get_setting("active_user"))
|
||||
url = url + Substitute("Stream.srt?api_key={0}", get_setting("active_user"))
|
||||
stream = {
|
||||
"Track": { "Language" : stream.language, "Description": stream.displaytitle , "TrackName": url },
|
||||
"IsTextSubtitleStream": stream.IsTextSubtitleStream,
|
||||
|
|
Loading…
Reference in New Issue
Block a user