@@ -949,6 +949,90 @@ sub onMetaDataLoaded()
949949 m .loadItemsTask1 .control = TaskControl .RUN
950950end sub
951951
952+ sub clearTextNode (node as dynamic )
953+ if isValid (node )
954+ node .text = ""
955+ end if
956+ end sub
957+
958+ sub hideNode (node as dynamic )
959+ if isValid (node )
960+ node .visible = false
961+ end if
962+ end sub
963+
964+ sub resetFocusedItemDetails ()
965+ clearTextNode (m .itemOverview )
966+
967+ hideNode (m .movieMetadataRow )
968+ hideNode (m .showMetadataRow )
969+ hideNode (m .episodeMetadataRow )
970+
971+ textNodes = [
972+ m .communityRating ,
973+ m .criticRatingLabel ,
974+ m .episodeNumber ,
975+ m .releaseYear ,
976+ m .showStatus ,
977+ m .officialRating ,
978+ m .runtime ,
979+ m .showReleaseYear ,
980+ m .showOfficialRating ,
981+ m .showRuntime ,
982+ m .showCommunityRating ,
983+ m .episodeAirDate ,
984+ m .episodeRuntime
985+ ]
986+
987+ for each node in textNodes
988+ clearTextNode (node )
989+ hideNode (node )
990+ end for
991+
992+ hideNode (m .communityRatingGroup )
993+ hideNode (m .showCommunityRatingGroup )
994+
995+ if isValid (m .star )
996+ m .star .visible = false
997+ m .star .width = 0
998+ m .star .height = 0
999+ end if
1000+
1001+ if isValid (m .showStar )
1002+ m .showStar .visible = false
1003+ m .showStar .width = 0
1004+ m .showStar .height = 0
1005+ end if
1006+
1007+ hideNode (m .criticRatingGroup )
1008+
1009+ if isValid (m .criticRatingIcon )
1010+ m .criticRatingIcon .uri = ""
1011+ m .criticRatingIcon .visible = false
1012+ m .criticRatingIcon .width = 0
1013+ m .criticRatingIcon .height = 0
1014+ end if
1015+
1016+ clearPluginRatings ()
1017+ end sub
1018+
1019+ sub clearFocusedItemBackdrop ()
1020+ if isValid (m .backdropFadeIn ) then m .backdropFadeIn .control = "stop"
1021+ if isValid (m .backdropPrevFadeOut ) then m .backdropPrevFadeOut .control = "stop"
1022+
1023+ if isValid (m .backdrop )
1024+ m .backdrop .uri = ""
1025+ m .backdrop .opacity = m .backdropTargetOpacity
1026+ end if
1027+
1028+ if isValid (m .backdropPrev )
1029+ m .backdropPrev .uri = ""
1030+ m .backdropPrev .opacity = 0
1031+ end if
1032+
1033+ m .backdropCrossfading = false
1034+ end sub
1035+
9521036sub onItemFocusChanged ()
9531037 if not isValid (m .homeRows .content ) then return
9541038 if m .homeRows .rowItemFocused [0 ] < 0 or m .homeRows .rowItemFocused [1 ] < 0 then return
@@ -960,6 +1044,8 @@ sub onItemFocusChanged()
9601044 m .itemTitle .text = focusedItem .title ?? ""
9611045 end if
9621046
1047+ resetFocusedItemDetails ()
1048+
9631049 if isValid (m .backdrop ) and isValidAndNotEmpty (focusedItem .backdropURL )
9641050 if isValid (m .backdropFadeIn ) then m .backdropFadeIn .control = "stop"
9651051 if isValid (m .backdropPrevFadeOut ) then m .backdropPrevFadeOut .control = "stop"
@@ -972,12 +1058,19 @@ sub onItemFocusChanged()
9721058 m .backdrop .opacity = 0.0
9731059 m .backdrop .uri = focusedItem .backdropURL
9741060 m .backdropCrossfading = true
1061+ else
1062+ clearFocusedItemBackdrop ()
9751063 end if
9761064
1065+ m .currentFocusedItemId = ""
9771066 m .currentFocusedItemServerUrl = invalid
1067+
1068+ if isValidAndNotEmpty (focusedItem .id )
1069+ m .currentFocusedItemId = focusedItem .id
1070+ end if
1071+
9781072 if isChainValid (focusedItem , "json._serverUrl" ) and isValidAndNotEmpty (focusedItem .json ._serverUrl )
9791073 m .currentFocusedItemServerUrl = focusedItem .json ._serverUrl
980- m .currentFocusedItemBackdropURL = focusedItem .backdropURL
9811074 end if
9821075
9831076 itemId = focusedItem .id
@@ -1008,6 +1101,27 @@ sub onItemDetailsLoaded()
10081101 json = item .json
10091102 if not isValid (json ) then return
10101103
1104+ loadedItemId = ""
1105+ if isValidAndNotEmpty (item .id )
1106+ loadedItemId = item .id
1107+ else if isValidAndNotEmpty (chainLookupReturn (json , "Id" , "" ))
1108+ loadedItemId = json .Id
1109+ end if
1110+
1111+ if not isValidAndNotEmpty (m .currentFocusedItemId )
1112+ return
1113+ end if
1114+
1115+ if not isValidAndNotEmpty (loadedItemId )
1116+ return
1117+ end if
1118+
1119+ if LCase (m .currentFocusedItemId ) <> LCase (loadedItemId )
1120+ return
1121+ end if
1122+
1123+ resetFocusedItemDetails ()
1124+
10111125 isEpisode = isValid (json .Type ) and json .Type = "Episode"
10121126
10131127 if isValid (m .backdrop ) and not isValidAndNotEmpty (m .currentFocusedItemServerUrl )
@@ -1032,37 +1146,6 @@ sub onItemDetailsLoaded()
10321146 end if
10331147 end if
10341148
1035- setFieldText ("communityRating" , "" )
1036- setFieldText ("criticRatingLabel" , "" )
1037- setFieldText ("episodeNumber" , "" )
1038- setFieldText ("releaseYear" , "" )
1039- setFieldText ("showStatus" , "" )
1040- setFieldText ("officialRating" , "" )
1041- setFieldText ("runtime" , "" )
1042-
1043- setFieldVisibility ("communityRating" , false )
1044- setFieldVisibility ("criticRatingLabel" , false )
1045- setFieldVisibility ("episodeNumber" , false )
1046- setFieldVisibility ("releaseYear" , false )
1047- setFieldVisibility ("showStatus" , false )
1048- setFieldVisibility ("officialRating" , false )
1049- setFieldVisibility ("runtime" , false )
1050- setFieldVisibility ("communityRatingGroup" , false )
1051- if isValid (m .star )
1052- m .star .visible = false
1053- m .star .width = 0
1054- m .star .height = 0
1055- end if
1056- if isValid (m .criticRatingGroup ) then m .criticRatingGroup .visible = false
1057- if isValid (m .criticRatingIcon )
1058- m .criticRatingIcon .uri = ""
1059- m .criticRatingIcon .visible = false
1060- m .criticRatingIcon .width = 0
1061- m .criticRatingIcon .height = 0
1062- end if
1063-
1064- clearPluginRatings ()
1065-
10661149 if isValid (json .Type )
10671150 if json .Type = "Episode"
10681151 populateEpisodeMetadata (json , item )
0 commit comments