Un transport = un compte

Dans Kopete, quand on configure un compte jabber, msn, ou autre, on ajoute ce qu'on appelle un Account. Il est représenté par une icone dans la bare de statuts. Les contact d'un Account peuvent être repéré puisqu'ils ont la même icône et la même couleur que ce dernier. Kopete screenshot

Il paraît logique qu'un transport soit également une sorte d' Account. C'est ce que j'ai essayé de faire. Il est maintenant possible de gérer les transports comme on gère un Account (pour la suppression, la modification, la gestion des contacts). Il apparaît exactement comme un vrai compte MSN.

Étonnamment, ce fut assez facile et ne nécessita presque pas de modification dans le coeur de Kopete. La seule modification qui dut y être faite est l'ajout de la possibilité d'associer à un Account une icone autre que celle du protocole, mais cette modification était déjà prévue de longue date.

Mangeur de contact

Lors de la première connexion ou de l'ajout du transport, il est impossible pour Kopete de dire si un contact appartient à un transport. En effet, on ne peut savoir qu'il existe un transport qu'après la réponse de celui-ci au service discovery. Le problème étant qu'à ce moment, tous les contacts sont déjà créés comme appartenant au compte Jabber et non au transport

La solution, que j'ai appelée mangeur de contact, est de supprimer tous les contacts du transport lors de la création de celui-ci, et de les ré-ajouter comme appartenant au transport.

Enfin, tout ça pour dire que je suis juste satisfait du nom original de la fonction: JabberTransport::eatContacts()

Icônes

Pour les icônes, j'avais originalement utilisé l'icône du legacy service [1]. Un transport MSN apparaissait donc exactement comme un compte MSN. Mais Johann a fait de belles icônes pour les transports.

Bien que personnellement, j'aurais préféré mettre plus en évidence le legacy service a la place de l'ampoule de Jabber sur ces icônes.

Notes

[1] C'est le terme utilisé dans la documentation de Jabber pour spécifier le protocole simulé par le transport.