There are a bug when trying to delete a contact who is alone in several
groups in gtalk.
--- a/src/com/beem/project/beem/service/RosterAdapter.java Tue Dec 22 17:54:23 2009 +0100
+++ b/src/com/beem/project/beem/service/RosterAdapter.java Wed Dec 23 02:04:42 2009 +0100
@@ -302,26 +302,6 @@
}
/**
- * Event which is fired when an entry is deleted for a group.
- * @param group the group the entry was.
- * @param jid the jid of the entry which is deleted.
- */
- public void onEntryDeleteFromGroup(final String group, final String jid) {
- // Log.i(TAG, "entry delete listener");
- final int n = mRemoteRosListeners.beginBroadcast();
- for (int i = 0; i < n; i++) {
- IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
- try {
- listener.onEntryDeleteFromGroup(group, jid);
- } catch (RemoteException e) {
- Log.w(TAG, "entry delete listener", e);
- }
- }
- mRemoteRosListeners.finishBroadcast();
-
- }
-
- /**
* {@inheritDoc}
*/
@Override
@@ -348,7 +328,7 @@
*/
@Override
public void entriesDeleted(Collection<String> addresses) {
- // Log.i(TAG, "Suppression de l'entry");
+ Log.i(TAG, "Suppression de l'entry");
final int n = mRemoteRosListeners.beginBroadcast();
List<String> tab = new ArrayList<String>();
@@ -369,8 +349,8 @@
*/
@Override
public void entriesUpdated(Collection<String> addresses) {
- // Log.i(TAG, "Update de l'entry " + addresses.size() + " " +
- // addresses.toArray()[0]);
+ Log.i(TAG, "Update de l'entry " + addresses.size() + " " +
+ addresses.toArray()[0]);
final int n = mRemoteRosListeners.beginBroadcast();
List<String> tab = new ArrayList<String>();
--- a/src/com/beem/project/beem/service/aidl/IBeemRosterListener.aidl Tue Dec 22 17:54:23 2009 +0100
+++ b/src/com/beem/project/beem/service/aidl/IBeemRosterListener.aidl Wed Dec 23 02:04:42 2009 +0100
@@ -50,5 +50,4 @@
void onEntriesUpdated(in List<String> addresses);
void onEntriesDeleted(in List<String> addresses);
void onPresenceChanged(in PresenceAdapter presence);
- void onEntryDeleteFromGroup(in String group, in String jid);
}
--- a/src/com/beem/project/beem/ui/Chat.java Tue Dec 22 17:54:23 2009 +0100
+++ b/src/com/beem/project/beem/ui/Chat.java Wed Dec 23 02:04:42 2009 +0100
@@ -461,13 +461,6 @@
* {@inheritDoc}.
*/
@Override
- public void onEntryDeleteFromGroup(String group, String jid) throws RemoteException {
- }
-
- /**
- * {@inheritDoc}.
- */
- @Override
public void onPresenceChanged(final PresenceAdapter presence) throws RemoteException {
if (mContact.getJID().equals(StringUtils.parseBareAddress(presence.getFrom()))) {
mHandler.post(new Runnable() {
--- a/src/com/beem/project/beem/ui/ContactList.java Tue Dec 22 17:54:23 2009 +0100
+++ b/src/com/beem/project/beem/ui/ContactList.java Wed Dec 23 02:04:42 2009 +0100
@@ -519,6 +519,7 @@
for (String group : mListGroup) {
mContactOnGroup.get(group).remove(c);
if (mContactOnGroup.get(group).size() == 0) {
+ mContactOnGroup.remove(group);
mListGroup.remove(group);
mListContact = mContactOnGroup.get(getString(R.string.contact_list_all_contact));
}
@@ -546,29 +547,6 @@
mHandler.post(new RunnableChange());
}
- @Override
- public void onEntryDeleteFromGroup(String group, String jid) throws RemoteException {
- List<Contact> tmpContactList = mContactOnGroup.get(group);
- Contact curContact = null;
- for (Contact c : tmpContactList) {
- if (jid.equals(c.getJID())) {
- curContact = c;
- tmpContactList.remove(c);
- c.getGroups().remove(group);
- if (mContactOnGroup.get(group).size() == 0) {
- mContactOnGroup.remove(group);
- mListGroup.remove(group);
- mListContact = mContactOnGroup.get(getString(R.string.contact_list_all_contact));
- }
- break;
- }
- }
- if (curContact != null && curContact.getGroups().size() == 0) {
- mContactOnGroup.get(getString(R.string.contact_list_no_group)).add(curContact);
- }
- mHandler.post(new RunnableChange());
- }
-
/**
* {@inheritDoc}
*/