codeur67
Messages postés9Date d'inscriptiondimanche 26 octobre 2008StatutMembreDernière intervention25 mai 2011
-
9 mars 2009 à 18:47
codeur67
Messages postés9Date d'inscriptiondimanche 26 octobre 2008StatutMembreDernière intervention25 mai 2011
-
10 mars 2009 à 16:32
Bonjour. Je cherche à coder un soft d'IM avec le protocole Skype et avec le package Skype4Java. J'ai besoin de créer un Listener sur l'objet contact_list (de type ContactList) : quand il change (que quelqu'un a rajouté une entrée), je voudrais que mon Listener déclenche un Event de façon à ce que je puisse gérer l'Event. Je suis débutant et j'ai vraiment besoin d'aide.
public static void main(String[] args) throws SkypeException {
final SKYPE_Connector skc = new SKYPE_Connector();
skc.init();
System.out.println("*** CHAT ***");
try {
my_chat = Skype.chat(with_this_person);// this is the person I want
// to chat with
} catch (SkypeException e) {
e.printStackTrace();
}
/*
* String message = ""; while (message.compareToIgnoreCase("quit") != 0)
* { message = skc.readString("Ecrivez votre message : "); try { if
* (message.compareToIgnoreCase("quit") != 0) my_chat.send(message); }
* catch (SkypeException e) { e.printStackTrace(); } }
*/
System.out.println("Before".toUpperCase());
amis = skc.displayFriends();
System.out.println("\nThen".toUpperCase());
System.out
.println("Withdrawing jean.christophe.dufau from the friends' list :");
skc.deleteFriend("jean.christophe.dufau");
amis = skc.displayFriends();
skc
.readString("\nLook at Skype's friends' list and then hit Entrée to continue"
.toUpperCase());
System.out.println("\nAfter".toUpperCase());
System.out
.println("Adding jean.christophe.dufau to the friends' list again :");
skc.addNewFriend("jean.christophe.dufau");
amis = skc.displayFriends();
skc.readString("Hit Entrée to finish".toUpperCase());
System.exit(0);
}
// FUNCTIONS
private void addNewFriend(String the_id) throws SkypeException {
amis.put(the_id, new Friend(the_id));
contact_list.addFriend(the_id, "RAJOUT AUX AMIS");
}
codeur67
Messages postés9Date d'inscriptiondimanche 26 octobre 2008StatutMembreDernière intervention25 mai 2011 10 mars 2009 à 14:06
Si, il y a cml dans la fonction init(). Il gère les entrées et sorties de messages et fonctionne bien. Il était facile à coder car skype.jar contient une méthode ChatMessageListener. Par contre, skype.jar ne contient pas de Listener lié aux variations de la ContactList (objet : contact_list) et je devrais donc créer sur mesure ce Listener-là, qui réagira à la modification de l'objet contact_list.
Seulement, je ne sais pas comment faire. Créer un Listener sur mesure est difficile.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 10 mars 2009 à 14:26
Salut,
Ce n'est pas si difficile que cà de créer un listener :
Voici le "listener" en question : une simple interface
public interface ListenerTest {
/**
* Méthode qui sera déclenchée par le listener
*/
public void changed() {
}
}
Code à rajouter dans ta classe qui doit permettre de déclencher des listeners :
private List<ListenerTest> listeListeners = new LinkedList<ListenerTest>();
public void addListenerTest(ListenerTest listener) {
listeListeners.add(listener);
}
public void removeListenerTest(ListenerTest listener) {
listeListeners.remove(listener);
}
Et enfin, lorsque tu veux déclencher l'événement dans ton code :
for(ListenerTest listener : listeListeners) {
listener.changed();
}
Voilà, c'est pas plus compliqué que cà
______________________________________
DarK Sidious
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 10 mars 2009 à 16:16
Salut,
Je ne t'ai montrer que ce que tu m'as demandé : comment mettre en place un listener sur mesure. Par contre, c'est à toi maintenant de trouver l'algorithme pour savoir quand le déclencher...
______________________________________
DarK Sidious
codeur67
Messages postés9Date d'inscriptiondimanche 26 octobre 2008StatutMembreDernière intervention25 mai 2011 10 mars 2009 à 16:32
Merci, Leader des Forces Obscures, mais cela éclaire le pauvre débutant que je suis autant que le casque de Darth Vador ... hélas. Je croyais que justement, une fois qu'un Listener était rajouté à la connection (ex : Skype.addChatMessageListe
ner(cml); pour les messages entrants et sortants), il avait pour intérêt de se déclencher automatiquement. Ici, le problème est qu'il n'existe pas de commande nommée, par exemple, addContactListener.