'********************************************************** '** createHomeScreen '********************************************************** Function createHomeScreen(viewController as Object) as Object names = [] keys = [] views = getUserViews() for each view in views names.push(view.Title) key = view.CollectionType + "|" + view.Id + "|" + firstOf(view.HDPosterUrl, "") keys.push(key) end for names.push("Options") keys.push("options") loader = CreateObject("roAssociativeArray") loader.getUrl = getHomeScreenRowUrl loader.parsePagedResult = parseHomeScreenResult loader.getLocalData = getHomeScreenLocalData screen = createPaginatedGridScreen(viewController, names, keys, loader, "two-row-flat-landscape-custom", 8, 75) screen.baseHandleMessage = screen.HandleMessage screen.HandleMessage = handleHomeScreenMessage screen.OnTimerExpired = homeScreenOnTimerExpired screen.SuperActivate = screen.Activate screen.Activate = homeScreenActivate screen.refreshBreadcrumb = homeRefreshBreadcrumb screen.clockTimer = createTimer() screen.clockTimer.Name = "clock" screen.clockTimer.SetDuration(20000, true) ' A little lag is fine here viewController.AddTimer(screen.clockTimer, screen) ConnectionManager().sendWolToAllServers(m) screen.SetDescriptionVisible(false) return screen End Function Function getUserViews() as Object views = [] if getGlobalVar("user") = invalid then return views url = GetServerBaseUrl() + "/Users/" + getGlobalVar("user").Id + "/Views?fields=PrimaryImageAspectRatio" request = HttpRequest(url) request.ContentType("json") request.AddAuthorization() response = request.GetToStringWithTimeout(10) if response <> invalid result = parseItemsResponse(response, 0, "two-row-flat-landscape-custom") for each i in result.Items viewType = firstOf(i.CollectionType, "") ' Filter out unsupported views if viewType = "movies" or viewType = "music" or viewType = "tvshows" or viewType = "livetv" or viewType = "channels" or viewType = "folders" or viewType = "playlists" or viewType = "boxsets" then views.push(i) ' Treat all other types as folders for now else viewType = "folders" views.push(i) end if ' Normalize this i.CollectionType = viewType end for end if return views End Function Function getHomeScreenLocalData(row as Integer, id as String, startItem as Integer, count as Integer) as Object viewController = GetViewController() parts = id.tokenize("|") id = parts[0] parentId = firstOf(parts[1], "") viewTileImageUrl = parts[2] if id = "options" then return GetOptionButtons(viewController) else if id = "movies" movieToggle = (firstOf(RegUserRead("movieToggle"), "2")).ToInt() ' Jump list if movieToggle = 3 then return GetMovieButtons(viewController, movieToggle, parentId, viewTileImageUrl) end if else if id = "tvshows" tvToggle = (firstOf(RegUserRead("tvToggle"), "1")).ToInt() ' Jump list if tvToggle = 3 then return GetTVButtons(viewController, tvToggle, parentId, viewTileImageUrl) end if end If return invalid End Function Function getHomeScreenRowUrl(row as Integer, id as String) as String parts = id.tokenize("|") id = parts[0] parentId = firstOf(parts[1], "") url = GetServerBaseUrl() query = {} if id = "folders" url = url + "/Users/" + HttpEncode(getGlobalVar("user").Id) + "/Items?sortby=sortname" query.AddReplace("Fields", "PrimaryImageAspectRatio") else if id = "playlists" or id = "boxsets" url = url + "/Users/" + HttpEncode(getGlobalVar("user").Id) + "/Items?sortby=sortname" else if id = "channels" url = url + "/Channels?userid=" + HttpEncode(getGlobalVar("user").Id) else if id = "movies" movieToggle = (firstOf(RegUserRead("movieToggle"), "1")).ToInt() ' Next Up if movieToggle = 1 then url = url + "/Movies/Recommendations?userId=" + HttpEncode(getGlobalVar("user").Id) query = { ItemLimit: "20" CategoryLimit: "1" fields: "PrimaryImageAspectRatio", ImageTypeLimit: "1" } ' Latest else if movieToggle = 2 then url = url + "/Users/" + HttpEncode(getGlobalVar("user").Id) + "/Items?IncludeItemTypes=Movie" query = { recursive: "true" ExcludeLocationTypes: "Virtual" fields: "PrimaryImageAspectRatio" sortby: "DateCreated" sortorder: "Descending" filters: "IsUnplayed", ImageTypeLimit: "1" } ' Resume else if movieToggle = 4 then url = url + "/Users/" + HttpEncode(getGlobalVar("user").Id) + "/Items?includeitemtypes=Movie" query = { recursive: "true" fields: "PrimaryImageAspectRatio" sortby: "DatePlayed" sortorder: "Descending" filters: "IsResumable", ImageTypeLimit: "1" } ' Favorites else if movieToggle = 5 then url = url + "/Users/" + HttpEncode(getGlobalVar("user").Id) + "/Items?includeitemtypes=Movie" query = { recursive: "true" fields: "PrimaryImageAspectRatio" sortby: "SortName" sortorder: "Ascending" filters: "IsFavorite", ImageTypeLimit: "1" } ' Genres else if movieToggle = 6 then url = url + "/Genres?Recursive=true" query = { userid: getGlobalVar("user").Id includeitemtypes: "Movie" fields: "PrimaryImageAspectRatio" sortby: "SortName" sortorder: "Ascending" } end if else if id = "tvshows" tvToggle = (firstOf(RegUserRead("tvToggle"), "1")).ToInt() ' Next Up if tvToggle = 1 then url = url + "/Shows/NextUp?userId=" + HttpEncode(getGlobalVar("user").Id) query = { fields: "PrimaryImageAspectRatio,Overview", ImageTypeLimit: "1" } ' Latest else if tvToggle = 2 then url = url + "/Users/" + HttpEncode(getGlobalVar("user").Id) + "/Items?IncludeItemTypes=Episode" query = { recursive: "true" ExcludeLocationTypes: "Virtual" fields: "PrimaryImageAspectRatio" sortby: "DateCreated" sortorder: "Descending" filters: "IsUnplayed", ImageTypeLimit: "1" } ' Resume else if tvToggle = 4 then url = url + "/Users/" + HttpEncode(getGlobalVar("user").Id) + "/Items?includeitemtypes=Episode" query = { recursive: "true" fields: "PrimaryImageAspectRatio" sortby: "DatePlayed" sortorder: "Descending" filters: "IsResumable", ImageTypeLimit: "1" } ' Favorites else if tvToggle = 5 then url = url + "/Users/" + HttpEncode(getGlobalVar("user").Id) + "/Items?includeitemtypes=Series" query = { recursive: "true" fields: "PrimaryImageAspectRatio" sortby: "SortName" sortorder: "Ascending" filters: "IsFavorite", ImageTypeLimit: "1" } ' Genres else if tvToggle = 6 then url = url + "/Genres?Recursive=true" query = { userid: getGlobalVar("user").Id includeitemtypes: "Series" fields: "PrimaryImageAspectRatio" sortby: "SortName" sortorder: "Ascending", ImageTypeLimit: "1" } end if else if id = "livetv" liveTvToggle = (firstOf(RegUserRead("liveTvToggle"), "1")).ToInt() ' Suggested if liveTvToggle = 1 then url = url + "/LiveTv/Programs/Recommended?userId=" + HttpEncode(getGlobalVar("user").Id) query = { IsAiring: "true" } ' Favorites else if liveTvToggle = 2 then url = url + "/LiveTv/Channels?userId=" + HttpEncode(getGlobalVar("user").Id) query = { IsFavorite: "true" } ' Resume else if liveTvToggle = 3 then url = url + "/LiveTv/Recordings?userId=" + HttpEncode(getGlobalVar("user").Id) query = { IsInProgress: "false" } end if else if id = "music" musicToggle = (firstOf(RegUserRead("musicToggle"), "1")).ToInt() ' Latest if musicToggle = 1 then url = url + "/Users/" + HttpEncode(getGlobalVar("user").Id) + "/Items?includeitemtypes=MusicAlbum" query = { recursive: "true" fields: "PrimaryImageAspectRatio" sortby: "DateCreated" sortorder: "Descending", ImageTypeLimit: "1" } else ' Not going to use the output, just checking to see if the user has music in their library url = url + "/Users/" + HttpEncode(getGlobalVar("user").Id) + "/Items?includeitemtypes=Audio" query = { recursive: "true" fields: "PrimaryImageAspectRatio" sortby: "DateCreated" sortorder: "Descending", ImageTypeLimit: "1" } end if end If if id <> "channels" and id <> "livetv" and parentId <> "" then query.AddReplace("ParentId", parentId) end if for each key in query url = url + "&" + key +"=" + HttpEncode(query[key]) end for return url End Function Function parseHomeScreenResult(row as Integer, id as string, startIndex as Integer, json as String) as Object viewController = GetViewController() maxListSize = 60 parts = id.tokenize("|") id = parts[0] parentId = firstOf(parts[1], "") viewTileImageUrl = parts[2] if id = "folders" then return parseItemsResponse(json, 0, "two-row-flat-landscape-custom") else if id = "playlists" then return parseItemsResponse(json, 1, "two-row-flat-landscape-custom") else if id = "boxsets" then return parseItemsResponse(json, 1, "two-row-flat-landscape-custom") else if id = "channels" then return parseItemsResponse(json, 1, "two-row-flat-landscape-custom") else if id = "movies" then movieToggle = (firstOf(RegUserRead("movieToggle"), "1")).ToInt() if movieToggle = 1 then response = parseSuggestedMoviesResponse(json) else if movieToggle = 6 then response = parseItemsResponse(json, 1, "mixed-aspect-ratio-portrait", "moviegenre") else response = parseItemsResponse(json, 1, "two-row-flat-landscape-custom") end if buttons = GetBaseMovieButtons(viewController, movieToggle, parentId, viewTileImageUrl, response) buttonCount = buttons.Count() minTotalRecordCount = buttonCount + response.Items.Count() ' Only insert buttons if startIndex = 0 if startIndex = 0 then buttons.Append(response.Items) response.Items = buttons end if if response.TotalCount > maxListSize then response.TotalCount = maxListSize if response.TotalCount < minTotalRecordCount then response.TotalCount = minTotalRecordCount return response else if id = "tvshows" then tvToggle = (firstOf(RegUserRead("tvToggle"), "1")).ToInt() if tvToggle = 5 then response = parseItemsResponse(json, 1, "two-row-flat-landscape-custom") else if tvToggle = 6 then response = parseItemsResponse(json, 1, "mixed-aspect-ratio-portrait", "tvgenre") else response = parseItemsResponse(json, 0, "two-row-flat-landscape-custom") end if buttons = GetBaseTVButtons(viewController, tvToggle, parentId, viewTileImageUrl) buttonCount = buttons.Count() minTotalRecordCount = buttonCount + response.Items.Count() ' Only insert buttons if startIndex = 0 if startIndex = 0 then buttons.Append(response.Items) response.Items = buttons end if if response.TotalCount > maxListSize then response.TotalCount = maxListSize if response.TotalCount < minTotalRecordCount then response.TotalCount = minTotalRecordCount return response else if id = "livetv" then liveTvToggle = (firstOf(RegUserRead("liveTvToggle"), "1")).ToInt() if liveTvToggle = 1 then response = parseLiveTvProgramsResponse(json) else if liveTvToggle = 2 then response = parseLiveTvChannelsResult(json) else response = parseLiveTvRecordingsResponse(json) end if buttons = GetBaseLiveTVButtons(viewController, liveTvToggle) buttonCount = buttons.Count() minTotalRecordCount = buttonCount + response.Items.Count() ' Only insert buttons if startIndex = 0 if startIndex = 0 then buttons.Append(response.Items) response.Items = buttons end if if response.TotalCount > maxListSize then response.TotalCount = maxListSize if response.TotalCount < minTotalRecordCount then response.TotalCount = minTotalRecordCount return response else if id = "music" then response = parseItemsResponse(json, 0, "mixed-aspect-ratio-square") if response.TotalCount = 0 then Return { Items: [] TotalCount: 0 } end if musicToggle = (firstOf(RegUserRead("musicToggle"), "1")).ToInt() if musicToggle <> 1 then return GetMusicButtons(viewController, musicToggle, parentId, viewTileImageUrl) end if buttons = GetBaseMusicButtons(viewController, musicToggle, parentId, viewTileImageUrl) buttonCount = buttons.Count() minTotalRecordCount = buttonCount + response.Items.Count() ' Only insert buttons if startIndex = 0 if startIndex = 0 then buttons.Append(response.Items) response.Items = buttons end if if response.TotalCount > maxListSize then response.TotalCount = maxListSize if response.TotalCount < minTotalRecordCount then response.TotalCount = minTotalRecordCount return response end if return parseItemsResponse(json, 0, "two-row-flat-landscape-custom") End Function Function handleHomeScreenMessage(msg) as Boolean handled = false viewController = m.ViewController if type(msg) = "roGridScreenEvent" Then if msg.isListItemSelected() Then rowIndex = msg.GetIndex() context = m.contentArray[rowIndex] index = msg.GetData() item = context[index] if item = invalid then Else If item.ContentType = "MovieToggle" Then handled = true GetNextMovieToggle() m.loader.RefreshRow(rowIndex) Else If item.ContentType = "MovieRefreshSuggested" Then handled = true m.loader.RefreshRow(rowIndex) Else If item.ContentType = "TVToggle" Then handled = true GetNextTVToggle() m.loader.RefreshRow(rowIndex) Else If item.ContentType = "LiveTVToggle" Then handled = true GetNextLiveTVToggle() m.loader.RefreshRow(rowIndex) Else If item.ContentType = "MusicToggle" Then handled = true GetNextMusicToggle() m.loader.RefreshRow(rowIndex) End If End If End If return handled or m.baseHandleMessage(msg) End Function '********************************************************** '** GetNextMovieToggle '********************************************************** Function GetNextMovieToggle() movieToggle = (firstOf(RegUserRead("movieToggle"), "2")).ToInt() movieToggle = movieToggle + 1 if movieToggle = 7 then movieToggle = 1 end if RegUserWrite("movieToggle", movieToggle) End Function '********************************************************** '** Get GetMovieButtons '********************************************************** Function GetBaseMovieButtons(viewController as Object, movieToggle as Integer, parentId as String, allTileImageUrl = invalid, movieResponse = invalid) As Object if firstOf(allTileImageUrl, "") = "" then allTileImageUrl = viewController.getThemeImageUrl("hd-movies.jpg") end if buttons = [ { Title: "Movie Library" ContentType: "MovieLibrary" ShortDescriptionLine1: "Library" HDPosterUrl: allTileImageUrl SDPosterUrl: allTileImageUrl, Id: parentId } ] switchButton = [ { ContentType: "MovieToggle" } ] if movieToggle = 1 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-1.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-1.jpg") buttons.Append( switchButton ) suggestedButton = [ { ContentType: "MovieRefreshSuggested" ShortDescriptionLine1: "Similar To" ShortDescriptionLine2: movieResponse.BaselineItemName HDPosterUrl: viewController.getThemeImageUrl("hd-similar-to.jpg") SDPosterUrl: viewController.getThemeImageUrl("hd-similar-to.jpg") } ] buttons.Append( suggestedButton ) else if movieToggle = 2 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-2.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-2.jpg") buttons.Append( switchButton ) else if movieToggle = 3 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-3.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-3.jpg") buttons.Append( switchButton ) else if movieToggle = 4 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-4.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-4.jpg") buttons.Append( switchButton ) else if movieToggle = 5 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-5.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-5.jpg") buttons.Append( switchButton ) else if movieToggle = 6 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-6.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-6.jpg") buttons.Append( switchButton ) end if return buttons End Function Function GetMovieButtons(viewController as Object, movieToggle as Integer, parentId as String, allTileImageUrl = invalid) As Object buttons = GetBaseMovieButtons(viewController, movieToggle, parentId, allTileImageUrl) if movieToggle = 3 then alphaMovies = getAlphabetList("MovieAlphabet", parentId) if alphaMovies <> invalid buttons.Append( alphaMovies.Items ) end if end if Return { Items: buttons TotalCount: buttons.Count() } End Function '********************************************************** '** Get Next TV Toggle '********************************************************** Function GetNextTVToggle() tvToggle = (firstOf(RegUserRead("tvToggle"), "1")).ToInt() tvToggle = tvToggle + 1 if tvToggle = 7 then tvToggle = 1 end if RegUserWrite("tvToggle", tvToggle) End Function '********************************************************** '** Get TV Buttons Row '********************************************************** Function GetBaseTVButtons(viewController as Object, tvToggle as Integer, parentId as String, allTileImageUrl = invalid) As Object if firstOf(allTileImageUrl, "") = "" then allTileImageUrl = viewController.getThemeImageUrl("hd-tv.jpg") end if buttons = [ { Title: "TV Library" ContentType: "TVLibrary" ShortDescriptionLine1: "Library" HDPosterUrl: allTileImageUrl SDPosterUrl: allTileImageUrl, Id: parentId } ] switchButton = [ { ContentType: "TVToggle" } ] if tvToggle = 1 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-1.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-1.jpg") else if tvToggle = 2 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-2.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-2.jpg") else if tvToggle = 3 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-3.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-3.jpg") else if tvToggle = 4 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-4.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-4.jpg") else if tvToggle = 5 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-5.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-5.jpg") else if tvToggle = 6 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-6.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-6.jpg") end if buttons.Append( switchButton ) return buttons End Function Function GetTVButtons(viewController as Object, tvToggle as Integer, parentId as String, allTileImageUrl = invalid) As Object buttons = GetBaseTVButtons(viewController, tvToggle, parentId, allTileImageUrl) if tvToggle = 3 then alphaTV = getAlphabetList("TvAlphabet", parentId) if alphaTV <> invalid buttons.Append( alphaTV.Items ) end if end if Return { Items: buttons TotalCount: buttons.Count() } End Function '********************************************************** '** Get Next Live TV Toggle '********************************************************** Function GetNextLiveTVToggle() liveTvToggle = (firstOf(RegUserRead("liveTvToggle"), "1")).ToInt() liveTvToggle = liveTvToggle + 1 if liveTvToggle = 4 then liveTvToggle = 1 end if RegUserWrite("liveTvToggle", liveTvToggle) End Function '********************************************************** '** Get Live TV Buttons Row '********************************************************** Function GetBaseLiveTVButtons(viewController as Object, liveTvToggle as Integer) As Object buttons = [ { Title: "Channels" ContentType: "LiveTVChannels" ShortDescriptionLine1: "Channels" HDPosterUrl: viewController.getThemeImageUrl("hd-tv.jpg") SDPosterUrl: viewController.getThemeImageUrl("hd-tv.jpg") }, { Title: "Guide" ContentType: "LiveTVFavoriteGuide" ShortDescriptionLine1: "Guide" HDPosterUrl: viewController.getThemeImageUrl("hd-tv.jpg") SDPosterUrl: viewController.getThemeImageUrl("hd-tv.jpg") }, { Title: "Recordings" ContentType: "LiveTVRecordings" ShortDescriptionLine1: "Recordings" HDPosterUrl: viewController.getThemeImageUrl("hd-tv.jpg") SDPosterUrl: viewController.getThemeImageUrl("hd-tv.jpg") } ] switchButton = [ { ContentType: "LiveTVToggle" } ] if liveTvToggle = 1 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-10.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-10.jpg") buttons.Append( switchButton ) else if liveTvToggle = 2 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-11.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-11.jpg") buttons.Append( switchButton ) else if liveTvToggle = 3 then switchButton[0].HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-12.jpg") switchButton[0].SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-12.jpg") buttons.Append( switchButton ) end if return buttons End Function '********************************************************** '** GetNextMusicToggle '********************************************************** Function GetNextMusicToggle() musicToggle = (firstOf(RegUserRead("musicToggle"), "1")).ToInt() musicToggle = musicToggle + 1 if musicToggle = 4 then musicToggle = 1 end if ' Update Registry RegUserWrite("musicToggle", musicToggle) End Function '********************************************************** '** GetMusicButtons '********************************************************** Function GetBaseMusicButtons(viewController as Object, musicToggle as Integer, parentId as String, allTileImageUrl = invalid) As Object if firstOf(allTileImageUrl, "") = "" then allTileImageUrl = viewController.getThemeImageUrl("hd-music.jpg") end if buttons = [ { Title: "Music Library" ContentType: "MusicLibrary" ShortDescriptionLine1: "Library" HDPosterUrl: allTileImageUrl SDPosterUrl: allTileImageUrl, Id: parentId } ] switchButton = { ContentType: "MusicToggle" } ' Latest if musicToggle = 1 then switchButton.HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-7.jpg") switchButton.SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-7.jpg") ' Jump In Album else if musicToggle = 2 then switchButton.HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-8.jpg") switchButton.SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-8.jpg") ' Jump In Artist else if musicToggle = 3 then switchButton.HDPosterUrl = viewController.getThemeImageUrl("hd-toggle-9.jpg") switchButton.SDPosterUrl = viewController.getThemeImageUrl("hd-toggle-9.jpg") end if buttons.Push( switchButton ) return buttons End Function Function GetMusicButtons(viewController as Object, musicToggle as Integer, parentId as String, allTileImageUrl = invalid) As Object buttons = GetBaseMusicButtons(viewController, musicToggle, parentId, allTileImageUrl) ' Jump In Album if musicToggle = 2 then alphaMusicAlbum = getAlphabetList("MusicAlbumAlphabet", parentId) if alphaMusicAlbum <> invalid buttons.Append( alphaMusicAlbum.Items ) end if ' Jump In Artist else if musicToggle = 3 then alphaMusicArtist = getAlphabetList("MusicArtistAlphabet", parentId) if alphaMusicArtist <> invalid buttons.Append( alphaMusicArtist.Items ) end if end if Return { Items: buttons TotalCount: buttons.Count() } End Function '********************************************************** '** GetOptionButtons '********************************************************** Function GetOptionButtons(viewController as Object) As Object buttons = [] if AudioPlayer().IsPlaying then buttons.push({ Title: "Now Playing" ContentType: "NowPlaying" ShortDescriptionLine1: "Now Playing" HDPosterUrl: viewController.getThemeImageUrl("hd-music.jpg") SDPosterUrl: viewController.getThemeImageUrl("hd-music.jpg") }) end if buttons.push({ Title: "Search" ContentType: "Search" ShortDescriptionLine1: "Search" HDPosterUrl: viewController.getThemeImageUrl("hd-search.jpg") SDPosterUrl: viewController.getThemeImageUrl("hd-search.jpg") }) buttons.push({ Title: "Preferences" ContentType: "Preferences" ShortDescriptionLine1: "Preferences" ShortDescriptionLine2: "Version " + getGlobalVar("channelVersion", "Unknown") HDPosterUrl: viewController.getThemeImageUrl("hd-preferences.jpg") SDPosterUrl: viewController.getThemeImageUrl("hd-preferences.jpg") }) buttons.push({ Title: "Change Server" ContentType: "ChangeServer" ShortDescriptionLine1: "Change Server" HDPosterUrl: viewController.getThemeImageUrl("hd-landscape.jpg") SDPosterUrl: viewController.getThemeImageUrl("hd-landscape.jpg") }) buttons.push({ Title: "Sign Out" ContentType: "Logout" ShortDescriptionLine1: "Sign Out" HDPosterUrl: viewController.getThemeImageUrl("hd-switch-user.jpg") SDPosterUrl: viewController.getThemeImageUrl("hd-switch-user.jpg") }) Return { Items: buttons TotalCount: buttons.Count() } End Function Sub homeScreenOnTimerExpired(timer) ' if WOL packets were sent, we should reload the homescreen ( send the request again ) if timer.Name = "WOLsent" then if timer.keepAlive = invalid then Debug("WOL packets were sent -- create request to refresh/load data ( only for servers with WOL macs )") end if if timer.keepAlive = true then if GetViewController().genIdleTime <> invalid and GetViewController().genIdleTime.RemainingSeconds() = 0 then Debug("roku is idle: NOT sending keepalive WOL packets") else Debug("keepalive WOL packets being sent.") ConnectionManager().sendWolToAllServers(m) end if 'else if server.online and timer.keepAlive = invalid then 'Debug("WOL " + tostr(server.name) + " is already online") else ' Refresh home page data end if ' recurring or not, we will make it active until we complete X requests timer.active = true if timer.count = invalid then timer.count = 0 timer.count = timer.count+1 timer.mark() ' deactivate after third attempt ( 3 x 3 = 9 seconds after all inital WOL requests ) if timer.count > 2 then ' convert wolTimer to a keepAlive timer ( 5 minutes ) timer.keepalive = true timer.SetDuration(5*60*1000, false) ' reset timer to 5 minutes - send a WOL request timer.mark() end if end if if timer.Name = "clock" AND m.ViewController.IsActiveScreen(m) then m.refreshBreadcrumb() end if End Sub Sub homeScreenActivate(priorScreen) m.refreshBreadcrumb() m.SuperActivate(priorScreen) End Sub Sub homeRefreshBreadcrumb() username = "" user = getGlobalVar("user") if user <> invalid then username = user.Title showClock = firstOf(RegRead("prefShowClock"), "yes") if showClock = "yes" then m.Screen.SetBreadcrumbText(username, CurrentTimeAsString()) else m.Screen.SetBreadcrumbText(username, "") end if End Sub