# HG changeset patch # User nikita@nikita-rack # Date 1238826391 -7200 # Node ID edd2c2ffe3ac428428539ea7354e512fd890b0a5 # Parent 08cfba11099ab5e501018b64ecbc6eb3755b8837 petite maj sur le RosterAdapter diff -r 08cfba11099a -r edd2c2ffe3ac src/com/beem/project/beem/jingle/RTPReceiver.java --- a/src/com/beem/project/beem/jingle/RTPReceiver.java Fri Apr 03 18:50:13 2009 +0200 +++ b/src/com/beem/project/beem/jingle/RTPReceiver.java Sat Apr 04 08:26:31 2009 +0200 @@ -56,7 +56,7 @@ @Override public void receiveData(DataFrame frame, Participant participant) { - byte[] data = frame.getConcatenatedData(); + //byte[] data = frame.getConcatenatedData(); } @Override diff -r 08cfba11099a -r edd2c2ffe3ac src/com/beem/project/beem/jingle/Receiver.java --- a/src/com/beem/project/beem/jingle/Receiver.java Fri Apr 03 18:50:13 2009 +0200 +++ b/src/com/beem/project/beem/jingle/Receiver.java Sat Apr 04 08:26:31 2009 +0200 @@ -2,10 +2,8 @@ import java.io.IOException; import java.io.InputStream; -import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import org.jivesoftware.smack.ConnectionConfiguration; import org.jivesoftware.smack.XMPPConnection; @@ -53,8 +51,8 @@ // Le client demande les services dispo en face a son roster // il doit en suite fournir lui meme une liste de feature - DiscoverInfo di = sdm.discoverInfo("test@nikita-rack/pidgin"); - DiscoverInfo di2 = sdm.discoverInfo("nikita@nikita-rack/Telepathy"); + //DiscoverInfo di = sdm.discoverInfo("test@nikita-rack/pidgin"); + //DiscoverInfo di2 = sdm.discoverInfo("nikita@nikita-rack/Telepathy"); } catch (XMPPException e) { // TODO Auto-generated catch block @@ -76,20 +74,16 @@ System.out.println("Jingle Session request from "+request.getFrom()); try { in = request.accept(); - // TODO configure in in.addListener(new JingleSessionListener() { @Override public void sessionRedirected(String redirection, JingleSession jingleSession) { - // TODO Auto-generated method stub - } @Override public void sessionMediaReceived(JingleSession jingleSession, String participant) { - // TODO Auto-generated method stub System.out.println("Session Media received from " + participant); } @@ -97,7 +91,6 @@ public void sessionEstablished(PayloadType pt, TransportCandidate remoteCandidate, TransportCandidate localCandidate, JingleSession jingleSession) { - // TODO Auto-generated method stub System.out.println("Session established"); try{ System.out.println("Je recois sur " + remoteCandidate.getIp() + ":" + remoteCandidate.getPort() ); @@ -123,13 +116,11 @@ @Override public void sessionClosed(String reason, JingleSession jingleSession) { - // TODO Auto-generated method stub System.out.println("Session "+ jingleSession.getResponder() +"closedd because "+ reason); } }); in.startIncoming(); } catch (XMPPException e) { - // TODO Auto-generated catch block e.printStackTrace(); } } @@ -161,7 +152,6 @@ * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { - // TODO Auto-generated method stub Receiver rec = new Receiver("test2", "test2"); System.out.println("Receiver initialized"); diff -r 08cfba11099a -r edd2c2ffe3ac src/com/beem/project/beem/provider/ContactProvider.java --- a/src/com/beem/project/beem/provider/ContactProvider.java Fri Apr 03 18:50:13 2009 +0200 +++ b/src/com/beem/project/beem/provider/ContactProvider.java Sat Apr 04 08:26:31 2009 +0200 @@ -9,7 +9,6 @@ import android.content.ContentUris; import android.content.ContentValues; import android.content.UriMatcher; -import android.content.res.Resources; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; diff -r 08cfba11099a -r edd2c2ffe3ac src/com/beem/project/beem/service/RosterAdapter.java --- a/src/com/beem/project/beem/service/RosterAdapter.java Fri Apr 03 18:50:13 2009 +0200 +++ b/src/com/beem/project/beem/service/RosterAdapter.java Sat Apr 04 08:26:31 2009 +0200 @@ -16,7 +16,6 @@ import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.packet.Presence; -import com.beem.project.beem.service.aidl.IBeemConnectionListener; import com.beem.project.beem.service.aidl.IBeemRosterListener; import android.os.RemoteCallbackList; @@ -34,64 +33,9 @@ private RemoteCallbackList mRemoteRosListeners = new RemoteCallbackList(); private Map mContacts = new HashMap(); - private RosterListener mRosterListener = new RosterListener() { - @Override - public void presenceChanged(Presence presence) { - String user = presence.getFrom(); - Presence bestPresence = mAdaptee.getPresence(user); - Contact c = mContacts.get(user); - if (c == null) { - c = new Contact(user); - mContacts.put(user, c); - } - int status; - if (bestPresence.getType().equals(Presence.Type.unavailable)) - status = Contact.CONTACT_STATUS_DISCONNECT; - else { - switch (bestPresence.getMode()) { - case available: - status = Contact.CONTACT_STATUS_AVAILABLE; - break; - case away: - status = Contact.CONTACT_STATUS_AWAY; - break; - case chat: - status = Contact.CONTACT_STATUS_AVAILABLE_FOR_CHAT; - break; - case dnd: - status = Contact.CONTACT_STATUS_BUSY; - break; - case xa: - status = Contact.CONTACT_STATUS_UNAVAILABLE; - break; - default: - Log.e("RosterAdapter", "Status mode non gere"); - status = Contact.CONTACT_STATUS_DISCONNECT; - break; - } - } - c.setStatus(status); - } - - @Override - public void entriesUpdated(Collection arg0) { - // TODO Auto-generated method stub - - } - - @Override - public void entriesDeleted(Collection arg0) { - // TODO Auto-generated method stub - - } - - @Override - public void entriesAdded(Collection arg0) { - // TODO Auto-generated method stub - - } - }; - + + private RosterListenerAdapter mRosterListener = new RosterListenerAdapter(); + /** * Constructor. * @param roster the roster to adapt @@ -111,7 +55,6 @@ */ @Override public void createGroup(String groupname) throws RemoteException { - // TODO Auto-generated method stub mAdaptee.createGroup(groupname); } @@ -232,9 +175,46 @@ @Override public void presenceChanged(Presence presence) { + + /* gestion du roster coter service */ + String user = presence.getFrom(); + Presence bestPresence = mAdaptee.getPresence(user); + Contact c = mContacts.get(user); + if (c == null) { + c = new Contact(user); + mContacts.put(user, c); + } + int status; + if (bestPresence.getType().equals(Presence.Type.unavailable)) + status = Contact.CONTACT_STATUS_DISCONNECT; + else { + switch (bestPresence.getMode()) { + case available: + status = Contact.CONTACT_STATUS_AVAILABLE; + break; + case away: + status = Contact.CONTACT_STATUS_AWAY; + break; + case chat: + status = Contact.CONTACT_STATUS_AVAILABLE_FOR_CHAT; + break; + case dnd: + status = Contact.CONTACT_STATUS_BUSY; + break; + case xa: + status = Contact.CONTACT_STATUS_UNAVAILABLE; + break; + default: + Log.e("RosterAdapter", "Status mode non gere"); + status = Contact.CONTACT_STATUS_DISCONNECT; + break; + } + } + c.setStatus(status); + + /* redispatch vers les IBeemRosterListener */ final int n = mRemoteRosListeners.beginBroadcast(); - - List tab = null; + for (int i = 0; i < n; i++) { IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i); try { diff -r 08cfba11099a -r edd2c2ffe3ac src/com/beem/project/beem/service/XMPPConnectionAdapter.java --- a/src/com/beem/project/beem/service/XMPPConnectionAdapter.java Fri Apr 03 18:50:13 2009 +0200 +++ b/src/com/beem/project/beem/service/XMPPConnectionAdapter.java Sat Apr 04 08:26:31 2009 +0200 @@ -28,7 +28,6 @@ private static final String TAG = "XMPPConnectionAdapter"; private XMPPConnection mAdaptee; private IChatManager mChatManager; - private BeemException mLastException; private String mLogin; private String mPassword; private RosterAdapter mRoster; @@ -36,6 +35,7 @@ private RemoteCallbackList mRemoteConnListeners = new RemoteCallbackList(); private ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter(); + private Object mLastException; /** * Constructor. @@ -80,7 +80,7 @@ mAdaptee.login(mLogin, mPassword, "BEEM"); mChatManager = new BeemChatManager(mAdaptee.getChatManager()); // TODO find why this cause a null pointer exception - // this.initFeatures(); // pour declarer les features xmpp qu'on supporte + this.initFeatures(); // pour declarer les features xmpp qu'on supporte mLastException = null; triggerAsynchronousConnectEvent(); return true; @@ -165,7 +165,18 @@ private void triggerAsynchronousConnectEvent() { mConListener.onConnect(); } + + /** + * enregistre les features dispo dans notre version Liste de features que Telepathy supporte. + */ + private void initFeatures() { + JingleManager.setJingleServiceEnabled(); + ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(mAdaptee); + sdm.addFeature("http://jabber.org/protocol/disco#info"); + // sdm.addFeature("http://jabber.org/protocol/nick"); + } + /** * Listener for XMPP connection events. * It will calls the remote listeners for connexion events. @@ -297,36 +308,5 @@ } mRemoteConnListeners.finishBroadcast(); } - } - - /** - * enregistre les features dispo dans notre version Liste de features que Telepathy supporte. - * "http://www.google.com/xmpp/protocol/session" "http://www.google.com/transport/p2p" - * "http://jabber.org/protocol/jingle" "http://jabber.org/protocol/chatstates" "http://jabber.org/protocol/nick" - * "http://jabber.org/protocol/nick+notify" "http://jabber.org/protocol/si" "ttp://jabber.org/protocol/ibb" - * "ttp://telepathy.freedesktop.org/xmpp/tubes" "http://www.google.com/xmpp/protocol/voice/v1" - * "http://jabber.org/protocol/jingle/description/audio" "http://jabber.org/protocol/jingle/description/video" Liste - * de features que pidgin `supporte' (on notera la cradence de l'annonce): "jabber:iq:last" "jabber:iq:oob" - * "jabber:iq:time" "jabber:iq:version" "jabber:x:conference" "urn:xmpp:attention:0" "urn:xmpp:bob" "urn:xmpp:ping" - * "xmpp:urn:time" "http://jabber.org/protocol/bytestreams" "http://jabber.org/protocol/disco#info" - * "http://jabber.org/protocol/disco#items" "http://jabber.org/protocol/ibb" "http://jabber.org/protocol/muc" - * "http://jabber.org/protocol/muc#user" "http://jabber.org/protocol/si" - * "http://jabber.org/protocol/si/profile/file-transfer" "http://jabber.org/protocol/xhtml-im" - * "http://www.xmpp.org/extensions/xep-0199.html#ns" "http://jabber.org/protocol/mood" - * "http://jabber.org/protocol/mood+notify" "http://jabber.org/protocol/nick" - * "http://jabber.org/protocol/nick+notify" "http://jabber.org/protocol/tune" - * "http://jabber.org/protocol/tune+notify" "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata" - * "http://www.xmpp.org/extensions/xep-0084.html#ns-data" - * "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata+notify" - * "http://www.xmpp.org/extensions/xep-0167.html#ns" << Jingle RTP Sessions - */ - private void initFeatures() { - JingleManager.setJingleServiceEnabled(); - ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(mAdaptee); - sdm.addFeature("http://jabber.org/protocol/disco#info"); - // sdm.addFeature("http://jabber.org/protocol/nick"); - - } - }