# HG changeset patch # User Da Risk # Date 1245696024 -7200 # Node ID 3ee7b8fdbddd9ff7ecdfcbebe396e084edf0f51b # Parent 454a83b47bcd0cdf1038dfdfdcbf2fd25338620c L'ajout de contact ne necessite plus de remplir tous les champs diff -r 454a83b47bcd -r 3ee7b8fdbddd src/com/beem/project/beem/service/RosterAdapter.java --- a/src/com/beem/project/beem/service/RosterAdapter.java Mon Jun 22 19:13:57 2009 +0200 +++ b/src/com/beem/project/beem/service/RosterAdapter.java Mon Jun 22 20:40:24 2009 +0200 @@ -30,126 +30,16 @@ * * @author darisk */ -public class RosterAdapter extends com.beem.project.beem.service.aidl.IRoster.Stub { - - /** - * Listener for the roster events. It will call the remote listeners registered. - * - * @author darisk - */ - private class RosterListenerAdapter implements RosterListener { - - /** - * Constructor. - */ - public RosterListenerAdapter() { - // TODO Auto-generated constructor stub - } - - /** - * {@inheritDoc} - */ - @Override - public void entriesAdded(Collection addresses) { - Log.i(TAG, "Ajout de l'entry"); - final int n = mRemoteRosListeners.beginBroadcast(); - - List tab = new ArrayList(); - tab.addAll(addresses); - for (int i = 0; i < n; i++) { - IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i); - try { - listener.onEntriesAdded(tab); - } catch (RemoteException e) { - Log.w(TAG, "Error while adding roster entries", e); - } - } - mRemoteRosListeners.finishBroadcast(); - } - - /** - * {@inheritDoc} - */ - @Override - public void entriesDeleted(Collection addresses) { - Log.i(TAG, "Suppression de l'entry"); - final int n = mRemoteRosListeners.beginBroadcast(); - - List tab = new ArrayList(); - tab.addAll(addresses); - for (int i = 0; i < n; i++) { - IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i); - try { - listener.onEntriesDeleted(tab); - } catch (RemoteException e) { - Log.w(TAG, "Error while deleting roster entries", e); - } - } - mRemoteRosListeners.finishBroadcast(); - } +public class RosterAdapter extends + com.beem.project.beem.service.aidl.IRoster.Stub { - /** - * {@inheritDoc} - */ - @Override - public void entriesUpdated(Collection addresses) { - Log.d(TAG, "Update de l'entry"); - final int n = mRemoteRosListeners.beginBroadcast(); - - List tab = new ArrayList(); - tab.addAll(addresses); - for (int i = 0; i < n; i++) { - IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i); - try { - listener.onEntriesUpdated(tab); - } catch (RemoteException e) { - Log.w(TAG, "Error while updating roster entries", e); - } - } - mRemoteRosListeners.finishBroadcast(); - } - - /** - * {@inheritDoc} - */ - @Override - public void presenceChanged(Presence presence) { - Log.i(TAG, "Changement de Presence"); - String user = StringUtils.parseBareAddress(presence.getFrom()); - Log.d(TAG, "User : " + user); - Contact c = mContacts.get(StringUtils.parseBareAddress(user)); - if (c == null) { - c = new Contact(user); - mContacts.put(user, c); - } - c.addRes(StringUtils.parseResource(presence.getFrom())); - c.setStatus(mAdaptee.getPresence(presence.getFrom())); - c.setMsgState(presence.getStatus()); - c.setName(mAdaptee.getEntry(user).getName()); - /* redispatch vers les IBeemRosterListener */ - final int n = mRemoteRosListeners.beginBroadcast(); - - 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(); - } - } - - private static final String TAG = "RosterAdapter"; - private Roster mAdaptee; + private static final String TAG = "RosterAdapter"; + private Roster mAdaptee; private RemoteCallbackList mRemoteRosListeners = new RemoteCallbackList(); - private Map mContacts = new HashMap(); + private Map mContacts = new HashMap(); - private RosterListenerAdapter mRosterListener = new RosterListenerAdapter(); + private RosterListenerAdapter mRosterListener = new RosterListenerAdapter(); /** * Constructor. @@ -176,7 +66,8 @@ * {@inheritDoc} */ @Override - public void addRosterListener(IBeemRosterListener listen) throws RemoteException { + public void addRosterListener(IBeemRosterListener listen) + throws RemoteException { if (listen != null) mRemoteRosListeners.register(listen); } @@ -185,46 +76,52 @@ * {@inheritDoc} */ @Override - public Contact addContact(String user, String name, String[] groups) throws RemoteException { + public Contact addContact(String user, String name, String[] groups) + throws RemoteException { Contact res = null; RosterEntry contact = mAdaptee.getEntry(user); - if (contact != null) { + if (contact != null) { res = mContacts.get(user); - for (String groupStr : groups) { - boolean found = false; - for (RosterGroup group: mAdaptee.getGroups()) { - if (group.getName().equals(groupStr) && !group.contains(contact)) { + if (groups != null) { + for (String groupStr : groups) { + boolean found = false; + for (RosterGroup group : mAdaptee.getGroups()) { + if (group.getName().equals(groupStr) + && !group.contains(contact)) { + try { + group.addEntry(contact); + res.addGroup(groupStr); + found = true; + } catch (XMPPException e) { + e.printStackTrace(); + } + } + } + if (!found) { try { - group.addEntry(contact); - res.addGroup(groupStr); - found = true; + mAdaptee.createGroup(groupStr).addEntry(contact); } catch (XMPPException e) { e.printStackTrace(); + } catch (IllegalArgumentException e) { } + res.addGroup(groupStr); } } - if (!found) { - try { - mAdaptee.createGroup(groupStr).addEntry(contact); - } catch (XMPPException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - } - res.addGroup(groupStr); - } } } else { try { mAdaptee.createEntry(user, name, groups); res = new Contact(user); mContacts.put(user, res); - for (String groupStr : groups) { - try { - mAdaptee.createGroup(groupStr); - } catch (IllegalArgumentException e) { - //e.printStackTrace(); + if (groups != null) { + for (String groupStr : groups) { + try { + mAdaptee.createGroup(groupStr); + } catch (IllegalArgumentException e) { + // e.printStackTrace(); + } + res.addGroup(groupStr); } - res.addGroup(groupStr); } } catch (XMPPException e) { Log.e(TAG, "Error while adding new contact", e); @@ -285,7 +182,8 @@ * {@inheritDoc} */ @Override - public void removeRosterListener(IBeemRosterListener listen) throws RemoteException { + public void removeRosterListener(IBeemRosterListener listen) + throws RemoteException { if (listen != null) mRemoteRosListeners.unregister(listen); } @@ -304,4 +202,120 @@ return new PresenceAdapter(mAdaptee.getPresence(jid)); } + /** + * Listener for the roster events. It will call the remote listeners + * registered. + * + * @author darisk + */ + private class RosterListenerAdapter implements RosterListener { + + /** + * Constructor. + */ + public RosterListenerAdapter() { + // TODO Auto-generated constructor stub + } + + /** + * {@inheritDoc} + */ + @Override + public void entriesAdded(Collection addresses) { + Log.i(TAG, "Ajout de l'entry"); + final int n = mRemoteRosListeners.beginBroadcast(); + + List tab = new ArrayList(); + tab.addAll(addresses); + for (int i = 0; i < n; i++) { + IBeemRosterListener listener = mRemoteRosListeners + .getBroadcastItem(i); + try { + listener.onEntriesAdded(tab); + } catch (RemoteException e) { + Log.w(TAG, "Error while adding roster entries", e); + } + } + mRemoteRosListeners.finishBroadcast(); + } + + /** + * {@inheritDoc} + */ + @Override + public void entriesDeleted(Collection addresses) { + Log.i(TAG, "Suppression de l'entry"); + final int n = mRemoteRosListeners.beginBroadcast(); + + List tab = new ArrayList(); + tab.addAll(addresses); + for (int i = 0; i < n; i++) { + IBeemRosterListener listener = mRemoteRosListeners + .getBroadcastItem(i); + try { + listener.onEntriesDeleted(tab); + } catch (RemoteException e) { + Log.w(TAG, "Error while deleting roster entries", e); + } + } + mRemoteRosListeners.finishBroadcast(); + } + + /** + * {@inheritDoc} + */ + @Override + public void entriesUpdated(Collection addresses) { + Log.d(TAG, "Update de l'entry"); + final int n = mRemoteRosListeners.beginBroadcast(); + + List tab = new ArrayList(); + tab.addAll(addresses); + for (int i = 0; i < n; i++) { + IBeemRosterListener listener = mRemoteRosListeners + .getBroadcastItem(i); + try { + listener.onEntriesUpdated(tab); + } catch (RemoteException e) { + Log.w(TAG, "Error while updating roster entries", e); + } + } + mRemoteRosListeners.finishBroadcast(); + } + + /** + * {@inheritDoc} + */ + @Override + public void presenceChanged(Presence presence) { + Log.i(TAG, "Changement de Presence"); + String user = StringUtils.parseBareAddress(presence.getFrom()); + Log.d(TAG, "User : " + user); + Contact c = mContacts.get(StringUtils.parseBareAddress(user)); + if (c == null) { + c = new Contact(user); + mContacts.put(user, c); + } + c.addRes(StringUtils.parseResource(presence.getFrom())); + c.setStatus(mAdaptee.getPresence(presence.getFrom())); + c.setMsgState(presence.getStatus()); + c.setName(mAdaptee.getEntry(user).getName()); + /* redispatch vers les IBeemRosterListener */ + final int n = mRemoteRosListeners.beginBroadcast(); + + 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(); + } + } + } diff -r 454a83b47bcd -r 3ee7b8fdbddd src/com/beem/project/beem/ui/AddContact.java --- a/src/com/beem/project/beem/ui/AddContact.java Mon Jun 22 19:13:57 2009 +0200 +++ b/src/com/beem/project/beem/ui/AddContact.java Mon Jun 22 20:40:24 2009 +0200 @@ -28,81 +28,79 @@ */ public class AddContact extends Activity { - protected static final String TAG = "AddContact"; - private String mLogin; - private String mAlias; - private final List mGroup = new ArrayList(); - private IXmppFacade xmppFacade; - private final ServiceConnection mServConn = new BeemServiceConnection(); - - private final OnClickListener mOkListener = new OnClickListener() { + protected static final String TAG = "AddContact"; + private String mLogin; + private String mAlias; + private final List mGroup = new ArrayList(); + private IXmppFacade xmppFacade; + private final ServiceConnection mServConn = new BeemServiceConnection(); @Override - public void onClick(View v) { - boolean valid = true; - if (getWidgetText(R.id.addc_login).length() == 0) { - valid = false; - } else { - mLogin = getWidgetText(R.id.addc_login); - } - if (getWidgetText(R.id.addc_alias).length() == 0) { - valid = false; - } else { - mAlias = getWidgetText(R.id.addc_alias); - } - if (getWidgetText(R.id.addc_group).length() == 0) { - valid = false; - } else { - mGroup.add(getWidgetText(R.id.addc_group)); - } - if (valid) { - try { - xmppFacade.getRoster().addContact(mLogin, mAlias, mGroup.toArray(new String[mGroup.size()])); - Toast.makeText(AddContact.this, getString(R.string.AddCContactAdded), Toast.LENGTH_SHORT).show(); - finish(); - } catch (RemoteException e) { - Toast.makeText(AddContact.this, e.getMessage(), Toast.LENGTH_SHORT).show(); - e.printStackTrace(); - } - setResult(RESULT_OK); - } else { - Toast.makeText(AddContact.this, getString(R.string.AddCBadForm), Toast.LENGTH_SHORT).show(); - setResult(RESULT_CANCELED); - } - - } - }; - - private String getWidgetText(int id) { - EditText widget = (EditText) this.findViewById(id); - return widget.getText().toString(); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.addcontact); - Button ok = (Button) findViewById(R.id.addc_ok); - ok.setOnClickListener(mOkListener); - bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - unbindService(mServConn); - } - - private class BeemServiceConnection implements ServiceConnection { - - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - xmppFacade = IXmppFacade.Stub.asInterface(service); + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.addcontact); + Button ok = (Button) findViewById(R.id.addc_ok); + ok.setOnClickListener(mOkListener); + bindService(new Intent(this, BeemService.class), mServConn, + BIND_AUTO_CREATE); } @Override - public void onServiceDisconnected(ComponentName name) { - xmppFacade = null; + protected void onDestroy() { + super.onDestroy(); + unbindService(mServConn); + } + + private class BeemServiceConnection implements ServiceConnection { + + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + xmppFacade = IXmppFacade.Stub.asInterface(service); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + xmppFacade = null; + } + } + + private String getWidgetText(int id) { + EditText widget = (EditText) this.findViewById(id); + return widget.getText().toString(); } - } + + private final OnClickListener mOkListener = new OnClickListener() { + + @Override + public void onClick(View v) { + boolean valid = true; + mLogin = getWidgetText(R.id.addc_login); + mAlias = getWidgetText(R.id.addc_alias); + if (mLogin.length() == 0) + valid = false; + if (getWidgetText(R.id.addc_group).length() != 0) + mGroup.add(getWidgetText(R.id.addc_group)); + if (valid) { + try { + xmppFacade.getRoster().addContact(mLogin, mAlias, + mGroup.toArray(new String[mGroup.size()])); + Toast.makeText(AddContact.this, + getString(R.string.AddCContactAdded), + Toast.LENGTH_SHORT).show(); + finish(); + } catch (RemoteException e) { + Toast.makeText(AddContact.this, e.getMessage(), + Toast.LENGTH_SHORT).show(); + e.printStackTrace(); + } + setResult(RESULT_OK); + } else { + Toast.makeText(AddContact.this, + getString(R.string.AddCBadForm), Toast.LENGTH_SHORT) + .show(); + setResult(RESULT_CANCELED); + } + + } + }; }