Mise en place evenement long click et click.
Raffraichissement de la contact list lors d'un changement de status des contacts.
--- 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<String> addresses) throws RemoteException {
/*
- * TODO:
+ * TODO: C'est OK.
*/
mHandler.post(new RunnableChange());
}
@Override
public void onEntriesDeleted(List<String> 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;
}