Merge branch 'Add-Loading-ux-to-movies-details-screen' into candry-loadingux
This commit is contained in:
commit
654c0b8aaf
|
@ -43,12 +43,14 @@ sub itemContentChanged()
|
|||
m.itemIcon.uri = itemData.iconUrl
|
||||
m.itemText.text = itemData.Title
|
||||
else if itemData.type = "Series"
|
||||
if get_user_setting("ui.tvshows.disableUnwatchedEpisodeCount", "false") = "false"
|
||||
if itemData?.json?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.json.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.json.UserData.UnplayedItemCount
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
||||
m.itemPoster.uri = itemData.PosterUrl
|
||||
m.itemIcon.uri = itemData.iconUrl
|
||||
|
|
|
@ -57,12 +57,14 @@ sub itemContentChanged() as void
|
|||
itemData = m.top.itemContent
|
||||
m.title.text = itemData.title
|
||||
|
||||
if get_user_setting("ui.tvshows.disableUnwatchedEpisodeCount", "false") = "false"
|
||||
if itemData?.json?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.json.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.json.UserData.UnplayedItemCount
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
||||
if itemData.json.lookup("Type") = "Episode" and itemData.json.IndexNumber <> invalid
|
||||
m.title.text = StrI(itemData.json.IndexNumber) + ". " + m.title.text
|
||||
|
|
|
@ -38,6 +38,7 @@ sub itemContentChanged()
|
|||
end if
|
||||
|
||||
if LCase(itemData.type) = "series"
|
||||
if get_user_setting("ui.tvshows.disableUnwatchedEpisodeCount", "false") = "false"
|
||||
if itemData?.json?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.json.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
|
@ -45,6 +46,7 @@ sub itemContentChanged()
|
|||
end if
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
||||
' Format the Data based on the type of Home Data
|
||||
if itemData.type = "CollectionFolder" or itemData.type = "UserView" or itemData.type = "Channel"
|
||||
|
|
|
@ -17,12 +17,14 @@ sub setSeasonLoading()
|
|||
end sub
|
||||
|
||||
sub updateSeason()
|
||||
if get_user_setting("ui.tvshows.disableUnwatchedEpisodeCount", "false") = "false"
|
||||
if m.top.seasonData?.UserData?.UnplayedItemCount <> invalid
|
||||
if m.top.seasonData.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = m.top.seasonData.UserData.UnplayedItemCount
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
||||
imgParams = { "maxHeight": 450, "maxWidth": 300 }
|
||||
m.poster.uri = ImageURL(m.top.seasonData.Id, "Primary", imgParams)
|
||||
|
|
|
@ -15,12 +15,14 @@ sub itemContentChanged()
|
|||
item = m.top.itemContent
|
||||
itemData = item.json
|
||||
|
||||
if get_user_setting("ui.tvshows.disableUnwatchedEpisodeCount", "false") = "false"
|
||||
if itemData?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.UserData.UnplayedItemCount
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
||||
m.top.findNode("tvshowPoster").uri = m.top.itemContent.posterURL
|
||||
|
||||
|
|
|
@ -33,5 +33,6 @@
|
|||
<field id="seasonSelected" alias="seasons.rowItemSelected" />
|
||||
</interface>
|
||||
<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="TVShowDetails.brs" />
|
||||
</component>
|
||||
|
|
|
@ -3055,5 +3055,53 @@
|
|||
<source>Cast & Crew</source>
|
||||
<translation>Cast & Crew</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pick a Jellyfin server from the local network</source>
|
||||
<translation>Select an available Jellyfin server from your local network:</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to pick a server from a list</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the server name or IP address</source>
|
||||
<translation>Enter the server name or IP address</translation>
|
||||
<extracomment>Title of KeyboardDialog when manually entering a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>TV Shows</source>
|
||||
<translation>TV Shows</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Recording</source>
|
||||
<translation>Cancel Recording</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional Parts</source>
|
||||
<translation>Additional Parts</translation>
|
||||
<extracomment>Additional parts of a video</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>View Channel</source>
|
||||
<translation>View Channel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record</source>
|
||||
<translation>Record</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Series Recording</source>
|
||||
<translation>Cancel Series Recording</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation>Close</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown</source>
|
||||
<translation>Unknown</translation>
|
||||
<extracomment>Title for a cast member for which we have no information for</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record Series</source>
|
||||
<translation>Record Series</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -1021,6 +1021,30 @@
|
|||
<source>If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.</source>
|
||||
<translation>If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Playback Bitrate Limits</source>
|
||||
<translation>Playback Bitrate Limits</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set limits for how high playback bitrates are allowed to be.</source>
|
||||
<translation>Set limits for how high playback bitrates are allowed to be.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Limits Enabled</source>
|
||||
<translation>Limits Enabled</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, playback bitrates will be limited based on the 'Playback Bitrate Limit' setting.</source>
|
||||
<translation>If enabled, playback bitrates will be limited based on the 'Playback Bitrate Limit' setting.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Playback Bitrate Limit</source>
|
||||
<translation>Playback Bitrate Limit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max bitrate (Mbps) allowed if limits are enabled. Set to 0 to use Roku's specifications.</source>
|
||||
<translation>Max bitrate (Mbps) allowed if limits are enabled. Set to 0 to use Roku's specifications.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Libraries</source>
|
||||
<translation>Libraries</translation>
|
||||
|
@ -1063,5 +1087,16 @@
|
|||
<translation>Grid</translation>
|
||||
<extracomment>Title of an option - name of grid view</extracomment>
|
||||
</message>
|
||||
|
||||
<message>
|
||||
<source>Disable Unwatched Episode Count</source>
|
||||
<translation>Disable Unwatched Episode Count</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, the number of unwatched episodes in a series/season will be removed.</source>
|
||||
<translation>If enabled, the number of unwatched episodes in a series/season will be removed.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -3,6 +3,13 @@
|
|||
"title": "Playback",
|
||||
"description": "Settings relating to playback and supported codec and media types.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Cinema Mode",
|
||||
"description": "Cinema Mode brings the theater experience straight to your living room with the ability to play custom intros before the main feature.",
|
||||
"settingName": "playback.cinemamode",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Codec Support",
|
||||
"description": "Enable or disable Direct Play support for certain codecs",
|
||||
|
@ -30,6 +37,26 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Playback Bitrate Limits",
|
||||
"description": "Set limits for how high playback bitrates are allowed to be.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Limits Enabled",
|
||||
"description": "If enabled, playback bitrates will be limited based on the 'Playback Bitrate Limit' setting.",
|
||||
"settingName": "playback.bitrate.maxlimited",
|
||||
"type": "bool",
|
||||
"default": "true"
|
||||
},
|
||||
{
|
||||
"title": "Playback Bitrate Limit",
|
||||
"description": "Max bitrate (Mbps) allowed if limits are enabled. Set to 0 to use Roku's specifications.",
|
||||
"settingName": "playback.bitrate.limit",
|
||||
"type": "integer",
|
||||
"default": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Profile Level Support",
|
||||
"description": "Attempt Direct Play of potentially unsupported profile levels",
|
||||
|
@ -50,13 +77,6 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Cinema Mode",
|
||||
"description": "Cinema Mode brings the theater experience straight to your living room with the ability to play custom intros before the main feature.",
|
||||
"settingName": "playback.cinemamode",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Text Subtitles Only",
|
||||
"description": "Only display text subtitles to minimize transcoding.",
|
||||
|
@ -204,16 +224,23 @@
|
|||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Skip Details for Single Seasons",
|
||||
"description": "If enabled, selecting a TV series with only one season will go straight to the episode list rather than the show details and season list.",
|
||||
"settingName": "ui.tvshows.goStraightToEpisodeListing",
|
||||
"title": "Disable Community Rating for Episodes",
|
||||
"description": "If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.",
|
||||
"settingName": "ui.tvshows.disableCommunityRating",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Disable Community Rating for Episodes",
|
||||
"description": "If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.",
|
||||
"settingName": "ui.tvshows.disableCommunityRating",
|
||||
"title": "Disable Unwatched Episode Count",
|
||||
"description": "If enabled, the number of unwatched episodes in a series/season will be removed.",
|
||||
"settingName": "ui.tvshows.disableUnwatchedEpisodeCount",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Skip Details for Single Seasons",
|
||||
"description": "If enabled, selecting a TV series with only one season will go straight to the episode list rather than the show details and season list.",
|
||||
"settingName": "ui.tvshows.goStraightToEpisodeListing",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
}
|
||||
|
|
|
@ -171,13 +171,7 @@ function getDeviceProfile() as object
|
|||
"Value": "41",
|
||||
"IsRequired": false
|
||||
},
|
||||
' Roku only supports h264 up to 10Mpbs
|
||||
{
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "10000000",
|
||||
IsRequired: true
|
||||
}
|
||||
GetBitRateLimit("H264")
|
||||
]
|
||||
}
|
||||
],
|
||||
|
@ -211,13 +205,7 @@ function getDeviceProfile() as object
|
|||
"Value": av1VideoRangeTypes,
|
||||
"IsRequired": false
|
||||
},
|
||||
' Roku only supports AVI up to 40Mpbs
|
||||
{
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
GetBitRateLimit("AV1")
|
||||
]
|
||||
})
|
||||
end if
|
||||
|
@ -244,13 +232,7 @@ function getDeviceProfile() as object
|
|||
"Value": (120 * 5.1).ToStr(),
|
||||
"IsRequired": false
|
||||
},
|
||||
' Roku only supports h265 up to 40Mpbs
|
||||
{
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
GetBitRateLimit("H265")
|
||||
]
|
||||
})
|
||||
end if
|
||||
|
@ -265,13 +247,7 @@ function getDeviceProfile() as object
|
|||
"Value": vp9VideoRangeTypes,
|
||||
"IsRequired": false
|
||||
},
|
||||
' Roku only supports VP9 up to 40Mpbs
|
||||
{
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
GetBitRateLimit("VP9")
|
||||
]
|
||||
})
|
||||
end if
|
||||
|
@ -382,3 +358,56 @@ function GetDirectPlayProfiles() as object
|
|||
]
|
||||
|
||||
end function
|
||||
|
||||
function GetBitRateLimit(codec as string)
|
||||
if get_user_setting("playback.bitrate.maxlimited") = "true"
|
||||
userSetLimit = get_user_setting("playback.bitrate.limit").ToInt()
|
||||
userSetLimit *= 1000000
|
||||
|
||||
if userSetLimit > 0
|
||||
return {
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": userSetLimit.ToStr(),
|
||||
IsRequired: true
|
||||
}
|
||||
else
|
||||
' Some repeated values (e.g. same "40mbps" for several codecs)
|
||||
' but this makes it easy to update in the future if the bitrates start to deviate.
|
||||
if codec = "H264"
|
||||
' Roku only supports h264 up to 10Mpbs
|
||||
return {
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "10000000",
|
||||
IsRequired: true
|
||||
}
|
||||
else if codec = "AV1"
|
||||
' Roku only supports AV1 up to 40Mpbs
|
||||
return {
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
else if codec = "H265"
|
||||
' Roku only supports h265 up to 40Mpbs
|
||||
return {
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
else if codec = "VP9"
|
||||
' Roku only supports VP9 up to 40Mpbs
|
||||
return {
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
return {}
|
||||
end function
|
||||
|
|
Loading…
Reference in New Issue
Block a user