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?

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.

Excellent that fixed the issue thanks :grinning_face_with_smiling_eyes:

Looks like ifGridScreen.SetListPosterStyles is no longer undocumented. :slightly_smiling_face: