# HG changeset patch # User Vincent Veronis # Date 1254566372 -7200 # Node ID de9f5da0a29470bda029a2bbe43da9451099248a # Parent 1b04c885f87dc18bd179910dc7be8d32590e5c23 Gestion de l'ajout et suppression d'un contact d'un client exterieur. Petit bug a corriger. diff -r 1b04c885f87d -r de9f5da0a294 src/com/beem/project/beem/ui/ContactList.java --- a/src/com/beem/project/beem/ui/ContactList.java Sat Oct 03 13:32:21 2009 +0200 +++ b/src/com/beem/project/beem/ui/ContactList.java Sat Oct 03 12:39:32 2009 +0200 @@ -352,8 +352,22 @@ @Override public void onEntriesAdded(List addresses) throws RemoteException { for (String newName : addresses) { - Contact c = new Contact(newName); - mListContact.add(c); + Contact c = mRoster.getContact(newName); + mContactOnGroup.get(getString(R.string.contact_list_all_contact)).add(c); + if (c.getGroups().size() == 0) + mContactOnGroup.get(getString(R.string.contact_list_no_group)).add(c); + else { + for (String group : c.getGroups()) { + if (!mListGroup.contains(group)) { + mListGroup.add(mListGroup.size() - 1, group); + List tmplist = new ArrayList(); + mContactOnGroup.put(group, tmplist); + } + mContactOnGroup.get(group).add(c); + if (group.equals(mCurGroup)) + mListContact.add(c); + } + } } mHandler.post(new RunnableChange()); } @@ -367,6 +381,13 @@ for (Contact c : mListContact) { if (c.getJID().equals(cToDelete)) { mListContact.remove(c); + for (String group : mListGroup) { + mContactOnGroup.get(group).remove(c); + if (mContactOnGroup.get(group).size() == 0) { + mListGroup.remove(group); + mListContact = mContactOnGroup.get(getString(R.string.contact_list_all_contact)); + } + } break; } } @@ -529,7 +550,7 @@ break; default: imageDrawable = getResources().getDrawable(R.drawable.error); - break; + break; } imgV.setImageDrawable(imageDrawable); @@ -553,12 +574,12 @@ * getResources().getDrawable(R.drawable.avatar); imgV.setImageDrawable(imageDrawable); } */ - if (false){ + if (false) { imgV = (ImageView) view.findViewById(R.id.contactlistavatar); byte[] rawImg; try { - //TODO: le faire en asynchrone, car la ca bloque tout. + // TODO: le faire en asynchrone, car la ca bloque tout. rawImg = mXmppFacade.getVcardAvater(curContact.getJID()); if (rawImg != null) imgV.setImageBitmap(BitmapFactory.decodeByteArray(rawImg, 0, rawImg.length));