commit 91dc7da9bd2c5d23d84d2a874249fd79ee40e5fe
parent 9880d299fde0bb705dbe3e1d906b258038f07748
Author: Brian C. Lane <bcl@brianlane.com>
Date: Mon, 14 Nov 2022 17:38:39 -0800
Populate PosterGrid with posters
This is tricky, and prone to crashing if it is wrong.
Currently it works, but it may not be *right*. Improve it later.
Diffstat:
1 file changed, 42 insertions(+), 15 deletions(-)
diff --git a/HMS/components/MainScene.brs b/HMS/components/MainScene.brs
@@ -70,22 +70,37 @@ end sub
sub OnMetadataLoaded()
print "MainScene->OnMetadataLoaded()"
- print m.metadataTask.metadata
-
- ' Totally not sure about this
- m.gridPanel = m.panels.CreateChild("GridPanel")
-
- m.posterGrid = CreateObject("roSGNode", "PosterGrid")
- m.posterGrid.basePosterSize="[240,320]"
- m.posterGrid.itemSpacing="[8,8]"
- m.posterGrid.caption1NumLines="1"
- m.posterGrid.numColumns="3"
- m.posterGrid.numRows="2"
-' m.posterGrid.observeField("focusedItem", "OnPosterGridSelected")
- m.gridPanel.grid = m.posterGrid
- m.gridPanel.appendChild(m.posterGrid)
+ print "Got "; m.metadataTask.metadata.Count(); " items."
+ m.metadata = m.metadataTask.metadata
+
+ ' Create one GridPanel and one PosterGrid, then reuse them for each category
+ ' This may not be quite right, but it works for now.
+ if m.gridPanel = invalid then
+ print "Creating new GridPanel"
+ m.gridPanel = m.panels.CreateChild("GridPanel")
+ m.gridPanel.panelSize = "full"
+ m.gridPanel.isFullScreen = true
+ m.gridPanel.focusable = true
+ m.gridPanel.hasNextPanel = false
+ m.gridPanel.createNextPanelOnItemFocus = false
+
+ m.posterGrid = CreateObject("roSGNode", "PosterGrid")
+ m.posterGrid.basePosterSize = "[222, 330]"
+ m.posterGrid.itemSpacing = "[6, 9]"
+ m.posterGrid.posterDisplayMode = "scaleToZoom"
+ m.posterGrid.caption1NumLines = "1"
+ m.posterGrid.numColumns = "7"
+ m.posterGrid.numRows = "3"
+ m.posterGrid.ObserveField("itemSelected", "OnPostedSelected")
+ m.posterGrid.ObserveField("itemFocused", "OnPosterFocused")
+
+ m.gridPanel.appendChild(m.PosterGrid)
+ m.gridPanel.grid = m.posterGrid
+ m.listPanel.nextPanel = m.gridPanel
+ end if
+
cn = CreateObject("roSGNode", "ContentNode")
- for each item in m.metadataTask.metadata
+ for each item in m.metadata
n = CreateObject("roSGNode", "ContentNode")
n.HDPosterUrl = item.HDPosterUrl
n.SDPosterUrl = item.SDPosterUrl
@@ -95,6 +110,18 @@ sub OnMetadataLoaded()
m.posterGrid.content = cn
end sub
+sub OnPosterSelected()
+ print "MainScene->OnPosterGridSelected()"
+ print m.posterGrid.itemSelected
+ print m.metadata[m.posterGrid.itemSelected].ShortDescriptionLine1
+end sub
+
+sub OnPosterFocused()
+ print "MainScene->OnPosterGridSelected()"
+ print m.posterGrid.itemFocused
+ print m.metadata[m.posterGrid.itemFocused].ShortDescriptionLine1
+end sub
+
sub OnLabelListSelected()
print "MainScene->OnLabelListSelected()"
end sub