diff --git a/src/LPTCManager2026.hx b/src/LPTCManager2026.hx index e37426e..f8cdf72 100644 --- a/src/LPTCManager2026.hx +++ b/src/LPTCManager2026.hx @@ -1,3 +1,4 @@ +import view.RiderCardDrawer; import openfl.system.Security; import business.Services; import com.adobe.cairngorm.control.CairngormEventDispatcher; @@ -18,6 +19,7 @@ class LPTCManager2026 extends Application { private var appController:AppController; private var mainPanel:MainPanel; private var md:MainDrawer; + private var rcd:RiderCardDrawer; public function new() { super(); @@ -41,7 +43,11 @@ class LPTCManager2026 extends Application { md = new MainDrawer(); addChild(md); + rcd = new RiderCardDrawer(); + addChild(rcd); + model.addEventListener(AppModelLocator.DRAWER_STATE_CHANGE, onDrawerStateChange); + model.addEventListener(AppModelLocator.RIDER_SELECT_CHANGE, onRiderSelectChange); //traceBlue(this + " --> initialize()"); @@ -53,12 +59,17 @@ class LPTCManager2026 extends Application { CairngormEventDispatcher.getInstance().dispatchEvent(cgEvent); } - private function onCreationComplete(event:FeathersEvent):Void { - traceBlue("Application --> onCreationComplete()"); - loadRiders(); + private function onRiderSelectChange(event:Event):Void { + trace(model.selectedRider.name); + rcd.openDrawer(); } private function onDrawerStateChange(e:Event):Void { model.drawerIsOpen ? md.openDrawer() : md.closeDrawer(); } + + private function onCreationComplete(event:FeathersEvent):Void { + traceBlue("Application --> onCreationComplete()"); + loadRiders(); + } } diff --git a/src/command/RiderSelectCommand.hx b/src/command/RiderSelectCommand.hx index cefd680..bb870c9 100644 --- a/src/command/RiderSelectCommand.hx +++ b/src/command/RiderSelectCommand.hx @@ -1,15 +1,15 @@ package command; -import model.Constants; import com.adobe.cairngorm.commands.ICommand; import com.adobe.cairngorm.control.CairngormEvent; +import control.RiderSelectEvent; import model.AppModelLocator; -import t9.util.ColorTraces.*; class RiderSelectCommand implements ICommand { private var model = AppModelLocator.getInstance(); - public function execute(e:CairngormEvent):Void { - trace(e.data); + public function execute(ce:CairngormEvent):Void { + // set the selectedRider property in the model locator with the details from the ListView item selected by user + model.selectedRider = cast(ce, RiderSelectEvent).selectedRider; } -} +} \ No newline at end of file diff --git a/src/components/RoundAvatar.hx b/src/components/RoundAvatar.hx index f36ec09..9cd4950 100644 --- a/src/components/RoundAvatar.hx +++ b/src/components/RoundAvatar.hx @@ -59,7 +59,7 @@ class RoundAvatar extends LayoutGroup { //var lc:LoaderContext = new LoaderContext(true, null); // l.load(new URLRequest("https://ui-avatars.com/api/?background=random&size=64")); //l.load(new URLRequest("https://api.dicebear.com/9.x/pixel-art/png?size=32")); - l.load(new URLRequest("https://lepetittrot.com/lptcm/assets/profile-pictures/pp256/pp_malo.jpeg")); + l.load(new URLRequest("https://lepetittrot.com/lptcm/assets/profile-pictures/pp256/pp_test_256.jpg")); l.contentLoaderInfo.addEventListener (Event.COMPLETE, onLoadComplete); addChild(l); diff --git a/src/control/RiderSelecEvent.hx b/src/control/RiderSelecEvent.hx deleted file mode 100644 index 434dbef..0000000 --- a/src/control/RiderSelecEvent.hx +++ /dev/null @@ -1,13 +0,0 @@ -package control; - -import com.adobe.cairngorm.control.CairngormEvent; -import vo.RiderVO; - -class RiderSelecEvent extends CairngormEvent { - public var selectedItem:RiderVO; - - public function new(selectedItem:RiderVO) { - super(AppController.RIDER_SELECT_EVENT); - this.selectedItem = selectedItem; - } -} \ No newline at end of file diff --git a/src/control/RiderSelectEvent.hx b/src/control/RiderSelectEvent.hx new file mode 100644 index 0000000..604a744 --- /dev/null +++ b/src/control/RiderSelectEvent.hx @@ -0,0 +1,13 @@ +package control; + +import com.adobe.cairngorm.control.CairngormEvent; +import vo.RiderVO; + +class RiderSelectEvent extends CairngormEvent { + public var selectedRider:RiderVO; + + public function new(pSelectedRider:RiderVO) { + super(AppController.RIDER_SELECT_EVENT); + selectedRider = pSelectedRider; + } +} \ No newline at end of file diff --git a/src/model/AppModelLocator.hx b/src/model/AppModelLocator.hx index 5b4b6ad..6abe66d 100644 --- a/src/model/AppModelLocator.hx +++ b/src/model/AppModelLocator.hx @@ -15,7 +15,7 @@ class AppModelLocator extends EventDispatcher implements IModelLocator { public static final VIEWING_CHANGE:String = "viewingChange"; public static final RIDERS_LIST_DP_CHANGE:String = "ridersListDPChange"; public static final DRAWER_STATE_CHANGE:String = "drawerStateChange"; - public static final RIDER_SELECT:String = "riderSelect"; + public static final RIDER_SELECT_CHANGE:String = "riderSelectChange"; // this instance stores a static reference to itself private static var model:AppModelLocator; @@ -50,7 +50,7 @@ class AppModelLocator extends EventDispatcher implements IModelLocator { private function set_selectedRider(pRider:RiderVO):RiderVO { selectedRider = pRider; - dispatchEvent(new Event(AppModelLocator.RIDER_SELECT)); + dispatchEvent(new Event(AppModelLocator.RIDER_SELECT_CHANGE)); return selectedRider; } diff --git a/src/view/MainDrawer.hx b/src/view/MainDrawer.hx index 42f1140..3ee37c3 100644 --- a/src/view/MainDrawer.hx +++ b/src/view/MainDrawer.hx @@ -27,6 +27,10 @@ class MainDrawer extends Drawer { override private function initialize():Void { super.initialize(); + overlaySkin = new RectangleSkin(SolidColor( Constants.HERO_COLOR, 1)); + pullableEdge = LEFT; + clickOverlayToClose = false; + var d1 = new LayoutGroup(); var vl = new VerticalLayout(); vl.setPadding(10); @@ -40,8 +44,6 @@ class MainDrawer extends Drawer { }); d1.addChild(closeDrawerButton); - overlaySkin = new RectangleSkin(SolidColor( Constants.HERO_COLOR, 1)); - drawer = d1; } diff --git a/src/view/RiderCardDrawer.hx b/src/view/RiderCardDrawer.hx index d3a4464..81eb470 100644 --- a/src/view/RiderCardDrawer.hx +++ b/src/view/RiderCardDrawer.hx @@ -1,5 +1,15 @@ package view; +import openfl.text.TextFormat; +import model.AppModelLocator; +import feathers.controls.Label; +import openfl.Assets; +import openfl.text.Font; +import openfl.display.Bitmap; +import openfl.display.LoaderInfo; +import lime.app.Event; +import openfl.net.URLRequest; +import openfl.display.Loader; import feathers.controls.Button; import feathers.controls.Drawer; import feathers.controls.LayoutGroup; @@ -9,12 +19,18 @@ import feathers.layout.VerticalLayout; import feathers.skins.RectangleSkin; import model.Constants; import t9.util.ColorTraces.*; +import openfl.events.Event; class RiderCardDrawer extends Drawer { public static final CLOSE:String = "close"; public static final OPEN:String = "open"; + private var model:AppModelLocator; + private final borderPadding:Int = 10; + private var tf1:TextFormat; + private var tf2:TextFormat; + private var closeDrawerButton:Button; public function new() { @@ -25,25 +41,64 @@ class RiderCardDrawer extends Drawer { override private function initialize():Void { super.initialize(); + // Text Styling + //var fnt:Font = Assets.getFont(Constants.MONTSERRAT_MEDIUM_500); + //tf1 = new TextFormat(fnt.fontName, 12, Constants.MAIN_COLOR1); + //tf2 = new TextFormat(Assets.getFont(Constants.MONTSERRAT_BOLD_700).fontName, 14, Constants.MAIN_COLOR1); + + model = AppModelLocator.getInstance(); + + overlaySkin = new RectangleSkin(SolidColor( Constants.MAIN_COLOR3, 1)); + pullableEdge = TOP; + clickOverlayToClose = false; + animateOpenedProperty = false; // Doesn't seems to work + var d1 = new LayoutGroup(); var vl = new VerticalLayout(); - vl.setPadding(10); + vl.setPadding(borderPadding); vl.horizontalAlign = LEFT; vl.verticalAlign = TOP; d1.layout = vl; + // close button closeDrawerButton = new Button(); closeDrawerButton.text = "Close Drawer"; closeDrawerButton.addEventListener(TriggerEvent.TRIGGER, (event) -> { - opened = false; + //opened = false; + closeDrawer(); }); + d1.addChild(closeDrawerButton); - overlaySkin = new RectangleSkin(SolidColor( Constants.HERO_COLOR, 1)); + // profile picture + var l:Loader = new Loader(); + l.contentLoaderInfo.addEventListener (Event.COMPLETE, onPPLoadComplete); + l.load(new URLRequest("https://lepetittrot.com/lptcm/assets/profile-pictures/pp512/pp_test_512.jpg")); + d1.addChild(l); + + // Name label + var nl:Label = new Label(); + nl.text = "zozo 3000"; + // TODO trouver un moyen pour mettre à jour tous les champs de ce composant (binding ?) + //nl.text = model.selectedRider.name; + //nl.embedFonts = true; + //nl.textFormat = tf1; + d1.addChild(nl); + + drawer = d1; } + private function onPPLoadComplete(e:Event) { + + var l:Loader = cast(e.currentTarget, LoaderInfo).loader; + var bmp:Bitmap = e.currentTarget.content; + bmp.smoothing = true; + l.content.width = l.content.height = width - (borderPadding * 2); + + } + private function onCreationComplete(event:FeathersEvent):Void { traceBlue(this + " --> onCreationComplete() - w: " + width + " h: " + height ); } diff --git a/src/view/RidersList.hx b/src/view/RidersList.hx index 8764912..55db416 100644 --- a/src/view/RidersList.hx +++ b/src/view/RidersList.hx @@ -1,6 +1,6 @@ package view; -import control.RiderSelecEvent; +import control.RiderSelectEvent; import feathers.events.ListViewEvent; import feathers.events.TriggerEvent; import feathers.skins.RectangleSkin; @@ -76,6 +76,7 @@ class RidersList extends ListView { }; recycler.reset = (itemRenderer:ItemRenderer, state:ListViewItemState) -> { + // TODO /*var label = cast(itemRenderer.getChildByName("label"), Label); var loader = cast(itemRenderer.getChildByName("loader"), AssetLoader); label.text = ""; @@ -102,7 +103,7 @@ class RidersList extends ListView { // broadcast a cairngorm event that contains the selectedItem from the List var riderVO:RiderVO = cast(e.state.data, RiderVO); - var rse:RiderSelecEvent = new RiderSelecEvent(riderVO); + var rse:RiderSelectEvent = new RiderSelectEvent(riderVO); CairngormEventDispatcher.getInstance().dispatchEvent(rse); //trace(riderVO.firstName); //clearSelectedRider();