<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="450" height="350" title="Nouveau contact">
<mx:Script>
<![CDATA[
import DB.Database;
import mx.controls.Alert;
import mx.managers.DragManager;
import mx.graphics.codec.JPEGEncoder;
import mx.validators.Validator;
import mx.managers.PopUpManager;
import BO.Contact;
private var editedContact:Contact;
public function closeWindow():void
{
PopUpManager.removePopUp(this);
}
public function validateForm():void
{
var validators:Array = Validator.validateAll([validMail, validPseudo, validDate]);
if(!validators.length)
{
var Edition:Boolean = editedContact != null;
if(editedContact == null)
{
editedContact = new Contact();
}
editedContact.Pseudo = inputPseudo.text;
editedContact.Mail = inputMail.text;
editedContact.DateNaissance = inputDate.selectedDate;
editedContact.Avatar = imageToByteArray(inputAvatar);
var result:Boolean = false;
if(!Edition)
{
result = Database.Instance.insertContact(editedContact);
}
else
{
result = Database.Instance.updateContact(editedContact);
}
if(result)
{
closeWindow();
}
else
{
Alert.show("Erreur lors de l'enregistrement\n\n" + Database.Instance.LastErrorMessage, "Tutoriel SQLite developpez");
}
}
}
private function imageToByteArray(img:Image):ByteArray
{
var bmd:BitmapData = new BitmapData(img.width, img.height, true);
bmd.draw(img, new Matrix());
var bm:Bitmap = new Bitmap(bmd);
var jpg:JPEGEncoder = new JPEGEncoder();
return jpg.encode(bmd);
}
private function selectImage():void
{
var imagesFilter:FileFilter = new FileFilter("Images", "*.jpg;*.gif;*.png;*.swf;");
var imageFile:File = new File();
imageFile.browseForOpen("Selectionnez une image", [imagesFilter]);
imageFile.addEventListener(Event.SELECT, imageSelected);
}
private function imageSelected(pEvent:Event):void
{
inputAvatar.source = (pEvent.currentTarget as File).url;
}
public function initEdition(pContact:Contact):void
{
editedContact = pContact;
inputPseudo.text = pContact.Pseudo;
inputMail.text = pContact.Mail;
inputDate.selectedDate = pContact.DateNaissance;
inputAvatar.source = pContact.Avatar;
this.title = "Modification d'un contact";
}
]]>
</mx:Script>
<mx:StringValidator id="validPseudo" source="{inputPseudo}" property="text" trigger="{btnValidate}" triggerEvent="click" minLength="2" maxLength="20"
tooShortError="2 caractères minimum !" tooLongError="Pseudonyme trop long !" requiredFieldError="Veuillez indiquer un Pseudonyme." />
<mx:EmailValidator id="validMail" source="{inputMail}" property="text" trigger="{btnValidate}" triggerEvent="click"
requiredFieldError="Veuillez indiquer une adresse mail."
missingAtSignError="Le charactere @ est manquant dans votre adresse email."
missingPeriodInDomainError="Le domaine est manquant dans votre adresse email."
missingUsernameError="Le nom d'utilisateur est manquant dans votre adresse email." />
<mx:DateValidator id="validDate" source="{inputDate}" property="text" trigger="{btnValidate}" triggerEvent="click" allowedFormatChars="/" inputFormat="DD/MM/YYYY" requiredFieldError="Entrez la date de naissance" />
<mx:Form width="100%">
<mx:FormItem label="Pseudo">
<mx:TextInput id="inputPseudo" />
</mx:FormItem>
<mx:FormItem label="Adresse mail">
<mx:TextInput id="inputMail" />
</mx:FormItem>
<mx:FormItem label="Date de naissance">
<mx:DateField id="inputDate" editable="true" formatString="DD/MM/YYYY" />
</mx:FormItem>
<mx:FormItem label="Avatar">
<mx:HBox id="boxAvatar">
<mx:Canvas borderThickness="2" borderStyle="solid">
<mx:Image id="inputAvatar" scaleContent="{ckScale.selected}" maintainAspectRatio="true" width="170" height="130" />
</mx:Canvas>
<mx:VBox>
<mx:Button label="Parcourir" click="selectImage()" />
<mx:CheckBox id="ckScale" selected="true" label="Ajuster" />
</mx:VBox>
</mx:HBox>
</mx:FormItem>
</mx:Form>
<mx:HBox width="100%" horizontalAlign="center">
<mx:Spacer width="100%" />
<mx:Button label="Annuler" click="closeWindow()" />
<mx:Spacer width="30%" />
<mx:Button id="btnValidate" label="Valider" click="validateForm()" />
<mx:Spacer width="100%" />
</mx:HBox>
</mx:TitleWindow>