# HG changeset patch # User marseille@marseille-desktop # Date 1245256394 -7200 # Node ID d8fa7f751a0f747beb1ed38ec6c187e3860275b0 # Parent b539dc53b9c73a7b09a171c988612f089978da75 Arrangement de la classe ContactList . MANU ON NE TOUCHE PLUS !!! :p diff -r b539dc53b9c7 -r d8fa7f751a0f 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> groupMap; + private List groupName; + private List 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>(); + groupName = new ArrayList(); + 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 listContact) { + mListContact = listContact; + for (Contact contact : listContact) { + for (String group : contact.getGroups()) { + if (!groupMap.containsKey(group)) { + groupMap.put(group, new ArrayList()); + 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()); + 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> groupMap; - private List groupName; - private List mListContact; - - private Handler mHandler; - - private void buildContactList(List listContact) { - mListContact = listContact; - for (Contact contact : listContact) { - for (String group : contact.getGroups()) { - if (!groupMap.containsKey(group)) { - groupMap.put(group, new ArrayList()); - 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()); - 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>(); - groupName = new ArrayList(); - 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; - } - } }