From e8789829aed8bdfafc93df45a8feb18d14ad83c8 Mon Sep 17 00:00:00 2001 From: nekotoro Date: Sun, 23 Nov 2025 22:11:53 +0100 Subject: [PATCH] Added : RidesrScreen, ToolBar Riders list is now populated with JSON TODO : resize list and tolbar --- src/LPTCManager2026.hx | 1 + src/view/MainPanel.hx | 17 ++++++++++++ src/view/RidersList.hx | 38 +++++++++++++++++++++++++ src/view/RidersScreen.hx | 29 +++++++++++++++++++ src/view/ToolBar.hx | 60 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 145 insertions(+) create mode 100644 src/view/RidersList.hx create mode 100644 src/view/RidersScreen.hx create mode 100644 src/view/ToolBar.hx diff --git a/src/LPTCManager2026.hx b/src/LPTCManager2026.hx index c012d16..f79b204 100644 --- a/src/LPTCManager2026.hx +++ b/src/LPTCManager2026.hx @@ -42,6 +42,7 @@ class LPTCManager2026 extends Application { model.addEventListener(AppModelLocator.DRAWER_STATE_CHANGE, onDrawerStateChange); + //traceBlue(this + " --> initialize()"); } diff --git a/src/view/MainPanel.hx b/src/view/MainPanel.hx index e776c44..a3aaca7 100644 --- a/src/view/MainPanel.hx +++ b/src/view/MainPanel.hx @@ -1,5 +1,9 @@ package view; +import feathers.controls.navigators.StackItem; +import feathers.controls.navigators.StackNavigator; +import feathers.controls.Button; +import openfl.display.Bitmap; import feathers.skins.RectangleSkin; import feathers.events.FeathersEvent; import model.Constants; @@ -10,6 +14,7 @@ class MainPanel extends Panel { private var mh:MainHeader; private var mf:MainFooter; + private var sn:StackNavigator; public function new() { super(); @@ -28,6 +33,18 @@ class MainPanel extends Panel { mf = new MainFooter(); footer = mf; + + sn = new StackNavigator(); + sn.width = 400; + sn.height = 300; + sn.addItem(StackItem.withClass("ridersScreen", RidersScreen)); + sn.rootItemID = "ridersScreen"; + addChild(sn); + + /*var rl:RidersList = new RidersList(); + rl.width = 300; + rl.height = 400; + addChild(rl);*/ } private function onCreationComplete(event:FeathersEvent):Void { diff --git a/src/view/RidersList.hx b/src/view/RidersList.hx new file mode 100644 index 0000000..69613bd --- /dev/null +++ b/src/view/RidersList.hx @@ -0,0 +1,38 @@ +package view; + +import feathers.controls.ListView; +import feathers.events.FeathersEvent; +import model.AppModelLocator; +import openfl.events.Event; +import t9.util.ColorTraces.*; + +class RidersList extends ListView { + private var model = AppModelLocator.getInstance(); + + public function new() { + super(); + addEventListener(FeathersEvent.CREATION_COMPLETE, onCreationComplete); + width = 300; + height = 400; + } + + override private function initialize():Void { + super.initialize(); + + model.addEventListener(AppModelLocator.RIDERS_LIST_DP_CHANGE, onRideListDpChange); + + } + + private function onCreationComplete(event:FeathersEvent):Void { + traceBlue(this + " --> onCreationComplete()"); + } + + private function onRideListDpChange(e:Event):Void { + traceGreen(this + " : onRideListDpChange"); + dataProvider = model.ridersListDP; + + itemToText = function(item:Dynamic):String { + return item.firstName; + }; + } +} diff --git a/src/view/RidersScreen.hx b/src/view/RidersScreen.hx new file mode 100644 index 0000000..d9a442f --- /dev/null +++ b/src/view/RidersScreen.hx @@ -0,0 +1,29 @@ +package view; + +import feathers.layout.VerticalLayout; +import feathers.controls.ScrollContainer; + +class RidersScreen extends ScrollContainer { + + private var tb:ToolBar; + private var rl:RidersList; + + public function new() { + super(); + } + + override private function initialize():Void { + super.initialize(); + + var vl:VerticalLayout = new VerticalLayout(); + vl.verticalAlign = TOP; + layout = vl; + + tb = new ToolBar(); + addChild(tb); + + rl = new RidersList(); + addChild(rl); + + } +} diff --git a/src/view/ToolBar.hx b/src/view/ToolBar.hx new file mode 100644 index 0000000..0c2f8d1 --- /dev/null +++ b/src/view/ToolBar.hx @@ -0,0 +1,60 @@ +package view; + +import feathers.controls.Label; +import feathers.controls.LayoutGroup; +import feathers.events.FeathersEvent; +import feathers.layout.HorizontalLayout; +import feathers.skins.RectangleSkin; +import feathers.text.TextFormat; +import model.Constants; +import openfl.Assets; +import openfl.text.Font; +import t9.util.ColorTraces.*; + +class ToolBar extends LayoutGroup { + + private var lbl1:Label; + + public function new() { + super(); + + addEventListener(FeathersEvent.CREATION_COMPLETE, onCreationComplete); + } + + override private function initialize():Void { + super.initialize(); + + final sw:Int = stage.stageWidth; + final sh:Int = stage.stageHeight; + final headerWidth = Std.int(sw * Constants.MAIN_HEADER_WIDTH_RATIO); + final headerHeight = Std.int(sh * Constants.MAIN_HEADER_HEIGHT_RATIO); + + autoSizeMode = CONTENT; + backgroundSkin = new RectangleSkin(SolidColor(Constants.ACCENT_COLOR1, 1)); + variant = LayoutGroup.VARIANT_TOOL_BAR; + + // Layout settings + var l:HorizontalLayout = new HorizontalLayout(); + l.paddingLeft = l.paddingRight = Std.int(headerHeight * .3); + l.paddingTop = l.paddingBottom = Std.int(headerHeight * .2); + l.verticalAlign = MIDDLE; + layout = l; + + // Title label + lbl1 = new Label(); + //lb1.backgroundSkin = new RectangleSkin(SolidColor(Constants.ACCENT_COLOR2, 1)); + + //lb1.verticalAlign = VerticalAlign.TOP; + lbl1.text = "Toolbar"; + lbl1.embedFonts = true; + var fnt:Font = Assets.getFont(Constants.MONTSERRAT_MEDIUM_500); + + lbl1.textFormat = new TextFormat(fnt.fontName, Std.int(headerHeight * .4), Constants.MAIN_COLOR3); + addChild(lbl1); + } + + private function onCreationComplete(event:FeathersEvent):Void { + traceBlue(this + " --> onCreationComplete()"); + } + +} \ No newline at end of file