diff --git a/assets/vector/cancel_icon_black.svg b/assets/vector/cancel_icon_black.svg new file mode 100644 index 0000000..c256680 --- /dev/null +++ b/assets/vector/cancel_icon_black.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/vector/check_icon_black.svg b/assets/vector/check_icon_black.svg new file mode 100644 index 0000000..26833a8 --- /dev/null +++ b/assets/vector/check_icon_black.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/model/String.hx b/src/model/String.hx index 8a2769c..b2ec47f 100644 --- a/src/model/String.hx +++ b/src/model/String.hx @@ -10,14 +10,20 @@ class Strings { // MainFooter strings public static final MF_S1:String = "Licences FFE"; - //ToolBar strings + // ToolBar strings public static final TB_S1:String = "Recherche"; // RidersList strings public static final RL_S1:String = "Crédit: "; - //RideCardDrawer strings + // RideCardDrawer strings public static final RCD_S1:String = "Cours restants sur la carte : "; public static final RCD_S2:String = "Décompter un cours"; + // ConfirmationPanel strings + public static final CP_S1:String = "Confirmation"; + public static final CP_S2:String = "Annuler"; + public static final CP_S3:String = "Confirmer"; + public static final CP_S4:String = "Vous allez décompter un cours pour "; + } \ No newline at end of file diff --git a/src/view/ConfirmationPanel.hx b/src/view/ConfirmationPanel.hx new file mode 100644 index 0000000..5bced69 --- /dev/null +++ b/src/view/ConfirmationPanel.hx @@ -0,0 +1,118 @@ +package view; + +import model.AppModelLocator; +import model.String.Strings; +import feathers.layout.HorizontalAlign; +import feathers.layout.VerticalLayout; +import openfl.text.TextFormatAlign; +import feathers.controls.Label; +import feathers.layout.HorizontalLayout; +import feathers.events.TriggerEvent; +import feathers.core.PopUpManager; +import feathers.controls.ButtonState; +import ui.LPTCTheme; +import feathers.layout.VerticalAlign; +import ui.SVGIconFactory; +import feathers.controls.Button; +import feathers.layout.HorizontalDistributedLayout; +import feathers.controls.LayoutGroup; +import openfl.Assets; +import feathers.text.TextFormat; +import model.Constants; +import feathers.skins.RectangleSkin; +import feathers.controls.Header; +import feathers.events.FeathersEvent; +import feathers.controls.Panel; +import t9.util.ColorTraces.*; + +class ConfirmationPanel extends Panel { + + private var head:Header; + private var foot:LayoutGroup; + private var b1:Button; + private var b2:Button; + private var mainLabel:Label; + + public function new(pB1Text:String, pB2Text:String) { + super(); + + head = new Header(); + + mainLabel = new Label(); + + foot = new LayoutGroup(); + + b1 = new Button(pB1Text); + b2 = new Button(pB2Text); + + addEventListener(FeathersEvent.CREATION_COMPLETE, onCreationComplete); + } + + override private function initialize():Void { + super.initialize(); + + // general + //autoSizeMode = STAGE; + width = stage.stageWidth - (Constants.GLOBAL_PADDING * 2); + height = stage.stageHeight - (Constants.GLOBAL_PADDING * 2); + setPadding(Constants.GLOBAL_PADDING); + var hl:VerticalLayout = new VerticalLayout(); + hl.verticalAlign = VerticalAlign.MIDDLE; + hl.horizontalAlign = HorizontalAlign.JUSTIFY; + layout = hl; + + var bkg1:RectangleSkin = new RectangleSkin(SolidColor(Constants.MAIN_COLOR3, 1)); + bkg1.cornerRadius = Constants.GLOBAL_CORNER_RADIUS; + backgroundSkin = bkg1; + + // header + var bkg2:RectangleSkin = new RectangleSkin(SolidColor(Constants.WARNING, 1)); + bkg2.cornerRadius = Constants.GLOBAL_CORNER_RADIUS; + head.backgroundSkin = bkg2; + head.height = Std.int(stage.stageHeight * Constants.MAIN_HEADER_HEIGHT_RATIO); + head.textFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_MEDIUM_500).fontName, Constants.FONT_SIZE_22, Constants.MAIN_COLOR3); + head.text = Strings.CP_S1; + header = head; + + // content + var mainLabelTF:TextFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_MEDIUM_500).fontName, Constants.FONT_SIZE_22, Constants.MAIN_COLOR1); + mainLabelTF.align = TextFormatAlign.CENTER; + mainLabel.embedFonts = true; + mainLabel.wordWrap = true; + mainLabel.textFormat = mainLabelTF; + mainLabel.setPadding(Constants.GLOBAL_PADDING * 8); + //mainLabel.backgroundSkin = new RectangleSkin(SolidColor(Constants.WARNING, 1)); + mainLabel.text = Strings.CP_S4 + AppModelLocator.getInstance().selectedRider.firstName; + addChild(mainLabel); + + + // buttons + b1.icon = SVGIconFactory.makeIcon("vector/cancel_icon_black.svg", Constants.BUTTONS_ICON_SIZE, Constants.HERO_COLOR); + b1.setIconForState(ButtonState.DOWN, SVGIconFactory.makeIcon("vector/cancel_icon_black.svg", Constants.BUTTONS_ICON_SIZE, Constants.MAIN_COLOR3)); + b1.variant = LPTCTheme.BUTTON_VARIANT_WHITE; + b1.addEventListener(TriggerEvent.TRIGGER, (e) -> { + PopUpManager.removePopUp(this); + }); + + b2.icon = SVGIconFactory.makeIcon("vector/check_icon_black.svg", Constants.BUTTONS_ICON_SIZE, Constants.MAIN_COLOR3); + b2.setIconForState(ButtonState.DOWN, SVGIconFactory.makeIcon("vector/check_icon_black.svg", Constants.BUTTONS_ICON_SIZE, Constants.HERO_COLOR)); + + // footer + foot.height = Std.int(stage.stageHeight * Constants.MAIN_HEADER_HEIGHT_RATIO); + var bkg3:RectangleSkin = new RectangleSkin(SolidColor(Constants.MAIN_COLOR3, 1)); + bkg3.cornerRadius = Constants.GLOBAL_CORNER_RADIUS; + foot.backgroundSkin = bkg3; + var hdl:HorizontalDistributedLayout = new HorizontalDistributedLayout(); + hdl.verticalAlign = VerticalAlign.MIDDLE; + hdl.gap = Constants.GLOBAL_PADDING; + hdl.setPadding(Constants.GLOBAL_PADDING); + foot.layout = hdl; + foot.addChild(b1); + foot.addChild(b2); + footer = foot; + } + + private function onCreationComplete(event:FeathersEvent):Void { + traceBlue(this + " --> onCreationComplete() - w: " + width + " h: " + height ); + } +} diff --git a/src/view/RiderCardDrawer.hx b/src/view/RiderCardDrawer.hx index a3702d4..c178eb3 100644 --- a/src/view/RiderCardDrawer.hx +++ b/src/view/RiderCardDrawer.hx @@ -1,5 +1,6 @@ package view; +import feathers.core.PopUpManager; import components.VSpacer; import feathers.controls.AssetLoader; import feathers.controls.Button; @@ -142,6 +143,7 @@ class RiderCardDrawer extends Drawer { removeOneCredit.text = Strings.RCD_S2; removeOneCredit.addEventListener(TriggerEvent.TRIGGER, (e) -> { traceRed("removeOneCredit()"); + PopUpManager.addPopUp(new ConfirmationPanel(Strings.CP_S2, Strings.CP_S3), parent, true, true); }); mainScrollContainer.addChild(removeOneCredit);