TODO find a way to populate fields of RiderCardDrawer vie (binding ?)

This commit is contained in:
2025-12-15 14:02:05 +01:00
parent da6a89c848
commit ca48bf8bc9
9 changed files with 100 additions and 31 deletions
+14 -3
View File
@@ -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();
}
}
+4 -4
View File
@@ -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;
}
}
+1 -1
View File
@@ -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);
-13
View File
@@ -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;
}
}
+13
View File
@@ -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;
}
}
+2 -2
View File
@@ -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;
}
+4 -2
View File
@@ -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;
}
+58 -3
View File
@@ -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 );
}
+3 -2
View File
@@ -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();