Forum Discussion

krh5150's avatar
krh5150
Visitor
13 years ago

Styles for Grid List Question

Can I specify a specific style for a specific row or is it only based on the type of media displayed (movie, series, episode) when using the mixed style?

8 Replies

  • RokuRobB's avatar
    RokuRobB
    Streaming Star
    There is an undocumented grid screen API called SetListPosterStyles that you can use for this purpose, for example:

    listStyles = ["landscape", "portrait", "landscape"]
    screen.SetListPosterStyles(listStyles)

    I will make a point to update the docs to include this function.
  • Can someone elaborate on this?

    I need 4 rows, the first 3 need to be portrait and the 4th needs to be landscape. I've tried the using the code below with no luck. Any suggestions?
    BTW, I also have the ContentType of each item set to movie on the first 3 rows and episode on the 4th.


    listStyles = ["landscape","portrait", "portrait", "portrait"]
    screen.SetGridStyle("mixed-aspect-ratio")
    screen.SetListPosterStyles(listStyles)
  • "dustinhood" wrote:
    Can someone elaborate on this?

    I need 4 rows, the first 3 need to be portrait and the 4th needs to be landscape. I've tried the using the code below with no luck. Any suggestions?
    BTW, I also have the ContentType of each item set to movie on the first 3 rows and episode on the 4th.


    listStyles = ["landscape","portrait", "portrait", "portrait"]
    screen.SetGridStyle("mixed-aspect-ratio")
    screen.SetListPosterStyles(listStyles)

    I believe you need to call SetupLists prior to calling SetListPosterStyles.
  • "TheEndless" wrote:
    "dustinhood" wrote:
    Can someone elaborate on this?

    I need 4 rows, the first 3 need to be portrait and the 4th needs to be landscape. I've tried the using the code below with no luck. Any suggestions?
    BTW, I also have the ContentType of each item set to movie on the first 3 rows and episode on the 4th.


    listStyles = ["landscape","portrait", "portrait", "portrait"]
    screen.SetGridStyle("mixed-aspect-ratio")
    screen.SetListPosterStyles(listStyles)

    I believe you need to call SetupLists prior to calling SetListPosterStyles.


    You are correct, putting screen.SetListPosterStyles() after screen.setupLists() did the trick! Thanks TheEndless!!!!

    So here it is again for those that are having trouble:


    screen.setupLists(categoryList.count())
    screen.SetListNames(categoryList)

    listStyles = ["landscape","portrait", "portrait", "portrait"]

    screen.SetGridStyle("mixed-aspect-ratio")
    screen.SetListPosterStyles(listStyles)
  • I've tried to make this undocumented grid functionality work without avail.

    I tried to use this functionality with the same code for the grid screen but nothing seems to affect it:


    Sub Main()
    port = CreateObject("roMessagePort")
    grid = CreateObject("roGridScreen")
    grid.SetMessagePort(port)
    rowTitles = CreateObject("roArray", 4, true)
    for j = 0 to 3
    rowTitles.Push("[Row Title " + j.toStr() + " ] ")
    end for
    grid.SetupLists(rowTitles.Count())
    grid.SetListNames(rowTitles)
    listStyles = ["landscape","portrait", "portrait", "portrait"]

    grid.SetGridStyle("mixed-aspect-ratio")
    grid.SetListPosterStyles(listStyles)

    for j = 0 to 3
    list = CreateObject("roArray", 10, true)
    for i = 0 to 10
    o = CreateObject("roAssociativeArray")
    o.ContentType = "episode"
    o.Title = "[Title" + i.toStr() + "]"
    o.ShortDescriptionLine1 = "[ShortDescriptionLine1]"
    o.ShortDescriptionLine2 = "[ShortDescriptionLine2]"
    o.Description = ""
    o.Description = "[Description] "
    o.Rating = "NR"
    o.StarRating = "75"
    o.ReleaseDate = "[<mm/dd/yyyy]"
    o.Length = 5400
    o.Actors = []
    o.Actors.Push("[Actor1]")
    o.Actors.Push("[Actor2]")
    o.Actors.Push("[Actor3]")
    o.Director = "[Director]"
    list.Push(o)
    end for
    grid.SetContentList(j, list)
    end for
    grid.Show()
    while true
    msg = wait(0, port)
    if type(msg) = "roGridScreenEvent" then
    if msg.isScreenClosed() then
    return
    else if msg.isListItemFocused()
    print "Focused msg: ";msg.GetMessage();"row: ";msg.GetIndex();
    print " col: ";msg.GetData()
    else if msg.isListItemSelected()
    print "Selected msg: ";msg.GetMessage();"row: ";msg.GetIndex();
    print " col: ";msg.GetData()
    endif
    endif
    end while
    end Sub
  • Try calling SetGridStyle before calling SetupLists, SetListNames, and SetListPosterStyles.
  • Looks like ifGridScreen.SetListPosterStyles is no longer undocumented. 🙂