Source: components/music/AlbumGrid.brs

import "pkg:/source/utils/misc.brs"

sub init()
    getData()
end sub

function getData()

    ' If we have no album data, return a blank node
    if m.top.MusicArtistAlbumData = invalid
        data = CreateObject("roSGNode", "ContentNode")
        return data
    end if

    albumData = m.top.MusicArtistAlbumData
    data = CreateObject("roSGNode", "ContentNode")

    for each album in albumData.items
        gridAlbum = CreateObject("roSGNode", "ContentNode")

        if not isValid(album.posterURL) or album.posterURL = ""
            album.posterURL = "pkg:/images/icons/album.png"
        end if

        gridAlbum.shortdescriptionline1 = album.title
        gridAlbum.HDGRIDPOSTERURL = album.posterURL
        gridAlbum.hdposterurl = album.posterURL
        gridAlbum.SDGRIDPOSTERURL = album.posterURL
        gridAlbum.sdposterurl = album.posterURL

        data.appendChild(gridAlbum)
    end for

    m.top.content = data

    return data
end function

function onKeyEvent(key as string, press as boolean) as boolean
    if not press then return false

    if key = "up"
        if m.top.itemFocused <= 4
            m.top.escape = key
            return true
        end if
    else if key = "left"
        if m.top.itemFocused mod 5 = 0
            m.top.escape = key
            return true
        end if
    else if key = "right"
        if m.top.itemFocused + 1 mod 5 = 0
            m.top.escape = key
            return true
        end if
    else if key = "down"
        totalCount = m.top.MusicArtistAlbumData.items.count()
        totalRows = div_ceiling(totalCount, 5)
        currentRow = div_ceiling(m.top.itemFocused + 1, 5)

        if currentRow = totalRows
            m.top.escape = key
            return true
        end if
    end if

    return false
end function