# HG changeset patch # User marseille # Date 1253133941 -7200 # Node ID 411222f0f758778ed0243896beddc327b8cb6a01 # Parent 8ec622caf8d8f85d9d46bea5c20b7d0d7f955340 Mise en place evenement long click et click. Raffraichissement de la contact list lors d'un changement de status des contacts. diff -r 8ec622caf8d8 -r 411222f0f758 src/com/beem/project/beem/ui/ContactList.java --- a/src/com/beem/project/beem/ui/ContactList.java Wed Sep 16 21:45:38 2009 +0200 +++ b/src/com/beem/project/beem/ui/ContactList.java Wed Sep 16 22:45:41 2009 +0200 @@ -23,10 +23,13 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.AdapterView.OnItemLongClickListener; import com.beem.project.beem.BeemService; import com.beem.project.beem.R; @@ -142,23 +145,54 @@ mAdapter = new BeemContactList(this); ListView listView = (ListView) findViewById(R.id.contactlist); + listView.setOnItemClickListener(new BeemContactListOnClick()); + listView.setOnItemLongClickListener(new BeemContactListOnLongClick()); listView.setAdapter(mAdapter); } + public class BeemContactListOnClick implements OnItemClickListener { + @Override + public void onItemClick(AdapterView arg0, View v, int pos, long lpos) { + Contact c = mListContact.get(pos); + Intent i = new Intent(ContactList.this, SendIM.class); + i.setData(c.toUri()); + startActivity(i); + } + } + + public class BeemContactListOnLongClick implements OnItemLongClickListener { + + @Override + public boolean onItemLongClick(AdapterView arg0, View v, int pos, long lpos) { + Contact c = mListContact.get(pos); + ContactDialog dialogContact = new ContactDialog(ContactList.this, c, "MYSTATICGROUP"); + dialogContact.setOwnerActivity(ContactList.this); + dialogContact.show(); + return true; + } + } + private class BeemRosterListener extends IBeemRosterListener.Stub { + private class RunnableChange implements Runnable { + @Override + public void run() { + mAdapter.notifyDataSetChanged(); + } + } @Override public void onEntriesAdded(List addresses) throws RemoteException { /* - * TODO: + * TODO: C'est OK. */ mHandler.post(new RunnableChange()); } @Override public void onEntriesDeleted(List addresses) throws RemoteException { + mListContact.removeAll(addresses); /* - * TODO: + * TODO: Raffrichir la liste. */ mHandler.post(new RunnableChange()); } @@ -173,17 +207,12 @@ @Override public void onPresenceChanged(PresenceAdapter presence) throws RemoteException { - /* - * TODO: - */ - } - - private class RunnableChange implements Runnable { - @Override - public void run() { - /* - * TODO: - */ + for (Contact curContact : mListContact) { + if (curContact.getJID().equals(StringUtils.parseBareAddress(presence.getFrom()))) { + curContact.setStatus(mRoster.getPresence(StringUtils.parseBareAddress(presence.getFrom()))); + mHandler.post(new RunnableChange()); + return; + } } } @@ -226,6 +255,7 @@ Contact c = mListContact.get(position); bindView(convertView, c); + return convertView; }