PixPref – La gestion facile de préférences

PixPref, nouvelle extension de Pixlib, permet de gérer simplement vos préférences au niveau de votre application Flash.

En parlant de “préférences” nous parlons de “données utilisateur, configuration personnalisée etc” qui seront sauvegardées (et récupérer) au sein de votre application.

Voyons comment tout cela se passe.

Tout d’abord, PixPref à une dépendance forte avec l’extension PixService déjà livrée avec Pixlib. En effet, la gestion des préférences, de base, est gérée par le biais de services Pixlib.

Il est donc possible d”enregistrer les préférences avec :

  • un service AMF
  • un service HTTP
  • un service SharedObject
  • et l’utilisation de fichiers sur le disque (pour les applications Adobe AIR)

note : La gestion des préférences proposée en natif est standard (lecture/écriture); il est donc possible de surcharger certaines méthodes ou services afin de créer une gestion “sécurisée” et/ou”cryptée” par exemple, de vos données.

PixPref permet simplement de changer de stratégie de sauvegarde parmi les services proposés.

Prenons un exemple pour enregistrer les préférences via un SharedObject.

package
{
	import net.pixlib.core.PXBaseDocument;
	import net.pixlib.log.PXDebug;
	import net.pixlib.log.PXTraceLayout;
	import net.pixlib.log.addLogListener;
	import net.pixlib.prefs.PXPreferences;
	import net.pixlib.prefs.event.PXPreferencesEvent;
	import net.pixlib.prefs.strategy.PXSOStrategy;
 
	import flash.system.Capabilities;
 
	public class Sample extends PXBaseDocument
	{
		override protected function onDocumentReady() : void
		{
			//On rajoute une sortie pour les messages de Pixlib, ici le classique "trace" de Flash
			addLogListener(PXTraceLayout.getInstance());
 
			//On créé un groupe de préférences sous l'identifiant "system".
			var pref : PXPreferences = PXPreferences.get("system");
 
			//On utilise une solution SharedObject pour enregistrer / charger les préférences
			pref.strategy = new PXSOStrategy();
 
			//On définie quelques propriétés qui seront définies dans nos préférences.
			pref.setValue("OS", Capabilities.os);
			pref.setValue("Name", "My name is Pixlib");
 
			//On rajoute des écouteurs sur le statut des opérations
			pref.addEventListener(PXPreferencesEvent.onPreferencesSaveEVENT, _onSave);
			pref.addEventListener(PXPreferencesEvent.onPreferencesLoadEVENT, _onLoad);
 
			//On enregistre les données.
			pref.save();
		}
 
		private function _onSave(event : PXPreferencesEvent) : void
		{
			PXDebug.DEBUG("Preferences are saved, try to reload them", this);
 
			event.preferences.load();
		}
 
		private function _onLoad(event : PXPreferencesEvent) : void
		{
			PXDebug.DEBUG("Preferences are loaded", this);
 
			var pref : PXPreferences = event.preferences;
 
			PXDebug.DEBUG(pref.getValue("OS"), this);
			PXDebug.DEBUG(pref.getValue("Name"), this);
			PXDebug.DEBUG(pref.data, this);
		}
	}
}

Les préférences sont gérées par identifiant, c’est à dire que pour une même application, on peut gérer plusieurs groupes de préférences. Ici, on enregistre des préférences identifié sous le nom “system“.

On peut récupérer ou créer d’autres groupes de préférences en utilisant la méthode :

var pref : PXPreferences = PXPreferences.get("IDENTIFIANT_GROUPE_PRÉFÉRENCES");

Ensuite il suffit de définir la stratégie que l’on veut utiliser pour manipuler les préférences.
Ici on utilise un stratégie permettant de gérer les préférences dans un SharedObject de Flash :

pref.strategy = new PXSOStrategy();

Pour les autres stratégies déployées dans PixPref, voici leur utilisation :

  • pref.strategy = new PXAMFStrategy(“gateway.php”, “PrefService”, “load”, “save”);
  • pref.strategy = new PXHTTPStrategy(“load.php”, “save.php”, URLRequestMethod.POST);
  • pref.strategy = new PXFileStrategy();

note : quand la stratégie utilisée est PXFileStrategy, le fichier manipulé se trouve dans le dossier de l’application sous le nom de l’identifiant choisi pour les préférences.

Les préférences peuvent être ensuite chargées ou sauvegardées via les méthodes load() ou save(), quelque soit la stratégie utilisée.

Enfin, des écouteurs peuvent être définis pour écouter l’état des préférences :

  • PXPreferencesEvent#onPreferencesLoadEVENT : quand les préférences sont chargées
  • PXPreferencesEvent#onPreferencesSaveEVENT : quand les préférences sont enregistrées
  • PXPreferencesEvent#onPreferenceEditEVENT : quand un champ des préférences est modifié
  • PXPreferencesEvent#onPreferenceDeleteEVENT : quand un champ des préférences est supprimé

Afin de personnaliser l’enregistrement et le chargement des préférences (par exemple une gestion cryptée des données), il est possible de déterminer des “serializer et deserializer” de données directement depuis la classe PXPreference; par exemple :

var pref : PXPreferences = PXPreferences.get("system");
pref.serializer = new AESSerializer();
pref.deserializer = new AESDeserializer();

Ceci permettant tout type de traitement sur les données enregistrées et/ou chargées.

Enfin, si vous désirez créer une nouvelle stratégie pour manipuler vos préférences, il suffit d’implémenter l’interface PXPreferencesStrategy.

Plus simplement encore, vous pouvez étendre la classe abstraite PXAbstractStrategy qui étant déjà cette interface et qui donne en plus des comportements par défaut utilise à la gestion des données.

Les différents liens pour les téléchargements:

Happy coding with Pixlib

This entry was posted in Extension, Framework, Tutorial and tagged , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">