Skip to content

Commit

Permalink
feat: adds new mixin api for easiliy creating custom rows
Browse files Browse the repository at this point in the history
  • Loading branch information
georgejecook committed Jun 17, 2021
1 parent dd053f3 commit 4f0eeb3
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 9 deletions.
14 changes: 7 additions & 7 deletions src-ml-test-app/source/ListScreen.bs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class ListScreen extends mv.BaseScreen
timer = new mc.utils.DebugTimer("list")
m.rowSettings = ml.listMixin.createRowSettings(m.cellSettings, invalid, 30)

m.focusSettings = ml.listMixin.createFocusSettings(.5, .1, "fixed", [-50, -50, 50, 50])
m.focusSettings = ml.listMixin.createFocusSettings(.5, .3, "fixed", [-50, -50, 50, 50])
' listSettings = ml.listMixin.createListSettings(3000, 2000)
listSettings = ml.listMixin.createListSettings(-1, -1)
content = ml.listMixin.createListContent(m.createData(), m.focusSettings, m.rowSettings, listSettings)
Expand All @@ -89,17 +89,17 @@ class ListScreen extends mv.BaseScreen

private function createData()
content = []
rowFocusSettings = ml.listMixin.createFocusSettings(.3, .1, "fixed", [-20, -20, 20, 20])
rowFocusSettings = ml.listMixin.createFocusSettings(.5, .3, "fixed", [-20, -20, 20, 20])
for i = 0 to m.numberOfRows - 1
row = createObject("roSGNode", "ml_RowContent")
if i = 0
row0FocusSettings = ml.listMixin.createFocusSettings(.2, .5, "fixed", [-20, -20, 20, 20])
row0FocusSettings = ml.listMixin.createFocusSettings(.5, .3, "fixed", [-20, -20, 20, 20])
cellSettings = ml.listMixin.createCellSettings("HeroCell", [1100, 700], 30)
row.settings = ml.listMixin.createRowSettings(cellSettings, row0FocusSettings)
row.settings.headerSettings.position = "none"
row.settings.contentOffset = [400, -30]
else if i = 1 or i = 4 or i = 8
row1FocusSettings = ml.listMixin.createFocusSettings(.5, .1, "fixed", [30, 30, -30, -30])
row1FocusSettings = ml.listMixin.createFocusSettings(.5, .3, "fixed", [30, 30, -30, -30])
' row1FocusSettings.feedbackUri = "pkg:/images/circle.png"
row1FocusSettings.feedbackColor = "#F4D42A"
headerSettings = ml.listMixin.createHeaderSettings([30, 20], 80, "mediumBold,50", "#ffff00")
Expand All @@ -108,9 +108,9 @@ class ListScreen extends mv.BaseScreen
row.settings.contentOffset = [100, 0]

else if i = 5 or i = 11
complexFocusSettings = ml.listMixin.createFocusSettings()
complexFocusSettings.feedbackStyle = "none"
row.settings = ml.listMixin.createRowSettings(invalid, complexFocusSettings, 30, invalid, 0, "ComplexRow")
complexFocusSettings = ml.listMixin.createFocusSettings()4 2 complexFocusSettings.feedbackStyle = "none"
row.settings = ml.listMixin.createCustomRowSettings("ComplexRow", 700)
' row.settings = ml.listMixin.createRowSettings(invalid, complexFocusSettings, 30, invalid, 0, "ComplexRow")
' else if i= 6
' row.settings = ml.listMixin.createRowSettings(m.cellSettings, rowFocusSettings)
' row.settings.height = 700
Expand Down
2 changes: 1 addition & 1 deletion src/source/ml/ListItemViewManager.bs
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ namespace ml

if settings.height <> -1
height = settings.height
else
else if settings.cellSettings <> invalid
height = settings.cellSettings.size[1]
end if

Expand Down
32 changes: 31 additions & 1 deletion src/source/ml/ListMixin.bs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,23 @@ namespace ml.listMixin
return settings
end function

function createCustomRowSettings(compName as string, height as integer, screenPos = 0 as integer)
settings = createObject("roSGNode", "ml_RowSettings")

settings.update({
componentName: compName
screenPos: screenPos
height: height
space: 0
cellSettings: invalid
contentOffset: [0, 0]
headerSettings: ml.listMixin.createEmptyHeaderSettings()
focusSettings: ml.listMixin.createFocusSettings(3, 1, "fixed", invalid, "none")
})

return settings
end function

function createListSettings(lookaheadDistance = 5000 as integer, lookBehindDistance = 2000 as integer)
settings = createObject("roSGNode", "ml_ListSettings")

Expand All @@ -77,6 +94,18 @@ namespace ml.listMixin
return settings
end function

function createEmptyHeaderSettings()
settings = createObject("roSGNode", "ml_HeaderSettings")

settings.update({
offset: [0, 0]
height: 0
fontKey: ""
position: "none"
})
return settings
end function

function createCellSettings(compName = "ml_SimpleCell" as string, size = [300, 500] as mc.types.array, space = 30 as integer, screenPos = 0 as integer)
settings = createObject("roSGNode", "ml_CellSettings")

Expand All @@ -90,7 +119,7 @@ namespace ml.listMixin
return settings
end function

function createFocusSettings(animSpeed = 3 as float, fastAnimSpeed = 1 as float, animStyle = "fixed" as string, offsets = invalid as mc.types.array)
function createFocusSettings(animSpeed = 3 as float, fastAnimSpeed = 1 as float, animStyle = "fixed" as string, offsets = invalid as mc.types.array, feedbackStyle = "onTop" as string)
settings = createObject("roSGNode", "ml_FocusSettings")
if offsets = invalid
offsets = [0, 0, 0, 0]
Expand All @@ -100,6 +129,7 @@ namespace ml.listMixin
fastAnimSpeed: fastAnimSpeed / 10.0
animStyle: animStyle
feedbackOffsets: offsets
feedbackStyle: feedbackStyle
})
return settings

Expand Down

0 comments on commit 4f0eeb3

Please sign in to comment.