120 lines
4.3 KiB
Haxe
120 lines
4.3 KiB
Haxe
package view;
|
|
|
|
import control.RiderSelectEvent;
|
|
import feathers.events.ListViewEvent;
|
|
import feathers.events.TriggerEvent;
|
|
import feathers.skins.RectangleSkin;
|
|
import com.adobe.cairngorm.control.CairngormEventDispatcher;
|
|
import control.AppController;
|
|
import com.adobe.cairngorm.control.CairngormEvent;
|
|
import components.RidersListRendererAccessory;
|
|
import components.RoundAvatar;
|
|
import feathers.controls.ListView;
|
|
import feathers.controls.dataRenderers.ItemRenderer;
|
|
import feathers.data.ListViewItemState;
|
|
import feathers.events.FeathersEvent;
|
|
import feathers.text.TextFormat;
|
|
import feathers.utils.DisplayObjectRecycler;
|
|
import model.AppModelLocator;
|
|
import model.Constants;
|
|
import openfl.Assets;
|
|
import openfl.events.Event;
|
|
import openfl.text.Font;
|
|
import t9.util.ColorTraces.*;
|
|
import vo.RiderVO;
|
|
|
|
class RidersList extends ListView {
|
|
private var model = AppModelLocator.getInstance();
|
|
private var rowHeight:Int;
|
|
|
|
public function new() {
|
|
super();
|
|
addEventListener(FeathersEvent.CREATION_COMPLETE, onCreationComplete);
|
|
//addEventListener(Event.CHANGE, onRiderSelect);
|
|
addEventListener(ListViewEvent.ITEM_TRIGGER, onRiderSelect);
|
|
}
|
|
|
|
override private function initialize():Void {
|
|
super.initialize();
|
|
|
|
// set common properties for all renderers in the same container here
|
|
var recycler = DisplayObjectRecycler.withFunction(() -> {
|
|
final fnt1:Font = Assets.getFont(Constants.MONTSERRAT_MEDIUM_500);
|
|
final fnt2:Font = Assets.getFont(Constants.MONTSERRAT_BOLD_700);
|
|
|
|
rowHeight = Std.int(height / Constants.RIDERS_LIST_ROWS_COUNT);
|
|
|
|
var itemRenderer = new ItemRenderer();
|
|
itemRenderer.height = rowHeight;
|
|
itemRenderer.icon = new RoundAvatar(Std.int(rowHeight * 0.9));
|
|
itemRenderer.textFormat = new TextFormat(fnt1.fontName, Std.int(rowHeight * 0.27), Constants.MAIN_COLOR1);
|
|
itemRenderer.secondaryTextFormat = new TextFormat(fnt2.fontName, Std.int(rowHeight * 0.2), Constants.MAIN_COLOR2);
|
|
|
|
var rs1 = new RectangleSkin(SolidColor(Constants.MAIN_COLOR3, 1), SolidColor(1, Constants.LIST_SEPARATOR_COLOR));
|
|
var rs2 = new RectangleSkin(SolidColor(Constants.LIST_SEPARATOR_COLOR, 1), SolidColor(1, Constants.LIST_SEPARATOR_COLOR));
|
|
itemRenderer.backgroundSkin = rs1;
|
|
itemRenderer.selectedBackgroundSkin = rs2;
|
|
itemRenderer.setSkinForState(ToggleButtonState.UP(false), rs1);
|
|
itemRenderer.setSkinForState(ToggleButtonState.HOVER(false), rs2);
|
|
itemRenderer.setSkinForState(ToggleButtonState.DOWN(false), rs2);
|
|
|
|
|
|
return itemRenderer;
|
|
|
|
});
|
|
|
|
itemRendererRecycler = recycler;
|
|
|
|
recycler.update = (itemRenderer:ItemRenderer, state:ListViewItemState) -> {
|
|
var rider:RiderVO = cast(state.data, RiderVO);
|
|
itemRenderer.text = rider.firstName;
|
|
itemRenderer.secondaryText = rider.name;
|
|
|
|
var rlra:RidersListRendererAccessory = new RidersListRendererAccessory(Std.int(rowHeight * 0.8), rider.credit);
|
|
itemRenderer.accessoryView = rlra;
|
|
|
|
// TODO change this to real iamge path
|
|
// loader.source = "https://lepetittrot.com/path/to/pp_pictures" + state.data.id + ".jpg";
|
|
// loader.source = "https://testingbot.com/free-online-tools/random-avatar/50?u=" + Uuid.nanoId();
|
|
};
|
|
|
|
recycler.reset = (itemRenderer:ItemRenderer, state:ListViewItemState) -> {
|
|
// TODO
|
|
/*var label = cast(itemRenderer.getChildByName("label"), Label);
|
|
var loader = cast(itemRenderer.getChildByName("loader"), AssetLoader);
|
|
label.text = "";
|
|
loader.source = null; */
|
|
};
|
|
|
|
model.addEventListener(AppModelLocator.RIDERS_LIST_DP_CHANGE, onRiderListDpChange);
|
|
}
|
|
|
|
private function onCreationComplete(event:FeathersEvent):Void {
|
|
traceBlue(this + " --> onCreationComplete() - w: " + width + " h: " + height);
|
|
}
|
|
|
|
private function onRiderListDpChange(e:Event):Void {
|
|
dataProvider = model.ridersListDP;
|
|
|
|
/*itemToText = function(item:Dynamic):String {
|
|
return item.firstName;
|
|
};*/
|
|
traceGreen(this + " --> onRideListDpChange() - w: " + width + " h: " + height);
|
|
}
|
|
|
|
function onRiderSelect(e:ListViewEvent):Void {
|
|
|
|
// broadcast a cairngorm event that contains the selectedItem from the List
|
|
var riderVO:RiderVO = cast(e.state.data, RiderVO);
|
|
var rse:RiderSelectEvent = new RiderSelectEvent(riderVO);
|
|
CairngormEventDispatcher.getInstance().dispatchEvent(rse);
|
|
//trace(riderVO.firstName);
|
|
//clearSelectedRider();
|
|
}
|
|
|
|
// de-select any selected List items
|
|
private function clearSelectedRider():Void {
|
|
selectedIndex = -1;
|
|
}
|
|
}
|