2020-12-04 08:17:16 +00:00
|
|
|
sub init()
|
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
m.itemText = m.top.findNode("itemText")
|
|
|
|
m.itemPoster = m.top.findNode("itemPoster")
|
2022-12-10 02:53:00 +00:00
|
|
|
m.itemProgress = m.top.findNode("progress")
|
|
|
|
m.itemProgressBackground = m.top.findNode("progressBackground")
|
2021-07-09 20:08:32 +00:00
|
|
|
m.itemIcon = m.top.findNode("itemIcon")
|
|
|
|
m.itemTextExtra = m.top.findNode("itemTextExtra")
|
|
|
|
m.itemPoster.observeField("loadStatus", "onPosterLoadStatusChanged")
|
2020-12-04 08:17:16 +00:00
|
|
|
|
2022-12-10 02:53:00 +00:00
|
|
|
m.showProgressBarAnimation = m.top.findNode("showProgressBar")
|
|
|
|
m.showProgressBarField = m.top.findNode("showProgressBarField")
|
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
' Randomize the background colors
|
|
|
|
m.backdrop = m.top.findNode("backdrop")
|
|
|
|
posterBackgrounds = m.global.constants.poster_bg_pallet
|
|
|
|
m.backdrop.color = posterBackgrounds[rnd(posterBackgrounds.count()) - 1]
|
2020-12-04 08:17:16 +00:00
|
|
|
|
|
|
|
end sub
|
|
|
|
|
|
|
|
|
2020-03-12 18:33:45 +00:00
|
|
|
sub itemContentChanged()
|
2021-07-09 20:08:32 +00:00
|
|
|
itemData = m.top.itemContent
|
|
|
|
if itemData = invalid then return
|
|
|
|
itemData.Title = itemData.name ' Temporarily required while we move from "HomeItem" to "JFContentItem"
|
2022-07-12 23:15:59 +00:00
|
|
|
|
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
m.itemPoster.width = itemData.imageWidth
|
|
|
|
m.itemText.maxWidth = itemData.imageWidth
|
|
|
|
m.itemTextExtra.width = itemData.imageWidth
|
|
|
|
m.itemTextExtra.visible = true
|
2020-03-05 09:11:45 +00:00
|
|
|
|
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
m.backdrop.width = itemData.imageWidth
|
2020-03-12 18:33:45 +00:00
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
if itemData.iconUrl <> invalid
|
|
|
|
m.itemIcon.uri = itemData.iconUrl
|
2020-03-12 18:33:45 +00:00
|
|
|
end if
|
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
' Format the Data based on the type of Home Data
|
|
|
|
if itemData.type = "CollectionFolder" or itemData.type = "UserView" or itemData.type = "Channel"
|
|
|
|
m.itemText.text = itemData.name
|
2022-07-12 23:15:59 +00:00
|
|
|
m.itemPoster.uri = itemData.widePosterURL
|
2021-07-09 20:08:32 +00:00
|
|
|
return
|
2020-03-12 18:33:45 +00:00
|
|
|
end if
|
|
|
|
|
2022-07-12 23:15:59 +00:00
|
|
|
if itemData.type = "UserView"
|
2021-07-09 20:08:32 +00:00
|
|
|
m.itemPoster.width = "96"
|
|
|
|
m.itemPoster.height = "96"
|
|
|
|
m.itemPoster.translation = "[192, 88]"
|
|
|
|
m.itemText.text = itemData.name
|
|
|
|
m.itemPoster.uri = itemData.widePosterURL
|
|
|
|
return
|
2020-03-05 09:11:45 +00:00
|
|
|
end if
|
2020-03-12 18:33:45 +00:00
|
|
|
|
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
m.itemText.height = 34
|
|
|
|
m.itemText.font.size = 25
|
|
|
|
m.itemText.horizAlign = "left"
|
2022-07-12 23:15:59 +00:00
|
|
|
m.itemText.vertAlign = "bottom"
|
|
|
|
m.itemTextExtra.visible = true
|
2021-07-09 20:08:32 +00:00
|
|
|
m.itemTextExtra.font.size = 22
|
|
|
|
|
2021-12-18 06:43:28 +00:00
|
|
|
' "Program" is from clicking on an "On Now" item on the Home Screen
|
2021-12-17 06:18:19 +00:00
|
|
|
if itemData.type = "Program"
|
|
|
|
m.itemText.Text = itemData.json.name
|
2021-12-19 01:12:33 +00:00
|
|
|
if itemData.json.ImageURL <> invalid
|
2021-12-17 06:18:19 +00:00
|
|
|
m.itemPoster.uri = itemData.json.ImageURL
|
|
|
|
end if
|
|
|
|
|
2021-12-20 14:57:22 +00:00
|
|
|
' Set Episode title if available
|
2021-12-17 06:18:19 +00:00
|
|
|
if itemData.json.EpisodeTitle <> invalid
|
|
|
|
m.itemTextExtra.text = itemData.json.EpisodeTitle
|
|
|
|
end if
|
|
|
|
|
|
|
|
return
|
|
|
|
end if
|
2021-07-09 20:08:32 +00:00
|
|
|
|
|
|
|
if itemData.type = "Episode"
|
|
|
|
m.itemText.text = itemData.json.SeriesName
|
|
|
|
|
2022-12-10 02:53:00 +00:00
|
|
|
if itemData.PlayedPercentage > 0
|
|
|
|
drawProgressBar(itemData)
|
|
|
|
end if
|
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
if itemData.usePoster = true
|
2022-05-24 16:23:42 +00:00
|
|
|
m.itemPoster.uri = itemData.widePosterURL
|
2022-07-12 23:15:59 +00:00
|
|
|
else
|
|
|
|
m.itemPoster.uri = itemData.thumbnailURL
|
2021-07-09 20:08:32 +00:00
|
|
|
end if
|
|
|
|
|
|
|
|
' Set Series and Episode Number for Extra Text
|
|
|
|
extraPrefix = ""
|
|
|
|
if itemData.json.ParentIndexNumber <> invalid
|
|
|
|
extraPrefix = "S" + StrI(itemData.json.ParentIndexNumber).trim()
|
|
|
|
end if
|
|
|
|
if itemData.json.IndexNumber <> invalid
|
|
|
|
extraPrefix = extraPrefix + "E" + StrI(itemData.json.IndexNumber).trim()
|
|
|
|
end if
|
|
|
|
if extraPrefix.len() > 0
|
|
|
|
extraPrefix = extraPrefix + " - "
|
|
|
|
end if
|
|
|
|
|
|
|
|
m.itemTextExtra.text = extraPrefix + itemData.name
|
|
|
|
return
|
|
|
|
end if
|
2020-05-13 19:36:38 +00:00
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
if itemData.type = "Movie"
|
|
|
|
m.itemText.text = itemData.name
|
|
|
|
|
2022-12-10 02:53:00 +00:00
|
|
|
if itemData.PlayedPercentage > 0
|
|
|
|
drawProgressBar(itemData)
|
|
|
|
end if
|
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
' Use best image, but fallback to secondary if it's empty
|
|
|
|
if (itemData.imageWidth = 180 and itemData.posterURL <> "") or itemData.thumbnailURL = ""
|
|
|
|
m.itemPoster.uri = itemData.posterURL
|
|
|
|
else
|
|
|
|
m.itemPoster.uri = itemData.thumbnailURL
|
|
|
|
end if
|
|
|
|
|
|
|
|
' Set Release Year and Age Rating for Extra Text
|
|
|
|
textExtra = ""
|
|
|
|
if itemData.json.ProductionYear <> invalid
|
|
|
|
textExtra = StrI(itemData.json.ProductionYear).trim()
|
|
|
|
end if
|
|
|
|
if itemData.json.OfficialRating <> invalid
|
|
|
|
if textExtra <> ""
|
|
|
|
textExtra = textExtra + " - " + itemData.json.OfficialRating
|
|
|
|
else
|
|
|
|
textExtra = itemData.json.OfficialRating
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
m.itemTextExtra.text = textExtra
|
|
|
|
|
|
|
|
return
|
2020-05-13 19:36:38 +00:00
|
|
|
end if
|
2020-03-12 18:33:45 +00:00
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
if itemData.type = "Video"
|
|
|
|
m.itemText.text = itemData.name
|
2020-03-12 18:33:45 +00:00
|
|
|
|
2022-12-10 02:53:00 +00:00
|
|
|
if itemData.PlayedPercentage > 0
|
|
|
|
drawProgressBar(itemData)
|
|
|
|
end if
|
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
if itemData.imageWidth = 180
|
|
|
|
m.itemPoster.uri = itemData.posterURL
|
|
|
|
else
|
|
|
|
m.itemPoster.uri = itemData.thumbnailURL
|
|
|
|
end if
|
|
|
|
return
|
2020-03-12 18:33:45 +00:00
|
|
|
end if
|
2022-11-05 00:37:54 +00:00
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
if itemData.type = "Series"
|
2022-07-12 23:15:59 +00:00
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
m.itemText.text = itemData.name
|
2022-07-12 23:15:59 +00:00
|
|
|
|
|
|
|
if itemData.usePoster = true
|
|
|
|
if itemData.imageWidth = 180
|
|
|
|
m.itemPoster.uri = itemData.posterURL
|
|
|
|
else
|
|
|
|
m.itemPoster.uri = itemData.widePosterURL
|
|
|
|
end if
|
|
|
|
else
|
|
|
|
m.itemPoster.uri = itemData.thumbnailURL
|
2021-07-09 20:08:32 +00:00
|
|
|
end if
|
2022-07-12 23:15:59 +00:00
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
textExtra = ""
|
|
|
|
if itemData.json.ProductionYear <> invalid
|
|
|
|
textExtra = StrI(itemData.json.ProductionYear).trim()
|
|
|
|
end if
|
|
|
|
|
|
|
|
' Set Years Run for Extra Text
|
|
|
|
if itemData.json.Status = "Continuing"
|
|
|
|
textExtra = textExtra + " - Present"
|
|
|
|
else if itemData.json.Status = "Ended" and itemData.json.EndDate <> invalid
|
|
|
|
textExtra = textExtra + " - " + LEFT(itemData.json.EndDate, 4)
|
|
|
|
end if
|
|
|
|
m.itemTextExtra.text = textExtra
|
|
|
|
|
|
|
|
return
|
2019-10-13 08:59:51 +00:00
|
|
|
end if
|
2020-03-12 18:33:45 +00:00
|
|
|
|
2022-07-12 23:15:59 +00:00
|
|
|
if itemData.type = "MusicAlbum"
|
2021-07-09 20:08:32 +00:00
|
|
|
m.itemText.text = itemData.name
|
|
|
|
m.itemTextExtra.text = itemData.json.AlbumArtist
|
2022-07-12 23:15:59 +00:00
|
|
|
m.itemPoster.uri = itemData.posterURL
|
2021-07-09 20:08:32 +00:00
|
|
|
return
|
2020-03-12 18:33:45 +00:00
|
|
|
end if
|
|
|
|
|
2022-11-05 00:37:54 +00:00
|
|
|
if itemData.type = "MusicArtist"
|
|
|
|
m.itemText.text = itemData.name
|
|
|
|
m.itemTextExtra.text = itemData.json.AlbumArtist
|
|
|
|
m.itemPoster.uri = ImageURL(itemData.id)
|
|
|
|
return
|
|
|
|
end if
|
|
|
|
|
|
|
|
if itemData.type = "Audio"
|
|
|
|
m.itemText.text = itemData.name
|
|
|
|
m.itemTextExtra.text = itemData.json.AlbumArtist
|
|
|
|
m.itemPoster.uri = ImageURL(itemData.id)
|
|
|
|
return
|
|
|
|
end if
|
|
|
|
|
|
|
|
if itemData.type = "TvChannel"
|
|
|
|
m.itemText.text = itemData.name
|
|
|
|
m.itemTextExtra.text = itemData.json.AlbumArtist
|
|
|
|
m.itemPoster.uri = ImageURL(itemData.id)
|
|
|
|
return
|
|
|
|
end if
|
|
|
|
|
|
|
|
if itemData.type = "Season"
|
|
|
|
m.itemText.text = itemData.json.SeriesName
|
|
|
|
m.itemTextExtra.text = itemData.name
|
|
|
|
m.itemPoster.uri = ImageURL(itemData.id)
|
|
|
|
return
|
|
|
|
end if
|
|
|
|
|
2021-12-17 06:18:19 +00:00
|
|
|
print "Unhandled Home Item Type: " + itemData.type
|
2020-03-12 18:33:45 +00:00
|
|
|
|
|
|
|
end sub
|
2020-05-13 15:50:20 +00:00
|
|
|
|
2022-12-10 02:53:00 +00:00
|
|
|
'
|
|
|
|
' Draws and animates item progress bar
|
|
|
|
sub drawProgressBar(itemData)
|
|
|
|
m.itemProgressBackground.width = itemData.imageWidth
|
|
|
|
m.itemProgressBackground.visible = true
|
|
|
|
m.showProgressBarField.keyValue = [0, m.itemPoster.width * (itemData.PlayedPercentage / 100)]
|
|
|
|
m.showProgressBarAnimation.control = "Start"
|
|
|
|
end sub
|
|
|
|
|
2020-05-13 15:50:20 +00:00
|
|
|
'
|
|
|
|
' Enable title scrolling based on item Focus
|
|
|
|
sub focusChanged()
|
|
|
|
|
2021-07-09 20:08:32 +00:00
|
|
|
if m.top.itemHasFocus = true
|
|
|
|
m.itemText.repeatCount = -1
|
|
|
|
else
|
|
|
|
m.itemText.repeatCount = 0
|
|
|
|
end if
|
2020-05-13 15:50:20 +00:00
|
|
|
|
|
|
|
end sub
|
2020-12-02 21:33:59 +00:00
|
|
|
|
|
|
|
'Hide backdrop and icon when poster loaded
|
|
|
|
sub onPosterLoadStatusChanged()
|
2022-07-12 23:15:59 +00:00
|
|
|
if m.itemPoster.loadStatus = "ready" and m.itemPoster.uri <> ""
|
|
|
|
m.backdrop.visible = false
|
|
|
|
m.itemIcon.visible = false
|
|
|
|
else
|
|
|
|
m.backdrop.visible = true
|
|
|
|
m.itemIcon.visible = true
|
2021-07-09 20:08:32 +00:00
|
|
|
end if
|
2022-05-30 12:57:40 +00:00
|
|
|
end sub
|