diff -r 8979375c19f0 -r d951927691e1 src/com/beem/project/beem/ui/ContactList.java --- a/src/com/beem/project/beem/ui/ContactList.java Tue Jun 23 22:01:30 2009 +0200 +++ b/src/com/beem/project/beem/ui/ContactList.java Wed Jun 24 12:34:41 2009 +0200 @@ -175,6 +175,7 @@ @Override public void onEntriesAdded(List addresses) throws RemoteException { + Log.e("CONTACTLIST", "DEBUG - ONENTRIESADDED()"); for (String str : addresses) { Contact curContact = mRoster.getContact(str); for (String group : curContact.getGroups()) { @@ -194,7 +195,7 @@ @Override public void onEntriesDeleted(List addresses) throws RemoteException { - Log.i("CONTACTLIST", "EntreiesDeleted"); + Log.e("CONTACTLIST", "DEBUG - ONENTRIESDELETED()"); for (List cList : groupMap.values()) { for (Contact curContact : cList) { for (String addr : addresses) { @@ -202,6 +203,10 @@ cList.remove(curContact); if (cList.isEmpty()) { groupMap.values().remove(cList); + if (groupMap.size() == 0) { + groupMap.clear(); + groupName.clear(); + } } } } @@ -216,7 +221,7 @@ */ @Override public void onEntriesUpdated(List addresses) throws RemoteException { - Log.e("CONTACTLIST", "ENTRIESUPDATED"); + Log.e("CONTACTLIST", "DEBUG - ONENTRIESUPDATED()"); for (String str : addresses) { Contact curContact = mRoster.getContact(str); for (String group : curContact.getGroups()) { @@ -242,6 +247,7 @@ @Override public void onPresenceChanged(PresenceAdapter presence) throws RemoteException { + Log.e("CONTACTLIST", "DEBUG - ONPRESENCECHANGED()"); for (Contact curContact : mListContact) { if (curContact.getJID().equals(StringUtils.parseBareAddress(presence.getFrom()))) { curContact.setStatus(mRoster.getPresence(StringUtils.parseBareAddress(presence.getFrom()))); @@ -260,13 +266,24 @@ @Override public void onEntryDeleteFromGroup(String group, String jid) throws RemoteException { + Log.e("CONTACTLIST", "DEBUG - ONENTRYDELETEFROMGROUP()"); for (Contact contact : mListContact) { - if (jid.equals(contact.getJID())) { + if (jid.equals(contact.getJID()) + && (contact.getGroups().contains(group) || contact.getGroups().size() == 0)) { groupMap.get(group).remove(contact); + contact.delGroup(group); if (groupMap.get(group).size() == 0) { groupMap.remove(group); groupName.remove(group); } + if (contact.getGroups().size() == 0) { + if (!groupMap.containsKey(DEFAULT_GROUP)) { + groupMap.put(DEFAULT_GROUP, new ArrayList()); + groupName.add(DEFAULT_GROUP); + } + groupMap.get(DEFAULT_GROUP).add(contact); + } + } } mHandler.post(new RunnableChange()); @@ -527,12 +544,12 @@ @Override public void onServiceDisconnected(ComponentName name) { - xmppFacade = null; try { mRoster.removeRosterListener(mBeemRosterListener); } catch (RemoteException e) { e.printStackTrace(); } + xmppFacade = null; mRoster = null; } }