--- 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<String> 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<String> addresses) throws RemoteException {
- Log.i("CONTACTLIST", "EntreiesDeleted");
+ Log.e("CONTACTLIST", "DEBUG - ONENTRIESDELETED()");
for (List<Contact> 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<String> 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<Contact>());
+ 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;
}
}