Mise en place evenement long click et click.
authormarseille
Wed, 16 Sep 2009 22:45:41 +0200
changeset 362 411222f0f758
parent 361 8ec622caf8d8
child 363 c7ee14b65f39
Mise en place evenement long click et click. Raffraichissement de la contact list lors d'un changement de status des contacts.
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<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;
 	}