Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

11juil/108

ToasterLib – Maintenant disponible pour Flex 4

Certains connaissent peut-être déjà la ToasterLib. Pour ceux qui ne la connaissent pas, c'est une librairie que j'ai crée qui permet d'afficher des notifications type Msn/Avast dans votre application Flex.  Plus d'informations ici:

ToasterLib – Affichez des notifications dans vos applications Flex

Une utilisatrice de la librairie m'a demandé s'il existait une version Flex 4 de cette librairie. Après quelques remplacement de classes et quelques adaptations sur les exemples, la ToasterLib est devenue compatible Flex 4. Un petit screenshot pour vous montrer le résultat:

toaster-fx4

Le SWC compatible Flex est disponible sur la page Downloads du projet Google Code ToasterLib:

Télécharger la ToasterLib pour Flex 4

Pour ceux qui veulent les sources, elles se trouvent dans une branche SVN nommée ToasterLibFx4.

Amusez vous bien :)

Remplis sous: Flex 4, ToasterLib || Taggé comme: , Laisser un commentaire

Articles similaires

Commentaires (8) Trackbacks (1)
  1. Bonjour,

    Juste pour vous remercier pour cette librairie, qui m'a fait économisé beaucoup de temps pour un rendu bien supérieur à ce que j'aurai pu produire.

    Par contre, deux points pour lesquels j'aimerai avoir confirmation :
    * Pour setter le titre de la notification, j'ai utilisé le code suivant :

    Actionscript:
    1. var message:ToastMessageGTalk = new ToastMessageGTalk();
    2. toaster.toast(message);
    3. message.userName.text = title;

    * Pour utiliser une image embarquée avec le swf :

    Actionscript:
    1. var message:ToastMessageGTalk = new ToastMessageGTalk();
    2. toaster.toast(message);
    3. message.avatar.source = ICON_INFO;

    Est-ce la meilleure manière de procéder?

    Merci encore,

    Laurent

  2. Salut Laurent,
    effectivement, si tu essaies d'accéder directement à l'objet Text/Label "userName" à l'intérieur de ton toast, avant qu'il ne soit "toasté", il n'est pas encore ajouté à la liste d'affichage donc ses enfants graphiques ne sont pas encore construits et tu aura un null pointer.
    Tu peux par contre créer une variable de type String Bindable dans ton toast et la setter. Ensuite, tu bind la propriété "text" de ton Text sur cette variable et elle sera remplie quand l'objet sera initialisé.

    Fabien
    PS: Je t'ai contacté par mail

  3. Bonjour,

    Tout d'abord bravo pour votre librairie ToasterLib !
    Cependant j'ai un soucis : lors de l'affichage d'un toast dans une fenêtre AIR, si celle-ci n'a pas le focus, le toast ne disparaît pas.
    Je sais qu'AIR réduit automatiquement le framerate lorsque la fenêtre n'est pas active mais même en le forçant (backgroundFrameRate sur la WindowedApplication) le toast ne disparaît pas.
    Auriez-vous une solution ?

    D'avance merci !

  4. Bonjour Hydr_,
    Bien vu, ce souci est en fait une fonctionnalité de la librairie. Cela permet de conserver les notifications si votre navigateur n'a pas le contrôle. Je m'abonne sur le EVENT.DEACTIVATE de l'application et je stoppe le timer qui ferme automatiquement le toast. Cela n'a pas à voir avec le backgroundFrameRate de WindowedApplication.
    Cela se trouve dans ToastContainerBase.mxml::onCreationComplete:

    Actionscript:
    1. addEventListener(Event.ACTIVATE, resumeExpiration);
    2. addEventListener(Event.DEACTIVATE, pauseExpiration);

    Alors soit vous prenez les sources de la ToasterLib depuis Google Code et vous compilez votre propre version, soit vous faites un petit "hack".
    Depuis chaque Toast, on peut accéder au ToastContainerBase. On peut donc surcharger le setter et supprimer l'eventListener à la volée avant qu'il n'ait le temps de se mettre en place. Dans votre class de Toast à vous, quelque chose comme:

    Actionscript:
    1. overrde public function set container(value:IToastContainer):void {
    2. super.container = value;
    3. if (value && value.hasEventListener(EVENT.DEACTIVATE)){
    4. value.removeEventListener(EVENT.ACTIVATE, value.resumeExpiration);
    5. value.removeEventListener(EVENT.DEACTIVATE, value.pauseExpiration);
    6. }
    7. }

    Je n'ai pas le temps de tester mais cela devrait fonctionner !

    Fabien

  5. Merci pour votre réactivité !

    Le hack est une bonne solution, il évitera que j'écrase mes modifications lors d'une éventuelle mise à jour des sources.

    Ceci dit, ayant testé rapidement, on ne passe jamais dans le if.
    Je continue les investigations, merci !

  6. Bonjour Fabien,

    J'essaye d'utiliser la librairie ToasterLib pour Flex4.
    J'ai pris l'exemple le plus simple, qui n'est dispo qu'en Flex 3 à ma connaissance, et j'ai essayé de l'adapter. En effet,le problème c'est que les attributs MXML verticalScrollPolicy et horizontalScrollPolicy ne sont pas (très bien) reconnus en Flex 4.

    Donc j'ai dû les enlever, afin que cela compile. Du coup, ca marche... moyen.

    Le "toast" s'affiche hors de l'écran : Je ne vois que le troisième ou quatrième, suite aux empilements successifs.

    Une idée ?

    Le plus simple, avec cette nouvelle librairie, serait de fournir un exemple avec un "view source" comme pour Flex 3...

    Ca éviterait de trop se gratter la tête ;-)

  7. Ah ben c'est malin, je viens de trouver, une fois que j'ai posté le commentaire, grâce à la discussion du bugTracker :
    Pour ceux que ça intéresse :
    Il faut placer la balise toastLib en dernier (juste avant ).

  8. Effectivement, il faudrait que je prenne le temps de poster un exemple pour Flex 4, quelques personnes me l'ont demandé. Mais au fond, il n'y a que peu de choses qui changent par rapport à la version Flex 3 (il fallait aussi le mettre en dernier au dessus du reste ;) )

    Fabien


Leave a comment

(required)