# HG changeset patch # User nikita@nikita-rack # Date 1238777413 -7200 # Node ID 08cfba11099ab5e501018b64ecbc6eb3755b8837 # Parent ae9ca6ed909575a3fabc4b21020a511b79369c99 Ajout du IBeemRosterListener diff -r ae9ca6ed9095 -r 08cfba11099a project.aidl --- a/project.aidl Fri Apr 03 00:43:02 2009 +0200 +++ b/project.aidl Fri Apr 03 18:50:13 2009 +0200 @@ -3,5 +3,6 @@ // action. Do not modify! parcelable com.beem.project.beem.BeemException +parcelable com.beem.project.beem.service.Message parcelable com.beem.project.beem.service.Contact -parcelable com.beem.project.beem.service.Message +parcelable com.beem.project.beem.service.PresenceAdapter diff -r ae9ca6ed9095 -r 08cfba11099a src/com/beem/project/beem/provider/BeemDatabaseHelper.java --- a/src/com/beem/project/beem/provider/BeemDatabaseHelper.java Fri Apr 03 00:43:02 2009 +0200 +++ b/src/com/beem/project/beem/provider/BeemDatabaseHelper.java Fri Apr 03 18:50:13 2009 +0200 @@ -23,6 +23,7 @@ public void onCreate(SQLiteDatabase db) { db.execSQL(this.creationQuery); } + @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { diff -r ae9ca6ed9095 -r 08cfba11099a src/com/beem/project/beem/service/PresenceAdapter.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/com/beem/project/beem/service/PresenceAdapter.java Fri Apr 03 18:50:13 2009 +0200 @@ -0,0 +1,54 @@ +package com.beem.project.beem.service; + +import org.jivesoftware.smack.packet.Presence; + +import android.os.IBinder; +import android.os.Parcel; +import android.os.Parcelable; + +public class PresenceAdapter implements Parcelable { + + private Presence mPresence; + + /** + * Parcelable.Creator needs by Android. + */ + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + + @Override + public PresenceAdapter createFromParcel(Parcel source) { + return new PresenceAdapter(source); + } + + @Override + public PresenceAdapter[] newArray(int size) { + return new PresenceAdapter[size]; + } + }; + + public PresenceAdapter(Presence presence) { + mPresence = presence; + } + + + public PresenceAdapter(Parcel source) { + // TODO Auto-generated constructor stub + } + + @Override + public int describeContents() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + // TODO Auto-generated method stub + + } + + public IBinder asBinder() { + // TODO Auto-generated method stub + return null; + } +} diff -r ae9ca6ed9095 -r 08cfba11099a src/com/beem/project/beem/service/RosterAdapter.java --- a/src/com/beem/project/beem/service/RosterAdapter.java Fri Apr 03 00:43:02 2009 +0200 +++ b/src/com/beem/project/beem/service/RosterAdapter.java Fri Apr 03 18:50:13 2009 +0200 @@ -16,6 +16,10 @@ 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; import android.os.RemoteException; import android.util.Log; @@ -25,143 +29,238 @@ */ public class RosterAdapter extends com.beem.project.beem.service.aidl.IRoster.Stub { - private Roster mAdaptee; - private Map mContacts = new HashMap(); - private RosterListener mRosterListener = new RosterListener() { + private static final String TAG = "RosterAdapter"; + private Roster mAdaptee; + 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 + + } + }; + + /** + * Constructor. + * @param roster the roster to adapt + */ + public RosterAdapter(final Roster roster) { + mAdaptee = roster; + roster.addRosterListener(mRosterListener); + for (RosterEntry entry : roster.getEntries()) { + String user = entry.getUser(); + if ( !mContacts.containsKey(user)) + mContacts.put(user, new Contact(user)); + } + } + + /** + * {@inheritDoc} + */ @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; + public void createGroup(String groupname) throws RemoteException { + // TODO Auto-generated method stub + mAdaptee.createGroup(groupname); + } + + /** + * {@inheritDoc} + */ + @Override + public Contact addContact(String user, String name, String[] groups) throws RemoteException { + try { + mAdaptee.createEntry(user, name, groups); + Contact res = new Contact(user); + mContacts.put(user, res); + return res; + } catch (XMPPException e) { + return null; } - } - c.setStatus(status); } + /** + * {@inheritDoc} + */ @Override - public void entriesUpdated(Collection arg0) { - // TODO Auto-generated method stub + public void deleteContact(Contact contact) throws RemoteException { + // TODO Auto-generated method stub } + @Override + public void addConnectionListener(IBeemRosterListener listen) throws RemoteException { + if (listen != null) + mRemoteRosListeners.register(listen); + } + /** + * {@inheritDoc} + */ + @Override + public void removeConnectionListener(IBeemRosterListener listen) throws RemoteException { + if (listen != null) + mRemoteRosListeners.unregister(listen); + } + /** + * {@inheritDoc} + */ + @Override + public Contact getContact(String jid) throws RemoteException { + return mContacts.get(jid); + } + + /** + * {@inheritDoc} + */ @Override - public void entriesDeleted(Collection arg0) { - // TODO Auto-generated method stub + public List getContactList() throws RemoteException { + List res = new ArrayList(); + res.addAll(mContacts.values()); + return res; + } + + private class RosterListenerAdapter implements RosterListener { + + @Override + public void entriesAdded(Collection addresses) { + final int n = mRemoteRosListeners.beginBroadcast(); + + List tab = null; + for (int i = 0; i < n; i++) { + IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i); + try { + tab.addAll(addresses); + listener.onEntriesAdded(tab); + } catch (RemoteException e) { + // The RemoteCallbackList will take care of removing the + // dead listeners. + Log.w(TAG, "Error while adding roster entries", e); + } + } + mRemoteRosListeners.finishBroadcast(); + + } + + @Override + public void entriesDeleted(Collection addresses) { + final int n = mRemoteRosListeners.beginBroadcast(); + + List tab = null; + for (int i = 0; i < n; i++) { + IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i); + try { + tab.addAll(addresses); + listener.onEntriesDeleted(tab); + } catch (RemoteException e) { + // The RemoteCallbackList will take care of removing the + // dead listeners. + Log.w(TAG, "Error while deleting roster entries", e); + } + } + mRemoteRosListeners.finishBroadcast(); + } + + @Override + public void entriesUpdated(Collection addresses) { + final int n = mRemoteRosListeners.beginBroadcast(); + + List tab = null; + for (int i = 0; i < n; i++) { + IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i); + try { + tab.addAll(addresses); + listener.onEntriesUpdated(tab); + } catch (RemoteException e) { + // The RemoteCallbackList will take care of removing the + // dead listeners. + Log.w(TAG, "Error while updating roster entries", e); + } + } + mRemoteRosListeners.finishBroadcast(); + } + + @Override + public void presenceChanged(Presence presence) { + final int n = mRemoteRosListeners.beginBroadcast(); + + List tab = null; + for (int i = 0; i < n; i++) { + IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i); + try { + listener.onPresenceChanged(new PresenceAdapter(presence)); + } catch (RemoteException e) { + // The RemoteCallbackList will take care of removing the + // dead listeners. + Log.w(TAG, "Error while updating roster entries", e); + } + } + mRemoteRosListeners.finishBroadcast(); + } } + /** + * {@inheritDoc} + */ @Override - public void entriesAdded(Collection arg0) { - // TODO Auto-generated method stub - - } - }; - - /** - * Constructor. - * @param roster the roster to adapt - */ - public RosterAdapter(final Roster roster) { - mAdaptee = roster; - roster.addRosterListener(mRosterListener); - for (RosterEntry entry : roster.getEntries()) { - String user = entry.getUser(); - if ( !mContacts.containsKey(user)) - mContacts.put(user, new Contact(user)); + public List getGroupsNames() throws RemoteException { + Collection groups = mAdaptee.getGroups(); + ArrayList result = new ArrayList(groups.size()); + for (RosterGroup rosterGroup : groups) { + result.add(rosterGroup.getName()); + } + return result; } - } - - /** - * {@inheritDoc} - */ - @Override - public void createGroup(String groupname) throws RemoteException { - // TODO Auto-generated method stub - mAdaptee.createGroup(groupname); - } - - /** - * {@inheritDoc} - */ - @Override - public Contact addContact(String user, String name, String[] groups) throws RemoteException { - try { - mAdaptee.createEntry(user, name, groups); - Contact res = new Contact(user); - mContacts.put(user, res); - return res; - } catch (XMPPException e) { - return null; - } - } - - /** - * {@inheritDoc} - */ - @Override - public void deleteContact(Contact contact) throws RemoteException { - // TODO Auto-generated method stub - - } - - /** - * {@inheritDoc} - */ - @Override - public Contact getContact(String jid) throws RemoteException { - return mContacts.get(jid); - } - - /** - * {@inheritDoc} - */ - @Override - public List getContactList() throws RemoteException { - List res = new ArrayList(); - res.addAll(mContacts.values()); - return res; - } - - /** - * {@inheritDoc} - */ - @Override - public List getGroupsNames() throws RemoteException { - Collection groups = mAdaptee.getGroups(); - ArrayList result = new ArrayList(groups.size()); - for (RosterGroup rosterGroup : groups) { - result.add(rosterGroup.getName()); - } - return result; - } } diff -r ae9ca6ed9095 -r 08cfba11099a src/com/beem/project/beem/service/XMPPConnectionAdapter.java --- a/src/com/beem/project/beem/service/XMPPConnectionAdapter.java Fri Apr 03 00:43:02 2009 +0200 +++ b/src/com/beem/project/beem/service/XMPPConnectionAdapter.java Fri Apr 03 18:50:13 2009 +0200 @@ -25,308 +25,308 @@ */ public class XMPPConnectionAdapter extends IXmppConnection.Stub { - private static final String TAG = "XMPPConnectionAdapter"; - private XMPPConnection mAdaptee; - private IChatManager mChatManager; - private BeemException mLastException; - private String mLogin; - private String mPassword; - private RosterAdapter mRoster; - - private RemoteCallbackList mRemoteConnListeners = - new RemoteCallbackList(); - private ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter(); - - /** - * Constructor. - * @param con The connection to adapt - * @param login The login to use - * @param password The password to use - */ - public XMPPConnectionAdapter(final XMPPConnection con, final String login, final String password) { - mAdaptee = con; - mLogin = login; - mPassword = password; - } - - /** - * Constructor. - * @param serviceName name of the service to connect to - * @param login login to use on connect - * @param password password to use on connect - */ - public XMPPConnectionAdapter(final String serviceName, final String login, final String password) { - this(new XMPPConnection(serviceName), login, password); - } - - /** - * Constructor. - * @param config Configuration to use in order to connect - * @param login login to use on connect - * @param password password to use on connect - */ - public XMPPConnectionAdapter(final ConnectionConfiguration config, final String login, final String password) { - this(new XMPPConnection(config), login, password); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean connectSync() throws RemoteException { - try { - mAdaptee.connect(); - mAdaptee.addConnectionListener(mConListener); - 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 - mLastException = null; - triggerAsynchronousConnectEvent(); - return true; - } catch (XMPPException e) { - mLastException = new BeemException(e); - } - return false; - } + private static final String TAG = "XMPPConnectionAdapter"; + private XMPPConnection mAdaptee; + private IChatManager mChatManager; + private BeemException mLastException; + private String mLogin; + private String mPassword; + private RosterAdapter mRoster; - /** - * {@inheritDoc} - */ - @Override - public boolean disconnect() { - mAdaptee.disconnect(); - mLastException = null; - return true; - } - - /** - * {@inheritDoc} - */ - @Override - public IRoster getRoster() throws RemoteException { - if (mRoster != null) - return mRoster; - Roster adap = mAdaptee.getRoster(); - if (adap == null) - return null; - mRoster = new RosterAdapter(adap); - return mRoster; - } - - /** - * {@inheritDoc} - */ - @Override - public final void connectAsync() throws RemoteException { - Thread t = new Thread(new Runnable() { - - @Override - public void run() { - try { - connectSync(); - } catch (RemoteException e) { - Log.e(TAG, "Error while connecting", e); - } - } - }); - t.start(); - } - - /** - * {@inheritDoc} - */ - @Override - public void addConnectionListener(IBeemConnectionListener listen) throws RemoteException { - if (listen != null) - mRemoteConnListeners.register(listen); - } - - /** - * {@inheritDoc} - */ - @Override - public void removeConnectionListener(IBeemConnectionListener listen) throws RemoteException { - if (listen != null) - mRemoteConnListeners.unregister(listen); - } - - /** - * {@inheritDoc} - */ - @Override - public IChatManager getChatManager() throws RemoteException { - return mChatManager; - } - - /** - * Trigger Connection event. - */ - private void triggerAsynchronousConnectEvent() { - mConListener.onConnect(); - } - - /** - * Listener for XMPP connection events. - * It will calls the remote listeners for connexion events. - * @author darisk - */ - private class ConnexionListenerAdapter implements ConnectionListener { + private RemoteCallbackList mRemoteConnListeners = + new RemoteCallbackList(); + private ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter(); /** - * Defaut constructor. + * Constructor. + * @param con The connection to adapt + * @param login The login to use + * @param password The password to use */ - public ConnexionListenerAdapter() { - // TODO Auto-generated constructor stub + public XMPPConnectionAdapter(final XMPPConnection con, final String login, final String password) { + mAdaptee = con; + mLogin = login; + mPassword = password; + } + + /** + * Constructor. + * @param serviceName name of the service to connect to + * @param login login to use on connect + * @param password password to use on connect + */ + public XMPPConnectionAdapter(final String serviceName, final String login, final String password) { + this(new XMPPConnection(serviceName), login, password); + } + + /** + * Constructor. + * @param config Configuration to use in order to connect + * @param login login to use on connect + * @param password password to use on connect + */ + public XMPPConnectionAdapter(final ConnectionConfiguration config, final String login, final String password) { + this(new XMPPConnection(config), login, password); } /** - * Method to execute when a connection event occurs. + * {@inheritDoc} */ - public void onConnect() { - final int n = mRemoteConnListeners.beginBroadcast(); - - for (int i = 0; i < n; i++) { - IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); + @Override + public boolean connectSync() throws RemoteException { try { - listener.onConnect(); - } catch (RemoteException e) { - // The RemoteCallbackList will take care of removing the - // dead listeners. - Log.w(TAG, "Error while triggering remote connection listeners", e); + mAdaptee.connect(); + mAdaptee.addConnectionListener(mConListener); + 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 + mLastException = null; + triggerAsynchronousConnectEvent(); + return true; + } catch (XMPPException e) { + mLastException = new BeemException(e); } - } - mRemoteConnListeners.finishBroadcast(); + return false; + } + + /** + * {@inheritDoc} + */ + @Override + public boolean disconnect() { + mAdaptee.disconnect(); + mLastException = null; + return true; + } + + /** + * {@inheritDoc} + */ + @Override + public IRoster getRoster() throws RemoteException { + if (mRoster != null) + return mRoster; + Roster adap = mAdaptee.getRoster(); + if (adap == null) + return null; + mRoster = new RosterAdapter(adap); + return mRoster; + } + + /** + * {@inheritDoc} + */ + @Override + public final void connectAsync() throws RemoteException { + Thread t = new Thread(new Runnable() { + + @Override + public void run() { + try { + connectSync(); + } catch (RemoteException e) { + Log.e(TAG, "Error while connecting", e); + } + } + }); + t.start(); + } + + /** + * {@inheritDoc} + */ + @Override + public void addConnectionListener(IBeemConnectionListener listen) throws RemoteException { + if (listen != null) + mRemoteConnListeners.register(listen); + } + + /** + * {@inheritDoc} + */ + @Override + public void removeConnectionListener(IBeemConnectionListener listen) throws RemoteException { + if (listen != null) + mRemoteConnListeners.unregister(listen); } /** * {@inheritDoc} */ @Override - public void connectionClosed() { - final int n = mRemoteConnListeners.beginBroadcast(); - - for (int i = 0; i < n; i++) { - IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); - try { - listener.connectionClosed(); - } catch (RemoteException e) { - // The RemoteCallbackList will take care of removing the - // dead listeners. - Log.w(TAG, "Error while triggering remote connection listeners", e); - } - } - mRemoteConnListeners.finishBroadcast(); + public IChatManager getChatManager() throws RemoteException { + return mChatManager; } /** - * {@inheritDoc} + * Trigger Connection event. */ - @Override - public void connectionClosedOnError(Exception arg0) { - final int n = mRemoteConnListeners.beginBroadcast(); - - for (int i = 0; i < n; i++) { - IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); - try { - listener.connectionClosedOnError(); - } catch (RemoteException e) { - // The RemoteCallbackList will take care of removing the - // dead listeners. - Log.w(TAG, "Error while triggering remote connection listeners", e); - } - } - mRemoteConnListeners.finishBroadcast(); - } - - /** - * {@inheritDoc} - */ - @Override - public void reconnectingIn(int arg0) { - final int n = mRemoteConnListeners.beginBroadcast(); - - for (int i = 0; i < n; i++) { - IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); - try { - listener.reconnectingIn(arg0); - } catch (RemoteException e) { - // The RemoteCallbackList will take care of removing the - // dead listeners. - } - } - mRemoteConnListeners.finishBroadcast(); + private void triggerAsynchronousConnectEvent() { + mConListener.onConnect(); } /** - * {@inheritDoc} + * Listener for XMPP connection events. + * It will calls the remote listeners for connexion events. + * @author darisk */ - @Override - public void reconnectionFailed(Exception arg0) { - final int r = mRemoteConnListeners.beginBroadcast(); + private class ConnexionListenerAdapter implements ConnectionListener { + + /** + * Defaut constructor. + */ + public ConnexionListenerAdapter() { + // TODO Auto-generated constructor stub + } + + /** + * Method to execute when a connection event occurs. + */ + public void onConnect() { + final int n = mRemoteConnListeners.beginBroadcast(); + + for (int i = 0; i < n; i++) { + IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); + try { + listener.onConnect(); + } catch (RemoteException e) { + // The RemoteCallbackList will take care of removing the + // dead listeners. + Log.w(TAG, "Error while triggering remote connection listeners", e); + } + } + mRemoteConnListeners.finishBroadcast(); + } + + /** + * {@inheritDoc} + */ + @Override + public void connectionClosed() { + final int n = mRemoteConnListeners.beginBroadcast(); + + for (int i = 0; i < n; i++) { + IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); + try { + listener.connectionClosed(); + } catch (RemoteException e) { + // The RemoteCallbackList will take care of removing the + // dead listeners. + Log.w(TAG, "Error while triggering remote connection listeners", e); + } + } + mRemoteConnListeners.finishBroadcast(); + } + + /** + * {@inheritDoc} + */ + @Override + public void connectionClosedOnError(Exception arg0) { + final int n = mRemoteConnListeners.beginBroadcast(); - for (int i = 0; i < r; i++) { - IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); - try { - listener.reconnectionFailed(); - } catch (RemoteException e) { - // The RemoteCallbackList will take care of removing the - // dead listeners. - Log.w(TAG, "Error while triggering remote connection listeners", e); + for (int i = 0; i < n; i++) { + IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); + try { + listener.connectionClosedOnError(); + } catch (RemoteException e) { + // The RemoteCallbackList will take care of removing the + // dead listeners. + Log.w(TAG, "Error while triggering remote connection listeners", e); + } + } + mRemoteConnListeners.finishBroadcast(); + } + + /** + * {@inheritDoc} + */ + @Override + public void reconnectingIn(int arg0) { + final int n = mRemoteConnListeners.beginBroadcast(); + + for (int i = 0; i < n; i++) { + IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); + try { + listener.reconnectingIn(arg0); + } catch (RemoteException e) { + // The RemoteCallbackList will take care of removing the + // dead listeners. + } + } + mRemoteConnListeners.finishBroadcast(); } - } - mRemoteConnListeners.finishBroadcast(); + + /** + * {@inheritDoc} + */ + @Override + public void reconnectionFailed(Exception arg0) { + final int r = mRemoteConnListeners.beginBroadcast(); + + for (int i = 0; i < r; i++) { + IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); + try { + listener.reconnectionFailed(); + } catch (RemoteException e) { + // The RemoteCallbackList will take care of removing the + // dead listeners. + Log.w(TAG, "Error while triggering remote connection listeners", e); + } + } + mRemoteConnListeners.finishBroadcast(); + } + + /** + * {@inheritDoc} + */ + @Override + public void reconnectionSuccessful() { + final int n = mRemoteConnListeners.beginBroadcast(); + + for (int i = 0; i < n; i++) { + IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); + try { + listener.reconnectionSuccessful(); + } catch (RemoteException e) { + // The RemoteCallbackList will take care of removing the + // dead listeners. + Log.w(TAG, "Error while triggering remote connection listeners", e); + } + } + mRemoteConnListeners.finishBroadcast(); + } + } /** - * {@inheritDoc} + * 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 */ - @Override - public void reconnectionSuccessful() { - final int n = mRemoteConnListeners.beginBroadcast(); + 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"); - for (int i = 0; i < n; i++) { - IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i); - try { - listener.reconnectionSuccessful(); - } catch (RemoteException e) { - // The RemoteCallbackList will take care of removing the - // dead listeners. - Log.w(TAG, "Error while triggering remote connection listeners", e); - } - } - 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"); - - } - } diff -r ae9ca6ed9095 -r 08cfba11099a src/com/beem/project/beem/service/aidl/IBeemRosterListener.aidl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/com/beem/project/beem/service/aidl/IBeemRosterListener.aidl Fri Apr 03 18:50:13 2009 +0200 @@ -0,0 +1,10 @@ +package com.beem.project.beem.service.aidl; + +import com.beem.project.beem.service.PresenceAdapter; + +interface IBeemRosterListener { + void onEntriesAdded(in List addresses); + void onEntriesUpdated(in List addresses); + void onEntriesDeleted(in List addresses); + void onPresenceChanged(in PresenceAdapter presence); +} \ No newline at end of file diff -r ae9ca6ed9095 -r 08cfba11099a src/com/beem/project/beem/service/aidl/IContact.aidl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/com/beem/project/beem/service/aidl/IContact.aidl Fri Apr 03 18:50:13 2009 +0200 @@ -0,0 +1,9 @@ +package com.beem.project.beem.service.aidl; + +interface IContact { + + String getJID(); + + void setJID(String mjid); + +} \ No newline at end of file diff -r ae9ca6ed9095 -r 08cfba11099a src/com/beem/project/beem/service/aidl/IRoster.aidl --- a/src/com/beem/project/beem/service/aidl/IRoster.aidl Fri Apr 03 00:43:02 2009 +0200 +++ b/src/com/beem/project/beem/service/aidl/IRoster.aidl Fri Apr 03 18:50:13 2009 +0200 @@ -1,5 +1,6 @@ package com.beem.project.beem.service.aidl; +import com.beem.project.beem.service.aidl.IBeemRosterListener; import com.beem.project.beem.service.Contact; interface IRoster { @@ -15,5 +16,8 @@ List getContactList(); List getGroupsNames(); + + void addConnectionListener(in IBeemRosterListener listen); + void removeConnectionListener(in IBeemRosterListener listen); } \ No newline at end of file