import "pkg:/source/utils/misc.bs" sub init() m.top.optionsAvailable = false setupMainNode() m.playAlbum = m.top.findNode("playAlbum") m.instantMix = m.top.findNode("instantMix") m.albumCover = m.top.findNode("albumCover") m.songList = m.top.findNode("songList") m.infoGroup = m.top.FindNode("infoGroup") m.songListRect = m.top.FindNode("songListRect") m.songList.observeField("doneLoading", "onDoneLoading") m.dscr = m.top.findNode("overview") createDialogPallete() end sub sub setupMainNode() main = m.top.findNode("toplevel") main.translation = [96, 175] end sub ' Set values for displayed values on screen sub pageContentChanged() item = m.top.pageContent setPosterImage(item.posterURL) setScreenTitle(item.json) setOnScreenTextValues(item.json) ' Only 1 song shown, so hide Play Album button if item.json.ChildCount = 1 m.playAlbum.visible = false end if end sub ' Set poster image on screen sub setPosterImage(posterURL) if isValid(posterURL) m.albumCover.uri = posterURL end if end sub ' Set screen's title text sub setScreenTitle(json) newTitle = "" if isValid(json) if isValid(json.AlbumArtist) newTitle = json.AlbumArtist end if if isValid(json.AlbumArtist) and isValid(json.name) newTitle = newTitle + " / " end if if isValid(json.name) newTitle = newTitle + json.name end if end if m.top.overhangTitle = newTitle end sub ' Adjust scene by removing overview node and showing more songs sub adjustScreenForNoOverview() m.infoGroup.removeChild(m.dscr) m.songListRect.height = 800 m.songList.numRows = 12 end sub ' Populate on screen text variables sub setOnScreenTextValues(json) if isValid(json) if isValid(json.overview) and json.overview <> "" ' We have overview text setFieldTextValue("overview", json.overview) else ' We don't have overview text adjustScreenForNoOverview() end if setFieldTextValue("numberofsongs", stri(json.ChildCount) + " Tracks") if type(json.ProductionYear) = "roInt" setFieldTextValue("released", "Released " + stri(json.ProductionYear)) end if if json.genres.count() > 0 setFieldTextValue("genres", json.genres.join(", ")) end if if type(json.RunTimeTicks) = "LongInteger" setFieldTextValue("runtime", stri(getMinutes(json.RunTimeTicks)) + " mins") end if end if end sub function onKeyEvent(key as string, press as boolean) as boolean if not press then return false if key = "options" if m.dscr.isTextEllipsized createFullDscrDlg() return true end if return false end if if key = "right" if m.playAlbum.hasFocus() or m.instantMix.hasFocus() m.songList.setFocus(true) return true end if else if key = "left" and m.songList.hasFocus() if m.playAlbum.visible m.playAlbum.setFocus(true) else if m.instantMix.visible m.instantMix.setFocus(true) else return false end if return true else if key = "down" and m.playAlbum.hasFocus() m.instantMix.setFocus(true) return true else if key = "up" and m.instantMix.hasFocus() m.playAlbum.setFocus(true) return true end if return false end function sub createFullDscrDlg() dlg = CreateObject("roSGNode", "OverviewDialog") dlg.Title = tr("Press 'Back' to Close") dlg.width = 1290 dlg.palette = m.dlgPalette dlg.overview = [m.dscr.text] m.fullDscrDlg = dlg m.top.getScene().dialog = dlg border = createObject("roSGNode", "Poster") border.uri = "pkg:/images/hd_focul_9.png" border.blendColor = "#c9c9c9ff" border.width = dlg.width + 6 border.height = dlg.height + 6 border.translation = [dlg.translation[0] - 3, dlg.translation[1] - 3] border.visible = true end sub sub createDialogPallete() m.dlgPalette = createObject("roSGNode", "RSGPalette") m.dlgPalette.colors = { DialogBackgroundColor: "0x262828FF", DialogItemColor: "0x00EF00FF", DialogTextColor: "0xb0b0b0FF", DialogFocusColor: "0xcececeFF", DialogFocusItemColor: "0x202020FF", DialogSecondaryTextColor: "0xf8f8f8ff", DialogSecondaryItemColor: "0xcc7ecc4D", DialogInputFieldColor: "0x80FF8080", DialogKeyboardColor: "0x80FF804D", DialogFootprintColor: "0x80FF804D" } end sub sub onDoneLoading() m.songList.unobservefield("doneLoading") stopLoadingSpinner() end sub