src/com/beem/project/beem/ui/ContactList.java
author Da Risk <darisk972@gmail.com>
Mon, 06 Apr 2009 18:12:30 +0200
changeset 72 cdedc3a25d39
parent 68 0c76c67a2b99
child 76 144e837ee4a6
permissions -rw-r--r--
Show a progress dialog during connection with the server
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
     1
package com.beem.project.beem.ui;
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
     2
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
     3
import java.util.ArrayList;
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
     4
import java.util.HashMap;
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
     5
import java.util.List;
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
     6
import java.util.Map;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
     7
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
     8
import android.app.ExpandableListActivity;
47
743ccc7961dc Contact liste recuperer.
marseille@KungFuh
parents: 45
diff changeset
     9
import android.content.Context;
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    10
import android.content.Intent;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    11
import android.content.SharedPreferences;
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    12
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    13
import android.graphics.drawable.Drawable;
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    14
import android.os.Bundle;
47
743ccc7961dc Contact liste recuperer.
marseille@KungFuh
parents: 45
diff changeset
    15
import android.os.Handler;
33
0e65d5f55d2f Merge with ui. Synchronous connection worked.
Da Risk <darisk972@gmail.com>
parents: 22
diff changeset
    16
import android.os.RemoteException;
0e65d5f55d2f Merge with ui. Synchronous connection worked.
Da Risk <darisk972@gmail.com>
parents: 22
diff changeset
    17
import android.util.Log;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    18
import android.view.Menu;
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    19
import android.view.MenuInflater;
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    20
import android.view.MenuItem;
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
    21
import android.view.View;
47
743ccc7961dc Contact liste recuperer.
marseille@KungFuh
parents: 45
diff changeset
    22
import android.view.ViewGroup;
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    23
import android.widget.ExpandableListAdapter;
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
    24
import android.widget.ExpandableListView;
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    25
import android.widget.ImageView;
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    26
import android.widget.SimpleExpandableListAdapter;
47
743ccc7961dc Contact liste recuperer.
marseille@KungFuh
parents: 45
diff changeset
    27
import android.widget.TextView;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    28
45
ae035477b6aa Utilisation d'une application qui gere les informations globales.
Da Risk <darisk972@gmail.com>
parents: 41
diff changeset
    29
import com.beem.project.beem.BeemApplication;
59
ff98ffba21f4 Merge avec bart.
marseille@KungFuh
parents: 52
diff changeset
    30
import com.beem.project.beem.R;
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 33
diff changeset
    31
import com.beem.project.beem.service.Contact;
67
8c3870db8e31 Rename some XMPP* classes in Xmpp*
Da Risk <darisk972@gmail.com>
parents: 48
diff changeset
    32
import com.beem.project.beem.service.aidl.IXmppFacade;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    33
import com.beem.project.beem.service.aidl.IRoster;
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    34
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    35
public class ContactList extends ExpandableListActivity {
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    36
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
    37
    private static final String TAG = "CONTACTLIST_ACT";
67
8c3870db8e31 Rename some XMPP* classes in Xmpp*
Da Risk <darisk972@gmail.com>
parents: 48
diff changeset
    38
    private IXmppFacade mService = null;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    39
    private SharedPreferences mSettings;
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
    40
    private Handler mHandler;
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
    41
    private BeemApplication mBeemApplication;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    42
    private ContactListDialogSettings mDialog;
33
0e65d5f55d2f Merge with ui. Synchronous connection worked.
Da Risk <darisk972@gmail.com>
parents: 22
diff changeset
    43
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    44
    @SuppressWarnings("unchecked")
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
    45
    @Override
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    46
    public boolean onChildClick(ExpandableListView parent, View v,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    47
	    int groupPosition, int childPosition, long id) {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    48
	Intent i = new Intent(this, SendIM.class);
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    49
	Map<String, Contact> child = (HashMap<String, Contact>) parent
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    50
		.getExpandableListAdapter().getChild(groupPosition,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    51
			childPosition);
62
ec87eec66d56 Correction d'un petit bug pour recuperer les infos du contact dans le
marseille@KungFuh
parents: 60
diff changeset
    52
	i.putExtra("contact", child.get("CHILD"));
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    53
	startActivity(i);
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
    54
	return true;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    55
    }
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    56
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    57
    @Override
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    58
    protected void onCreate(Bundle saveBundle) {
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
    59
	super.onCreate(saveBundle);
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
    60
	mHandler = new Handler();
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
    61
	mBeemApplication = BeemApplication.getApplication(this);
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    62
	mSettings = getSharedPreferences(
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    63
		getString(R.string.PreferenceFileName), MODE_PRIVATE);
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    64
	mDialog = new ContactListDialogSettings(this, mSettings);
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    65
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    66
	mSettings
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    67
		.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    68
		    @Override
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    69
		    public void onSharedPreferenceChanged(
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    70
			    SharedPreferences sharedPreferences, String key) {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    71
			/*
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    72
			 * TODO : A faire apres listener nikita
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    73
			 * 
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    74
			 * mBeemApplication.stopBeemService();
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    75
			 * mBeemApplication.startBeemService();
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    76
			 * mBeemApplication.callWhenServiceConnected(mHandler,
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    77
			 * new Runnable() {
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    78
			 * 
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    79
			 * @Override public void run() {
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    80
			 * callbackShowContactList(); } });
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    81
			 */
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    82
		    }
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    83
		});
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
    84
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    85
    }
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    86
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
    87
    @Override
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    88
    protected void onStart() {
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
    89
	super.onStart();
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    90
	Log.i(TAG, "onStart");
72
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 68
diff changeset
    91
	//mBeemApplication.startBeemService();
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    92
    }
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    93
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    94
    @Override
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    95
    protected void onResume() {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    96
	super.onResume();
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    97
	/*
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    98
	 * @TODO: A ameliorer apres listener de nikita
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    99
	 */
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   100
	Log.i(TAG, "onResume");
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   101
	if (!mBeemApplication.isConnected())
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   102
	    mBeemApplication.startBeemService();
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   103
	else {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   104
	    callbackShowContactList();
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   105
	}
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   106
	mBeemApplication.callWhenServiceConnected(mHandler, new Runnable() {
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   107
	    @Override
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   108
	    public void run() {
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   109
		callbackShowContactList();
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   110
	    }
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   111
	});
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   112
    }
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   113
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   114
    private void callbackShowContactList() {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   115
	/*
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   116
	 * @TODO: A ameliorer apres listener de nikita
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   117
	 */
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   118
	mService = mBeemApplication.getXmppFacade();
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   119
	if (mService != null) {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   120
	    try {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   121
		IRoster r = mService.getRoster();
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   122
		if (r != null)
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   123
		    showContactList(r.getGroupsNames(), r.getContactList());
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   124
	    } catch (RemoteException e) {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   125
		// TODO Auto-generated catch block
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   126
		e.printStackTrace();
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   127
	    }
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   128
	}
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   129
    }
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   130
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   131
    /**
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   132
     * Callback for menu creation.
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   133
     * 
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   134
     * @param menu
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   135
     *            the menu created
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   136
     * @return true on success, false otherwise
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   137
     */
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   138
    @Override
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   139
    public final boolean onCreateOptionsMenu(Menu menu) {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   140
	super.onCreateOptionsMenu(menu);
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   141
	MenuInflater inflater = getMenuInflater();
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   142
	inflater.inflate(R.menu.contactlistmenu, menu);
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   143
	return true;
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   144
    }
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   145
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   146
    /**
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   147
     * Callback for menu item selected.
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   148
     * 
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   149
     * @param item
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   150
     *            the item selected
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   151
     * @return true on success, false otherwise
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   152
     */
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   153
    @Override
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   154
    public final boolean onOptionsItemSelected(MenuItem item) {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   155
	switch (item.getItemId()) {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   156
	    case R.id.account_edit:
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   157
		mDialog.show();
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   158
		return true;
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   159
	    case R.id.account_about:
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   160
		return true;
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   161
	    default:
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   162
		return false;
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   163
	}
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   164
    }
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   165
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   166
    private void showContactList(List<String> listGroup,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   167
	    List<Contact> listContact) {
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   168
	ExpandableListAdapter Adapter;
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   169
	List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   170
	List<List<Map<String, Contact>>> childData = new ArrayList<List<Map<String, Contact>>>();
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   171
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   172
	if (listGroup.size() == 0)
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   173
	    listGroup.add("Default");
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   174
	for (int i = 0; i < listGroup.size(); i++) {
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   175
	    Map<String, String> curGroupMap = new HashMap<String, String>();
47
743ccc7961dc Contact liste recuperer.
marseille@KungFuh
parents: 45
diff changeset
   176
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   177
	    groupData.add(curGroupMap);
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   178
	    curGroupMap.put("GROUP", listGroup.get(i));
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
   179
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   180
	    List<Map<String, Contact>> children = new ArrayList<Map<String, Contact>>();
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   181
	    for (int j = 0; j < listContact.size(); ++j) {
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   182
		Map<String, Contact> curChildMap = new HashMap<String, Contact>();
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   183
		children.add(curChildMap);
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   184
		Contact c = listContact.get(j);
62
ec87eec66d56 Correction d'un petit bug pour recuperer les infos du contact dans le
marseille@KungFuh
parents: 60
diff changeset
   185
		Log.i(TAG, c.getID() + " " +c.getJID());
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   186
		curChildMap.put("CHILD", c);
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   187
	    }
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   188
	    childData.add(children);
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   189
	}
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
   190
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   191
	Adapter = new ContactExpandableListAdapter(this, groupData,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   192
		R.layout.contactlistgroup, new String[] { "GROUP" },
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   193
		new int[] { R.id.textgroup }, childData,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   194
		R.layout.contactlistcontact, new String[] { "CHILD" },
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   195
		new int[] { R.id.contactliststatus, R.id.contactlistpseudo,
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   196
			R.id.contactlistmsgperso, R.id.contactlistavatar });
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   197
	setListAdapter(Adapter);
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
   198
    }
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
   199
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   200
    /**
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   201
     * A simple adapter which allows you to bind data to specific Views defined
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   202
     * within the layout of an Expandable Lists children (Implement
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   203
     * getGroupView() to define the layout of parents)
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   204
     */
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   205
    private class ContactExpandableListAdapter extends
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   206
	    SimpleExpandableListAdapter {
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   207
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   208
	private List<? extends List<? extends Map<String, ?>>> mChildData;
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   209
	private String[] mChildFrom;
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   210
	private int[] mChildTo;
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   211
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   212
	public ContactExpandableListAdapter(Context context,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   213
		List<? extends Map<String, ?>> groupData, int groupLayout,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   214
		String[] groupFrom, int[] groupTo,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   215
		List<? extends List<? extends Map<String, ?>>> childData,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   216
		int childLayout, String[] childFrom, int[] childTo) {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   217
	    super(context, groupData, groupLayout, groupFrom, groupTo,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   218
		    childData, childLayout, childFrom, childTo);
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   219
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   220
	    mChildData = childData;
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   221
	    mChildFrom = childFrom;
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   222
	    mChildTo = childTo;
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   223
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   224
	}
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
   225
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   226
	@Override
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   227
	public View getChildView(int groupPosition, int childPosition,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   228
		boolean isLastChild, View convertView, ViewGroup parent) {
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   229
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   230
	    View v;
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   231
	    if (convertView == null) {
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   232
		v = newChildView(isLastChild, parent);
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   233
	    } else {
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   234
		v = convertView;
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   235
	    }
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   236
	    bindView(v, mChildData.get(groupPosition).get(childPosition),
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   237
		    mChildFrom, mChildTo, groupPosition, childPosition);
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   238
	    return v;
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   239
	}
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
   240
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   241
	private void bindView(View view, Map<String, ?> data, String[] from,
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   242
		int[] to, int groupPosition, int childPosition) {
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
   243
	    Contact c = (Contact) data.get(from[0]);
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   244
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   245
	    if (c != null) {
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   246
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   247
		ImageView imgV = (ImageView) view.findViewById(to[0]);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   248
		Drawable imageDrawable = null;
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   249
		switch (c.getStatus()) {
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   250
		    case Contact.CONTACT_STATUS_AVAILABLE:
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   251
			imageDrawable = (Drawable) getResources().getDrawable(
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   252
				R.drawable.avatar);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   253
		    case Contact.CONTACT_STATUS_AVAILABLE_FOR_CHAT:
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   254
			imageDrawable = (Drawable) getResources().getDrawable(
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   255
				R.drawable.chat);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   256
		    case Contact.CONTACT_STATUS_AWAY:
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   257
			imageDrawable = (Drawable) getResources().getDrawable(
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   258
				R.drawable.away);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   259
		    case Contact.CONTACT_STATUS_BUSY:
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   260
			imageDrawable = (Drawable) getResources().getDrawable(
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   261
				R.drawable.dnd);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   262
		    case Contact.CONTACT_STATUS_DISCONNECT:
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   263
			imageDrawable = (Drawable) getResources().getDrawable(
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   264
				R.drawable.offline);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   265
		    case Contact.CONTACT_STATUS_UNAVAILABLE:
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   266
			imageDrawable = (Drawable) getResources().getDrawable(
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   267
				R.drawable.requested);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   268
		    default:
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   269
			imageDrawable = (Drawable) getResources().getDrawable(
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   270
				R.drawable.error);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   271
		}
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   272
		imgV.setImageDrawable(imageDrawable);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   273
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   274
		TextView v = (TextView) view.findViewById(to[1]);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   275
		if (v != null) {
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   276
		    v.setText(c.getJID());
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   277
		}
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   278
		/*
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   279
		 * @TODO: Rajouter le message perso du contact v = (TextView)
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   280
		 */
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   281
		v = (TextView) view.findViewById(to[2]);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   282
		if (v != null) {
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   283
		    v.setText(c.getMMsgState());
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   284
		}
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   285
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   286
		/*
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   287
		 * @TODO: Rajouter l'avatar du contact getAvatar() dans la
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   288
		 * classe
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   289
		 */
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   290
		imgV = (ImageView) view.findViewById(to[3]);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   291
		if (imgV != null) {
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   292
		    imageDrawable = (Drawable) getResources().getDrawable(
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   293
			    R.drawable.avatar);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   294
		    imgV.setImageDrawable(imageDrawable);
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   295
		}
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   296
	    }
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   297
	}
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
   298
    }
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   299
}