Arrangement de la classe ContactList .
authormarseille@marseille-desktop
Wed, 17 Jun 2009 18:33:14 +0200
changeset 235 d8fa7f751a0f
parent 234 b539dc53b9c7
child 236 23647e075321
Arrangement de la classe ContactList . MANU ON NE TOUCHE PLUS !!! :p
src/com/beem/project/beem/ui/ContactList.java
--- a/src/com/beem/project/beem/ui/ContactList.java	Wed Jun 17 18:14:08 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactList.java	Wed Jun 17 18:33:14 2009 +0200
@@ -38,6 +38,117 @@
 
 public class ContactList extends ExpandableListActivity {
 
+    private static final String TAG = "CONTACTLIST_ACT";
+    private static final String DEFAULT_GROUP = "Default";
+    private IXmppFacade mService = null;
+    private MyExpandableListAdapter mAdapter;
+    private BeemApplication mBeemApplication;
+    private BeemRosterListener mRosterListener;
+    private IRoster mRoster;
+    private Map<String, List<Contact>> groupMap;
+    private List<String> groupName;
+    private List<Contact> mListContact;
+    private Handler mHandler;
+
+    /**
+     * Callback for menu creation.
+     * @param menu the menu created
+     * @return true on success, false otherwise
+     */
+    @Override
+    public final boolean onCreateOptionsMenu(Menu menu) {
+	super.onCreateOptionsMenu(menu);
+	MenuInflater inflater = getMenuInflater();
+	inflater.inflate(R.menu.contact_list, menu);
+	return true;
+    }
+
+    /**
+     * Callback for menu item selected.
+     * @param item the item selected
+     * @return true on success, false otherwise
+     */
+    @Override
+    public final boolean onOptionsItemSelected(MenuItem item) {
+	switch (item.getItemId()) {
+	    case R.id.contact_list_menu_settings:
+		startActivity(new Intent(this, EditSettings.class));
+		return true;
+	    case R.id.contact_list_menu_add_contact:
+		startActivity(new Intent(ContactList.this, AddContact.class));
+		return true;
+	    default:
+		return false;
+	}
+    }
+
+    @Override
+    protected void onCreate(Bundle saveBundle) {
+	super.onCreate(saveBundle);
+	mHandler = new Handler();
+	mRosterListener = new BeemRosterListener();
+	mBeemApplication = BeemApplication.getApplication(this);
+	groupMap = new HashMap<String, List<Contact>>();
+	groupName = new ArrayList<String>();
+	mBeemApplication.callWhenConnectedToServer(mHandler, new Runnable() {
+
+	    @Override
+	    public void run() {
+		mService = mBeemApplication.getXmppFacade();
+		try {
+		    mRoster = mService.getRoster();
+		} catch (RemoteException e1) {
+		    Log.e(TAG, "Get roster failed", e1);
+		}
+		if (mRoster != null) {
+		    try {
+			mRoster.addConnectionListener(mRosterListener);
+		    } catch (RemoteException e) {
+			e.printStackTrace();
+		    }
+		}
+		callbackShowContactList();
+	    }
+	});
+    }
+
+    private void callbackShowContactList() {
+	if (mRoster != null) {
+	    try {
+		buildContactList(mRoster.getContactList());
+	    } catch (RemoteException e) {
+		e.printStackTrace();
+	    }
+	}
+    }
+
+    private void buildContactList(List<Contact> listContact) {
+	mListContact = listContact;
+	for (Contact contact : listContact) {
+	    for (String group : contact.getGroups()) {
+		if (!groupMap.containsKey(group)) {
+		    groupMap.put(group, new ArrayList<Contact>());
+		    groupName.add(group);
+		}
+		try {
+		    if (!groupMap.get(group).contains(contact))
+			groupMap.get(group).add(contact);
+		} catch (NullPointerException e) {
+		    Log.e(TAG, "Failed to find group in groupMap", e);
+		}
+	    }
+	    if (contact.getGroups().isEmpty()) {
+		if (!groupMap.containsKey(DEFAULT_GROUP)) {
+		    groupMap.put(DEFAULT_GROUP, new ArrayList<Contact>());
+		    groupName.add(DEFAULT_GROUP);
+		}
+		groupMap.get(DEFAULT_GROUP).add(contact);
+	    }
+	}
+	mAdapter = new MyExpandableListAdapter();
+	setListAdapter(mAdapter);
+    }
+
     private class BeemRosterListener extends IBeemRosterListener.Stub {
 
 	@Override
@@ -56,13 +167,7 @@
 		    }
 		}
 	    }
-	    mHandler.post(new Runnable() {
-
-		@Override
-		public void run() {
-		    mAdapter.changed();
-		}
-	    });
+	    mHandler.post(new RunnableChange());
 	}
 
 	@Override
@@ -79,13 +184,7 @@
 		    }
 		}
 	    }
-	    mHandler.post(new Runnable() {
-
-		@Override
-		public void run() {
-		    mAdapter.changed();
-		}
-	    });
+	    mHandler.post(new RunnableChange());
 	}
 
 	@Override
@@ -112,13 +211,7 @@
 		    }
 		}
 	    }
-	    mHandler.post(new Runnable() {
-
-		@Override
-		public void run() {
-		    mAdapter.changed();
-		}
-	    });
+	    mHandler.post(new RunnableChange());
 	}
 
 	@Override
@@ -126,18 +219,19 @@
 	    for (Contact curContact : mListContact) {
 		if (curContact.getJID().equals(StringUtils.parseBareAddress(presence.getFrom()))) {
 		    curContact.setStatus(presence);
-		    mHandler.post(new Runnable() {
-
-			@Override
-			public void run() {
-			    mAdapter.changed();
-			}
-		    });
+		    mHandler.post(new RunnableChange());
 		    return;
 		}
 	    }
 	}
 
+	private class RunnableChange implements Runnable {
+	    @Override
+	    public void run() {
+		mAdapter.changed();
+	    }
+	}
+
     }
 
     private class MyExpandableListAdapter implements ExpandableListAdapter {
@@ -191,27 +285,27 @@
 		ImageView imgV = (ImageView) view.findViewById(R.id.contactliststatus);
 		Drawable imageDrawable = null;
 		switch (curContact.getStatus()) {
-		case Status.CONTACT_STATUS_AVAILABLE:
-		    imageDrawable = getResources().getDrawable(R.drawable.online);
-		    break;
-		case Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT:
-		    imageDrawable = getResources().getDrawable(R.drawable.chat);
-		    break;
-		case Status.CONTACT_STATUS_AWAY:
-		    imageDrawable = getResources().getDrawable(R.drawable.away);
-		    break;
-		case Status.CONTACT_STATUS_BUSY:
-		    imageDrawable = getResources().getDrawable(R.drawable.dnd);
-		    break;
-		case Status.CONTACT_STATUS_DISCONNECT:
-		    imageDrawable = getResources().getDrawable(R.drawable.offline);
-		    break;
-		case Status.CONTACT_STATUS_UNAVAILABLE:
-		    imageDrawable = getResources().getDrawable(R.drawable.requested);
-		    break;
-		default:
-		    imageDrawable = getResources().getDrawable(R.drawable.error);
-		    break;
+		    case Status.CONTACT_STATUS_AVAILABLE:
+			imageDrawable = getResources().getDrawable(R.drawable.online);
+			break;
+		    case Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT:
+			imageDrawable = getResources().getDrawable(R.drawable.chat);
+			break;
+		    case Status.CONTACT_STATUS_AWAY:
+			imageDrawable = getResources().getDrawable(R.drawable.away);
+			break;
+		    case Status.CONTACT_STATUS_BUSY:
+			imageDrawable = getResources().getDrawable(R.drawable.dnd);
+			break;
+		    case Status.CONTACT_STATUS_DISCONNECT:
+			imageDrawable = getResources().getDrawable(R.drawable.offline);
+			break;
+		    case Status.CONTACT_STATUS_UNAVAILABLE:
+			imageDrawable = getResources().getDrawable(R.drawable.requested);
+			break;
+		    default:
+			imageDrawable = getResources().getDrawable(R.drawable.error);
+			break;
 		}
 		imgV.setImageDrawable(imageDrawable);
 
@@ -280,7 +374,7 @@
 
 	@Override
 	public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
-	        ViewGroup parent) {
+	    ViewGroup parent) {
 	    View v;
 	    if (convertView == null) {
 		v = LayoutInflater.from(ContactList.this).inflate(R.layout.contactlistcontact, null);
@@ -368,122 +462,4 @@
 	    observers.remove(observer);
 	}
     }
-
-    private static final String        TAG           = "CONTACTLIST_ACT";
-    private static final String        DEFAULT_GROUP = "Default";
-    private IXmppFacade                mService      = null;
-    private MyExpandableListAdapter    mAdapter;
-    private BeemApplication            mBeemApplication;
-    private BeemRosterListener         mRosterListener;
-    private IRoster                    mRoster;
-    private Map<String, List<Contact>> groupMap;
-    private List<String>               groupName;
-    private List<Contact>              mListContact;
-
-    private Handler                    mHandler;
-
-    private void buildContactList(List<Contact> listContact) {
-	mListContact = listContact;
-	for (Contact contact : listContact) {
-	    for (String group : contact.getGroups()) {
-		if (!groupMap.containsKey(group)) {
-		    groupMap.put(group, new ArrayList<Contact>());
-		    groupName.add(group);
-		}
-		try {
-		    if (!groupMap.get(group).contains(contact))
-			groupMap.get(group).add(contact);
-		} catch (NullPointerException e) {
-		    Log.e(TAG, "Failed to find group in groupMap", e);
-		}
-	    }
-	    if (contact.getGroups().isEmpty()) {
-		if (!groupMap.containsKey(DEFAULT_GROUP)) {
-		    groupMap.put(DEFAULT_GROUP, new ArrayList<Contact>());
-		    groupName.add(DEFAULT_GROUP);
-		}
-		groupMap.get(DEFAULT_GROUP).add(contact);
-	    }
-	}
-	mAdapter = new MyExpandableListAdapter();
-	setListAdapter(mAdapter);
-    }
-
-    private void callbackShowContactList() {
-	if (mRoster != null) {
-	    try {
-		buildContactList(mRoster.getContactList());
-	    } catch (RemoteException e) {
-		e.printStackTrace();
-	    }
-	}
-    }
-
-    @Override
-    protected void onCreate(Bundle saveBundle) {
-	Log.d(getString(R.string.contact_list_tag), "onCreate() started");
-	super.onCreate(saveBundle);
-	mHandler = new Handler();
-	mRosterListener = new BeemRosterListener();
-	mBeemApplication = BeemApplication.getApplication(this);
-	groupMap = new HashMap<String, List<Contact>>();
-	groupName = new ArrayList<String>();
-	mBeemApplication.callWhenConnectedToServer(mHandler, new Runnable() {
-
-	    @Override
-	    public void run() {
-		mService = mBeemApplication.getXmppFacade();
-		try {
-		    mRoster = mService.getRoster();
-		} catch (RemoteException e1) {
-		    Log.e(TAG, "Get roster failed", e1);
-		}
-		if (mRoster != null) {
-		    try {
-			mRoster.addConnectionListener(mRosterListener);
-		    } catch (RemoteException e) {
-			e.printStackTrace();
-		    }
-		}
-		callbackShowContactList();
-	    }
-	});
-	Log.d(getString(R.string.contact_list_tag), "onCreate() ended");
-    }
-
-    /**
-     * Callback for menu creation.
-     * 
-     * @param menu
-     *            the menu created
-     * @return true on success, false otherwise
-     */
-    @Override
-    public final boolean onCreateOptionsMenu(Menu menu) {
-	super.onCreateOptionsMenu(menu);
-	MenuInflater inflater = getMenuInflater();
-	inflater.inflate(R.menu.contact_list, menu);
-	return true;
-    }
-
-    /**
-     * Callback for menu item selected.
-     * 
-     * @param item
-     *            the item selected
-     * @return true on success, false otherwise
-     */
-    @Override
-    public final boolean onOptionsItemSelected(MenuItem item) {
-	switch (item.getItemId()) {
-	case R.id.contact_list_menu_settings:
-	    startActivity(new Intent(this, EditSettings.class));
-	    return true;
-	case R.id.contact_list_menu_add_contact:
-	    startActivity(new Intent(ContactList.this, AddContact.class));
-	    return true;
-	default:
-	    return false;
-	}
-    }
 }