Methods
(static) attachGoToLiveButton() → {void}
Insert after itemNext (index 3 in the XML-declared button order) so prev/next stay contiguous and the live-edge button appears where channel up/down users look first.
- Source
- Type:
- void
(static) calibrateLiveTvIfNeeded() → {void}
Anchor m.liveTvEpochAtPosition0 on first play tick. Idempotent.
- Source
- Type:
- void
(static) createSubtitleDividerNode() → {object}
- Source
- Type:
- object
(static) createSubtitleLabelNode(labelId) → {object}
| Name | Type | Description |
|---|---|---|
labelId | string |
- Source
- Type:
- object
(static) detachGoToLiveButton() → {void}
- Source
- Type:
- void
(static) displaySubtitleNode(node) → {void}
| Name | Type | Description |
|---|---|---|
node | object |
- Source
- Type:
- void
(static) getLiveTvBehindLiveSeconds() → {integer}
- Source
- Type:
- integer
(static) inactiveCheck() → {void}
1s timer: auto-hide on inactivity AND drive the behind-live countdown while paused
- Source
- Type:
- void
(static) init() → {void}
- Source
- Type:
- void
(static) isLiveTvItem() → {boolean}
- Source
- Type:
- boolean
(static) onButtonSelected() → {void}
- Source
- Type:
- void
(static) onDestroy() → {void}
onDestroy: Full teardown releasing all resources before component removal Called by VideoPlayerView.onDestroy() since OSD is a child component, not a SceneManager scene
- Source
- Type:
- void
(static) onFocusChanged() → {void}
- Source
- Type:
- void
(static) onItemDataChanged() → {void}
onItemDataChanged: Reads typed fields from JellyfinBaseItem node and populates OSD display.
Replaces the old JSON-parsing setFields(). The item node is immutable - all metadata is read directly from typed fields (item.type, item.name, item.communityRating, etc.)
Content Type Detection (isMovie/isSeries): These flags determine which user settings control ratings display:
- isMovie=true: Uses uiMoviesShowRatings setting
- isSeries=true: Uses uiTvShowsDisableCommunityRating setting
Detection Priority (applied in order):
- API flags: Uses isMovie/isSeries from JellyfinBaseItem if provided
- Flag validation: Ensures mutual exclusivity (both cannot be true)
- Type-based: Recording types always classified as series content
- Metadata heuristic: Presence of seriesName/parentIndexNumber indicates series
- Default fallback: Assumes movie content if no other indicators
- Source
- Type:
- void
(static) onKeyEvent(key, press) → {boolean}
| Name | Type | Description |
|---|---|---|
key | string | |
press | boolean |
- Source
- Type:
- boolean
(static) onLiveTvPauseIfNeeded() → {void}
Snapshot the current behindLive into accumulated and start the wall-clock pause counter. Wall-clock math takes over from here because Roku's m.top.position keeps advancing during pause for live HLS DVR streams (it tracks the live edge, not the user's playhead), which would silently zero out position-math.
- Source
- Type:
- void
(static) onLiveTvResumeIfNeeded() → {void}
Re-anchor epochAtPosition0 so play-math continues from the same offset where wall-clock math left off, then clear pause state.
- Source
- Type:
- void
(static) onPlaybackStateChanged() → {void}
- Source
- Type:
- void
(static) onPositionTimeChanged() → {void}
- Source
- Type:
- void
(static) onProgressPercentageChanged() → {void}
- Source
- Type:
- void
(static) onScreenShown() → {void}
- Source
- Type:
- void
(static) onVisibleChanged() → {void}
- Source
- Type:
- void
(static) populateData() → {void}
- Source
- Type:
- void
(static) resetFocusToDefaultButton() → {void}
- Source
- Type:
- void
(static) setButtonStates() → {void}
setButtonStates: Disable previous/next buttons if needed and remove any other unneeded buttons
- Source
- Type:
- void
(static) setEndsAtText() → {void}
- Source
- Type:
- void
(static) setVideoLogoGroup() → {void}
- Source
- Type:
- void
(static) setVideoSubTitle() → {void}
- Source
- Type:
- void
(static) setVideoTitle() → {void}
- Source
- Type:
- void
(static) updateLiveTvDisplay() → {void}
Called from onProgressPercentageChanged() (position updates) and inactiveCheck() (1s timer). The timer ensures behind-live derived state ticks while paused.
- Source
- Type:
- void