diff --git a/components/ItemGrid.brs b/components/ItemGrid.brs
deleted file mode 100644
index 69fc316a..00000000
--- a/components/ItemGrid.brs
+++ /dev/null
@@ -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
diff --git a/components/ItemGrid.xml b/components/ItemGrid.xml
deleted file mode 100644
index 8a051b8e..00000000
--- a/components/ItemGrid.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/components/ItemGrid2/GridItem.brs b/components/ItemGrid/GridItem.brs
similarity index 100%
rename from components/ItemGrid2/GridItem.brs
rename to components/ItemGrid/GridItem.brs
diff --git a/components/ItemGrid2/GridItem.xml b/components/ItemGrid/GridItem.xml
similarity index 100%
rename from components/ItemGrid2/GridItem.xml
rename to components/ItemGrid/GridItem.xml
diff --git a/components/ItemGrid2/ItemGrid2.brs b/components/ItemGrid/ItemGrid.brs
similarity index 100%
rename from components/ItemGrid2/ItemGrid2.brs
rename to components/ItemGrid/ItemGrid.brs
diff --git a/components/ItemGrid2/ItemGrid2.xml b/components/ItemGrid/ItemGrid.xml
similarity index 94%
rename from components/ItemGrid2/ItemGrid2.xml
rename to components/ItemGrid/ItemGrid.xml
index d829eacb..18241b17 100644
--- a/components/ItemGrid2/ItemGrid2.xml
+++ b/components/ItemGrid/ItemGrid.xml
@@ -1,5 +1,5 @@
-
+
-
+
diff --git a/components/ItemGrid2/ItemGridOptions.brs b/components/ItemGrid/ItemGridOptions.brs
similarity index 100%
rename from components/ItemGrid2/ItemGridOptions.brs
rename to components/ItemGrid/ItemGridOptions.brs
diff --git a/components/ItemGrid2/ItemGridOptions.xml b/components/ItemGrid/ItemGridOptions.xml
similarity index 100%
rename from components/ItemGrid2/ItemGridOptions.xml
rename to components/ItemGrid/ItemGridOptions.xml
diff --git a/components/ItemGrid2/LoadItemsTask2.brs b/components/ItemGrid/LoadItemsTask2.brs
similarity index 100%
rename from components/ItemGrid2/LoadItemsTask2.brs
rename to components/ItemGrid/LoadItemsTask2.brs
diff --git a/components/ItemGrid2/LoadItemsTask2.xml b/components/ItemGrid/LoadItemsTask2.xml
similarity index 100%
rename from components/ItemGrid2/LoadItemsTask2.xml
rename to components/ItemGrid/LoadItemsTask2.xml
diff --git a/components/collections/Collections.brs b/components/collections/Collections.brs
deleted file mode 100644
index 3085d8d7..00000000
--- a/components/collections/Collections.brs
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/components/collections/Collections.xml b/components/collections/Collections.xml
deleted file mode 100644
index 390ee034..00000000
--- a/components/collections/Collections.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/tvshows/TVShows.brs b/components/tvshows/TVShows.brs
deleted file mode 100644
index 2d379bc4..00000000
--- a/components/tvshows/TVShows.brs
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/components/tvshows/TVShows.xml b/components/tvshows/TVShows.xml
deleted file mode 100644
index 9874af05..00000000
--- a/components/tvshows/TVShows.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/locale/default/translations.ts b/locale/default/translations.ts
index 82f9c282..030625ae 100644
--- a/locale/default/translations.ts
+++ b/locale/default/translations.ts
@@ -301,4 +301,16 @@
Menu option for showing Live TV Guide / Schedule
+
+
+
+ Message displayed in Item Grid when no item to display. %1 is container type (e.g. Boxset, Collection, Folder, etc)
+
+ This %1 contains no items
+
+
+
+ Add User
+
+
diff --git a/locale/it_IT/translations.ts b/locale/it_IT/translations.ts
index dc392c43..eddeca56 100644
--- a/locale/it_IT/translations.ts
+++ b/locale/it_IT/translations.ts
@@ -269,5 +269,202 @@
Si è verificato un errore durante la riproduzione di questo elemento.Dialog detail when error occurs during playback
+
+
+ Guida TV
+ Menu option for showing Live TV Guide / Schedule
+
+
+
+ Canali
+ Menu option for showing Live TV Channel List
+
+
+
+ Ripeti
+ If TV Shows has previously been broadcasted
+
+
+
+ Dal vivo
+ If TV Show is being broadcast live (not pre-recorded)
+
+
+
+ Terminato
+ (Past Tense) For defining a day and time when a program ended (e.g. Ended Wednesday, 08:00)
+
+
+
+ Terminato alle
+ (Past Tense) For defining time when a program will ended (e.g. Ended at 08:00)
+
+
+
+ Inizierà
+ (Future Tense) For defining a day and time when a program will start (e.g. Starts Wednesday, 08:00)
+
+
+
+ Inizierà alle
+ (Future Tense) For defining time when a program will start today (e.g. Starts at 08:00)
+
+
+
+ Iniziato
+ (Past Tense) For defining a day and time when a program started (e.g. Started Wednesday, 08:00)
+
+
+
+ Iniziato alle
+ (Past Tense) For defining time when a program started today (e.g. Started at 08:00)
+
+
+
+ Sabato
+ Day of Week
+
+
+
+ Venerdì
+ Day of Week
+
+
+
+ Giovedì
+ Day of Week
+
+
+
+ Mercoledì
+ Day of Week
+
+
+
+ Martedì
+ Day of Week
+
+
+
+ Lunedì
+ Day of Week
+
+
+
+ Domenica
+ Day of Week
+
+
+
+ domani
+ Next day
+
+
+
+ ieri
+ Previous day
+
+
+
+ oggi
+ Current day
+
+
+ Title of Tab for options to filter library content
+
+ Filtra
+
+
+ Title of Tab for options to sort library content
+
+ Ordina
+
+
+ Title of Tab for switching "views" when looking at a library
+
+ Vista
+
+
+
+ Tempo trascorso
+
+
+
+ Data di rilascio
+
+
+
+ Numero di riproduzioni
+
+
+
+ Valutazione parentale
+
+
+
+ Data di riproduzione
+
+
+
+ Data di aggiunta
+
+
+
+ Valutazione critica
+
+
+
+ Valutazione IMDb
+
+
+ Name or Title field of media item
+
+ Nome
+
+
+ Message displayed in Item Grid when no item to display. %1 is container type (e.g. Boxset, Collection, Folder, etc)
+
+ Questo %1 non contiene elementi
+
+
+
+ Impossibile ottenere dati del canale dal server
+
+
+
+ Errore nel caricamento dei dati del canale
+
+
+
+ Caricamento dati del canale
+
+
+
+ C'è stato un errore nella riproduzione di questo elemento.
+ Dialog detail when error occurs during playback
+
+
+
+ C'è stato un errore nell'ottenimento di informazioni dal sever per questo elemento.
+ Dialog detail when unable to load Content from Server
+
+
+
+ Errore durante la riproduzione
+ Dialog title when error occurs during playback
+
+
+
+ Errore nell'ottenimento del contenuto
+ Dialog title when unable to load Content from Server
+
+
+
+ Esci
+
+
+
+ Cambia Server
+
diff --git a/source/Main.brs b/source/Main.brs
index cfff2694..08dd6b73 100644
--- a/source/Main.brs
+++ b/source/Main.brs
@@ -108,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"
@@ -159,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
@@ -234,11 +197,7 @@ sub Main()
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")
diff --git a/source/ShowScenes.brs b/source/ShowScenes.brs
index 225a73d6..d0622dc9 100644
--- a/source/ShowScenes.brs
+++ b/source/ShowScenes.brs
@@ -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
diff --git a/source/VideoPlayer.brs b/source/VideoPlayer.brs
index f77acedd..9ac12cf6 100644
--- a/source/VideoPlayer.brs
+++ b/source/VideoPlayer.brs
@@ -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,