src/com/beem/project/beem/ui/ContactList.java
author nikita@localhost
Thu, 25 Jun 2009 10:02:31 +0200
changeset 301 b952180fd935
parent 300 c7c1827fa960
parent 293 597ee98a6477
child 303 5427deeda4e0
permissions -rw-r--r--
merge
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;
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 238
diff changeset
     4
import java.util.Collections;
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 238
diff changeset
     5
import java.util.Comparator;
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
     6
import java.util.HashMap;
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
     7
import java.util.List;
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
     8
import java.util.Map;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
     9
191
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 185
diff changeset
    10
import org.jivesoftware.smack.util.StringUtils;
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 185
diff changeset
    11
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    12
import android.app.ExpandableListActivity;
237
66ea747448ea Suppression de la beemapplication dans contactlist.
marseille@marseille-desktop
parents: 235
diff changeset
    13
import android.content.ComponentName;
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    14
import android.content.Intent;
237
66ea747448ea Suppression de la beemapplication dans contactlist.
marseille@marseille-desktop
parents: 235
diff changeset
    15
import android.content.ServiceConnection;
191
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 185
diff changeset
    16
import android.database.DataSetObserver;
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    17
import android.graphics.drawable.Drawable;
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    18
import android.os.Bundle;
47
743ccc7961dc Contact liste recuperer.
marseille@KungFuh
parents: 45
diff changeset
    19
import android.os.Handler;
237
66ea747448ea Suppression de la beemapplication dans contactlist.
marseille@marseille-desktop
parents: 235
diff changeset
    20
import android.os.IBinder;
33
0e65d5f55d2f Merge with ui. Synchronous connection worked.
Da Risk <darisk972@gmail.com>
parents: 22
diff changeset
    21
import android.os.RemoteException;
0e65d5f55d2f Merge with ui. Synchronous connection worked.
Da Risk <darisk972@gmail.com>
parents: 22
diff changeset
    22
import android.util.Log;
191
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 185
diff changeset
    23
import android.view.LayoutInflater;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    24
import android.view.Menu;
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    25
import android.view.MenuInflater;
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    26
import android.view.MenuItem;
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
    27
import android.view.View;
47
743ccc7961dc Contact liste recuperer.
marseille@KungFuh
parents: 45
diff changeset
    28
import android.view.ViewGroup;
196
052599f4e646 oulala le dialog ...
marseille@marseille-desktop
parents: 193
diff changeset
    29
import android.view.View.OnClickListener;
052599f4e646 oulala le dialog ...
marseille@marseille-desktop
parents: 193
diff changeset
    30
import android.view.View.OnLongClickListener;
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    31
import android.widget.ExpandableListAdapter;
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
    32
import android.widget.ImageView;
47
743ccc7961dc Contact liste recuperer.
marseille@KungFuh
parents: 45
diff changeset
    33
import android.widget.TextView;
52
375194dc3bca Gros menage dans les views.
marseille@KungFuh
parents: 48
diff changeset
    34
237
66ea747448ea Suppression de la beemapplication dans contactlist.
marseille@marseille-desktop
parents: 235
diff changeset
    35
import com.beem.project.beem.BeemService;
59
ff98ffba21f4 Merge avec bart.
marseille@KungFuh
parents: 52
diff changeset
    36
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
    37
import com.beem.project.beem.service.Contact;
77
0f474a0c4e93 Hop petit commit pour que popop puisse debugger.
marseille@KungFuh
parents: 76
diff changeset
    38
import com.beem.project.beem.service.PresenceAdapter;
0f474a0c4e93 Hop petit commit pour que popop puisse debugger.
marseille@KungFuh
parents: 76
diff changeset
    39
import com.beem.project.beem.service.aidl.IBeemRosterListener;
88
7b2a869e9ef8 Changement du dialogsettings en activity.
marseille@KungFuh
parents: 87
diff changeset
    40
import com.beem.project.beem.service.aidl.IRoster;
67
8c3870db8e31 Rename some XMPP* classes in Xmpp*
Da Risk <darisk972@gmail.com>
parents: 48
diff changeset
    41
import com.beem.project.beem.service.aidl.IXmppFacade;
106
a9bc9297dff7 Amelioration de la methode change status.
Da Risk <darisk972@gmail.com>
parents: 105
diff changeset
    42
import com.beem.project.beem.utils.Status;
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    43
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    44
public class ContactList extends ExpandableListActivity {
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    45
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    46
    private static final String TAG = "CONTACTLIST_ACT";
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
    47
    public static final String DEFAULT_GROUP = "Default";
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    48
    private MyExpandableListAdapter mAdapter;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    49
    private IRoster mRoster;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    50
    private Map<String, List<Contact>> groupMap;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    51
    private List<String> groupName;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    52
    private List<Contact> mListContact;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    53
    private Handler mHandler;
273
0a119f1bada3 Bug #188
Marseille
parents: 267
diff changeset
    54
    private IXmppFacade xmppFacade = null;
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    55
    private final ServiceConnection mServConn = new BeemServiceConnection();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    56
    private int REQUEST_CODE = 1;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    57
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    58
    /**
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    59
     * Callback for menu creation.
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    60
     * @param menu the menu created
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    61
     * @return true on success, false otherwise
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    62
     */
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    63
    @Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    64
    public final boolean onCreateOptionsMenu(Menu menu) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    65
	super.onCreateOptionsMenu(menu);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    66
	MenuInflater inflater = getMenuInflater();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    67
	inflater.inflate(R.menu.contact_list, menu);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    68
	return true;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    69
    }
238
ef8d8745894a Correction bug lors de la Fermeture de la contactlist
marseille@marseille-desktop
parents: 237
diff changeset
    70
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    71
    /**
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    72
     * Callback for menu item selected.
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    73
     * @param item the item selected
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    74
     * @return true on success, false otherwise
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    75
     */
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    76
    @Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    77
    public final boolean onOptionsItemSelected(MenuItem item) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    78
	switch (item.getItemId()) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    79
	    case R.id.contact_list_menu_settings:
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    80
		startActivityForResult(new Intent(this, EditSettings.class), REQUEST_CODE);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    81
		return true;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    82
	    case R.id.contact_list_menu_add_contact:
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    83
		startActivity(new Intent(ContactList.this, AddContact.class));
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    84
		return true;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    85
	    default:
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    86
		return false;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    87
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    88
    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    89
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    90
    @Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    91
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    92
	super.onActivityResult(requestCode, resultCode, data);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    93
	if (requestCode == REQUEST_CODE) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    94
	    if (resultCode == 69) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    95
		finish();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    96
		startActivity(new Intent(this, Login.class));
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    97
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    98
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
    99
    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   100
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   101
    @Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   102
    protected void onCreate(Bundle saveBundle) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   103
	super.onCreate(saveBundle);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   104
	mHandler = new Handler();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   105
	groupMap = new HashMap<String, List<Contact>>();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   106
	groupName = new ArrayList<String>();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   107
    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   108
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   109
    @Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   110
    protected void onStart() {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   111
	super.onStart();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   112
	bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   113
    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   114
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   115
    @Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   116
    protected void onStop() {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   117
	super.onStop();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   118
	unbindService(mServConn);
273
0a119f1bada3 Bug #188
Marseille
parents: 267
diff changeset
   119
	groupName.clear();
0a119f1bada3 Bug #188
Marseille
parents: 267
diff changeset
   120
	groupMap.clear();
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   121
    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   122
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   123
    class ComparatorContactListByName<T> implements Comparator<T> {
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 238
diff changeset
   124
	@Override
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   125
	public int compare(T c1, T c2) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   126
	    return ((Contact) c1).getName().compareToIgnoreCase(((Contact) c2).getName());
240
f879726d6295 Contact List :
marseille@marseille-desktop
parents: 239
diff changeset
   127
	}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   128
    }
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 238
diff changeset
   129
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   130
    class ComparatorContactListByStatusAndName<T> implements Comparator<T> {
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   131
	@Override
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   132
	public int compare(T c1, T c2) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   133
	    if (((Contact) c1).getStatus() < ((Contact) c2).getStatus()) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   134
		return 1;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   135
	    } else if (((Contact) c1).getStatus() > ((Contact) c2).getStatus()) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   136
		return -1;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   137
	    } else
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   138
		return ((Contact) c1).getName().compareToIgnoreCase(((Contact) c2).getName());
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   139
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   140
    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   141
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   142
    private void buildContactList(List<Contact> listContact) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   143
	mListContact = listContact;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   144
	Collections.sort(mListContact, new ComparatorContactListByStatusAndName<Contact>());
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   145
	for (Contact contact : mListContact) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   146
	    for (String group : contact.getGroups()) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   147
		if (!groupMap.containsKey(group)) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   148
		    groupMap.put(group, new ArrayList<Contact>());
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   149
		    groupName.add(group);
235
d8fa7f751a0f Arrangement de la classe ContactList .
marseille@marseille-desktop
parents: 234
diff changeset
   150
		}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   151
		try {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   152
		    if (!groupMap.get(group).contains(contact))
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   153
			groupMap.get(group).add(contact);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   154
		} catch (NullPointerException e) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   155
		    Log.e(TAG, "Failed to find group in groupMap", e);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   156
		}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   157
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   158
	    if (contact.getGroups().isEmpty()) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   159
		if (!groupMap.containsKey(DEFAULT_GROUP)) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   160
		    groupMap.put(DEFAULT_GROUP, new ArrayList<Contact>());
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   161
		    groupName.add(DEFAULT_GROUP);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   162
		}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   163
		groupMap.get(DEFAULT_GROUP).add(contact);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   164
	    }
235
d8fa7f751a0f Arrangement de la classe ContactList .
marseille@marseille-desktop
parents: 234
diff changeset
   165
	}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   166
	mAdapter = new MyExpandableListAdapter();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   167
	setListAdapter(mAdapter);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   168
    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   169
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   170
    private class BeemRosterListener extends IBeemRosterListener.Stub {
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
   171
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   172
	@Override
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   173
	public void onEntriesAdded(List<String> addresses) throws RemoteException {
300
c7c1827fa960 Support #189
nikita@localhost
parents: 289
diff changeset
   174
	    Log.d("CONTACTLIST", "DEBUG - ONENTRIESADDED()"+ addresses.size());
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   175
	    for (String str : addresses) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   176
		Contact curContact = mRoster.getContact(str);
300
c7c1827fa960 Support #189
nikita@localhost
parents: 289
diff changeset
   177
		Log.d("CONTACTLIST", "DEBUG - ONENTRIESADDED() group size " + curContact.getGroups().size() );
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   178
		for (String group : curContact.getGroups()) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   179
		    if (!groupMap.containsKey(group)) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   180
			groupMap.put(group, new ArrayList<Contact>());
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   181
			groupName.add(group);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   182
		    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   183
		    try {
300
c7c1827fa960 Support #189
nikita@localhost
parents: 289
diff changeset
   184
			Log.d("CONTACTLIST", "DEBUG - ONENTRIESADD");
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   185
			groupMap.get(group).add(curContact);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   186
		    } catch (NullPointerException e) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   187
			Log.e(TAG, "Failed to find group in groupMap", e);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   188
		    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   189
		}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   190
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   191
	    mHandler.post(new RunnableChange());
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   192
	}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   193
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   194
	@Override
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   195
	public void onEntriesDeleted(List<String> addresses) throws RemoteException {
288
b4112a39526c Entries deleted.
Marseille
parents: 287
diff changeset
   196
	    Log.d("CONTACTLIST", "DEBUG - ONENTRIESDELETED() " + addresses.get(0));
289
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 288
diff changeset
   197
	    for (String user : addresses) {
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 288
diff changeset
   198
		List<Contact> tmpListContact = groupMap.get(DEFAULT_GROUP);
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 288
diff changeset
   199
		for (Contact contact : tmpListContact) {
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 288
diff changeset
   200
		    if (contact.getJID().equals(user))
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 288
diff changeset
   201
			tmpListContact.remove(contact);
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   202
		}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   203
	    }
289
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 288
diff changeset
   204
	    if (groupMap.get(DEFAULT_GROUP).isEmpty()) {
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 288
diff changeset
   205
		groupMap.remove(DEFAULT_GROUP);
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 288
diff changeset
   206
		groupName.remove(DEFAULT_GROUP);
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 288
diff changeset
   207
	    }
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   208
	    mHandler.post(new RunnableChange());
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   209
	}
170
e892a47de086 Correction de 2 3 bugs.
marseille
parents: 166
diff changeset
   210
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   211
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   212
	public void onEntriesUpdated(List<String> addresses) throws RemoteException {
288
b4112a39526c Entries deleted.
Marseille
parents: 287
diff changeset
   213
	    Log.d("CONTACTLIST", "DEBUG - ONENTRIESUPDATED()");
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   214
	    for (String str : addresses) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   215
		Contact curContact = mRoster.getContact(str);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   216
		for (String group : curContact.getGroups()) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   217
		    if (!groupMap.containsKey(group)) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   218
			groupMap.put(group, new ArrayList<Contact>());
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   219
			groupName.add(group);
300
c7c1827fa960 Support #189
nikita@localhost
parents: 289
diff changeset
   220
			Log.d("CONTACTLIST", "DEBUG - ONENTRIESUPDATED() found");
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   221
			groupMap.get(group).add(curContact);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   222
		    } else {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   223
			boolean found = false;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   224
			for (Contact tempContact : groupMap.get(group)) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   225
			    if (tempContact.getJID().equals(str)) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   226
				found = true;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   227
				break;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   228
			    }
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   229
			}
300
c7c1827fa960 Support #189
nikita@localhost
parents: 289
diff changeset
   230
			if (!found) {
c7c1827fa960 Support #189
nikita@localhost
parents: 289
diff changeset
   231
			    Log.d("CONTACTLIST", "DEBUG - ONENTRIESUPDATED() not found");
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   232
			    groupMap.get(group).add(curContact);
300
c7c1827fa960 Support #189
nikita@localhost
parents: 289
diff changeset
   233
			}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   234
		    }
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   235
		}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   236
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   237
	    mHandler.post(new RunnableChange());
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   238
	}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   239
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   240
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   241
	public void onPresenceChanged(PresenceAdapter presence) throws RemoteException {
288
b4112a39526c Entries deleted.
Marseille
parents: 287
diff changeset
   242
	    Log.d("CONTACTLIST", "DEBUG - ONPRESENCECHANGED()");
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   243
	    for (Contact curContact : mListContact) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   244
		if (curContact.getJID().equals(StringUtils.parseBareAddress(presence.getFrom()))) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   245
		    curContact.setStatus(mRoster.getPresence(StringUtils.parseBareAddress(presence.getFrom())));
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   246
		    mHandler.post(new RunnableChange());
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   247
		    return;
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   248
		}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   249
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   250
	}
235
d8fa7f751a0f Arrangement de la classe ContactList .
marseille@marseille-desktop
parents: 234
diff changeset
   251
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   252
	private class RunnableChange implements Runnable {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   253
	    @Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   254
	    public void run() {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   255
		mAdapter.changed();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   256
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   257
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   258
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   259
	@Override
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   260
	public void onEntryDeleteFromGroup(String group, String jid) throws RemoteException {
288
b4112a39526c Entries deleted.
Marseille
parents: 287
diff changeset
   261
	    Log.d("CONTACTLIST", "DEBUG - ONENTRYDELETEFROMGROUP()");
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   262
	    for (Contact contact : mListContact) {
287
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   263
		if (jid.equals(contact.getJID())
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   264
		    && (contact.getGroups().contains(group) || contact.getGroups().size() == 0)) {
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   265
		    groupMap.get(group).remove(contact);
287
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   266
		    contact.delGroup(group);
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   267
		    if (groupMap.get(group).size() == 0) {
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   268
			groupMap.remove(group);
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   269
			groupName.remove(group);
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   270
		    }
287
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   271
		    if (contact.getGroups().size() == 0) {
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   272
			if (!groupMap.containsKey(DEFAULT_GROUP)) {
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   273
			    groupMap.put(DEFAULT_GROUP, new ArrayList<Contact>());
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   274
			    groupName.add(DEFAULT_GROUP);
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   275
			}
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   276
			groupMap.get(DEFAULT_GROUP).add(contact);
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   277
		    }
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   278
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   279
		}
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   280
	    }
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   281
	    mHandler.post(new RunnableChange());
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   282
	}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   283
    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   284
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   285
    private class MyExpandableListAdapter implements ExpandableListAdapter {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   286
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   287
	class MyOnClickListener implements OnClickListener {
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   288
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   289
	    private final Contact mContact;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   290
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   291
	    public MyOnClickListener(Contact contact) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   292
		mContact = contact;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   293
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   294
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   295
	    @Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   296
	    public void onClick(View v) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   297
		Intent i = new Intent(ContactList.this, SendIM.class);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   298
		i.setData(mContact.toUri());
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   299
		startActivity(i);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   300
	    }
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   301
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   302
	}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   303
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   304
	class MyOnLongClickListener implements OnLongClickListener {
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   305
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   306
	    private final Contact mContact;
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 263
diff changeset
   307
	    private final String mGroup;
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   308
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 263
diff changeset
   309
	    public MyOnLongClickListener(Contact contact, String group) {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   310
		mContact = contact;
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 263
diff changeset
   311
		mGroup = group;
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   312
	    }
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   313
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   314
	    @Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   315
	    public boolean onLongClick(View v) {
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 263
diff changeset
   316
		createDialog(mContact, mGroup);
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   317
		return true;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   318
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   319
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   320
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   321
	private final List<DataSetObserver> observers;
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   322
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   323
	public MyExpandableListAdapter() {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   324
	    observers = new ArrayList<DataSetObserver>();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   325
	}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   326
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   327
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   328
	public boolean areAllItemsEnabled() {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   329
	    return true;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   330
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   331
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   332
	private void bindView(View view, Contact curContact) {
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   333
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   334
	    if (curContact != null) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   335
		ImageView imgV = (ImageView) view.findViewById(R.id.contactliststatus);
276
673ee3896d50 Petite modification couleur texte
Philippe Lago <lago_p@epitech.net>
parents: 267
diff changeset
   336
		TextView v = (TextView) view.findViewById(R.id.contactlistpseudo);
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   337
		Drawable imageDrawable = null;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   338
		switch (curContact.getStatus()) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   339
		    case Status.CONTACT_STATUS_AVAILABLE:
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   340
			imageDrawable = getResources().getDrawable(R.drawable.online);
276
673ee3896d50 Petite modification couleur texte
Philippe Lago <lago_p@epitech.net>
parents: 267
diff changeset
   341
			v.setTextColor(getResources().getColor(R.color.white));
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   342
			break;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   343
		    case Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT:
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   344
			imageDrawable = getResources().getDrawable(R.drawable.chat);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   345
			break;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   346
		    case Status.CONTACT_STATUS_AWAY:
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   347
			imageDrawable = getResources().getDrawable(R.drawable.away);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   348
			break;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   349
		    case Status.CONTACT_STATUS_BUSY:
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   350
			imageDrawable = getResources().getDrawable(R.drawable.dnd);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   351
			break;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   352
		    case Status.CONTACT_STATUS_DISCONNECT:
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   353
			imageDrawable = getResources().getDrawable(R.drawable.offline);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   354
			break;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   355
		    case Status.CONTACT_STATUS_UNAVAILABLE:
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   356
			imageDrawable = getResources().getDrawable(R.drawable.requested);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   357
			break;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   358
		    default:
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   359
			imageDrawable = getResources().getDrawable(R.drawable.error);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   360
			break;
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   361
		}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   362
		imgV.setImageDrawable(imageDrawable);
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   363
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   364
		if (v != null) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   365
		    v.setText(curContact.getName());
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   366
		}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   367
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   368
		v = (TextView) view.findViewById(R.id.contactlistmsgperso);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   369
		if (v != null) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   370
		    v.setText(curContact.getMsgState());
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   371
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   372
293
597ee98a6477 Suppression de l'avatar !
Marseille
parents: 289
diff changeset
   373
		/*
597ee98a6477 Suppression de l'avatar !
Marseille
parents: 289
diff changeset
   374
		 * TODO: Rajouter l'avatar du contact getAvatar() dans la classe imgV = (ImageView)
597ee98a6477 Suppression de l'avatar !
Marseille
parents: 289
diff changeset
   375
		 * view.findViewById(R.id.contactlistavatar); if (imgV != null) { imageDrawable =
597ee98a6477 Suppression de l'avatar !
Marseille
parents: 289
diff changeset
   376
		 * getResources().getDrawable(R.drawable.avatar); imgV.setImageDrawable(imageDrawable); }
597ee98a6477 Suppression de l'avatar !
Marseille
parents: 289
diff changeset
   377
		 */
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   378
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   379
	}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   380
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   381
	public void changed() {
289
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 288
diff changeset
   382
	    Collections.sort(groupName);
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   383
	    for (String name : groupName) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   384
		Collections.sort(groupMap.get(name), new ComparatorContactListByStatusAndName<Contact>());
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   385
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   386
	    for (DataSetObserver obs : observers) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   387
		obs.onChanged();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   388
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   389
	}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   390
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 263
diff changeset
   391
	void createDialog(Contact contact, String group) {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 263
diff changeset
   392
	    ContactDialog dialogContact = new ContactDialog(ContactList.this, contact, group);
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   393
	    dialogContact.setOwnerActivity(ContactList.this);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   394
	    dialogContact.show();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   395
	}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   396
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   397
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   398
	public Object getChild(int groupPosition, int childPosition) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   399
	    try {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   400
		return groupMap.get(groupName.get(groupPosition)).get(childPosition);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   401
	    } catch (NullPointerException e) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   402
		Log.e(TAG, "Child not found", e);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   403
		return null;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   404
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   405
	}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   406
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   407
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   408
	public long getChildId(int groupPosition, int childPosition) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   409
	    try {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   410
		groupMap.get(groupName.get(groupPosition)).get(childPosition);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   411
	    } catch (NullPointerException e) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   412
		Log.e(TAG, "Child not found", e);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   413
		return 0;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   414
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   415
	    return childPosition;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   416
	}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   417
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   418
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   419
	public int getChildrenCount(int groupPosition) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   420
	    try {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   421
		return groupMap.get(groupName.get(groupPosition)).size();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   422
	    } catch (NullPointerException e) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   423
		Log.e(TAG, "Child not found", e);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   424
		return 0;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   425
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   426
	}
196
052599f4e646 oulala le dialog ...
marseille@marseille-desktop
parents: 193
diff changeset
   427
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   428
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   429
	public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   430
	    ViewGroup parent) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   431
	    View v;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   432
	    if (convertView == null) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   433
		v = LayoutInflater.from(ContactList.this).inflate(R.layout.contactlistcontact, null);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   434
	    } else {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   435
		v = convertView;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   436
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   437
	    Contact contact = groupMap.get(groupName.get(groupPosition)).get(childPosition);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   438
	    bindView(v, contact);
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   439
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 263
diff changeset
   440
	    v.setOnLongClickListener(new MyOnLongClickListener(contact, groupName.get(groupPosition)));
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   441
	    v.setOnClickListener(new MyOnClickListener(contact));
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   442
	    return v;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   443
	}
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   444
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   445
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   446
	public long getCombinedChildId(long groupId, long childId) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   447
	    return 1000 * groupId + childId;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   448
	}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   449
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   450
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   451
	public long getCombinedGroupId(long groupId) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   452
	    return 1000 * groupId;
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   453
	}
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
   454
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   455
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   456
	public Object getGroup(int groupPosition) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   457
	    try {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   458
		return groupMap.get(groupName.get(groupPosition));
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   459
	    } catch (NullPointerException e) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   460
		Log.e(TAG, "Group not found", e);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   461
		return null;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   462
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   463
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   464
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   465
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   466
	public int getGroupCount() {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   467
	    return groupMap.size();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   468
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   469
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   470
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   471
	public long getGroupId(int groupPosition) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   472
	    return groupPosition;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   473
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   474
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   475
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   476
	public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   477
	    if (convertView == null) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   478
		convertView = LayoutInflater.from(ContactList.this).inflate(R.layout.contactlistgroup, null);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   479
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   480
	    TextView groupTextView = (TextView) convertView.findViewById(R.id.textgroup);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   481
	    groupTextView.setText(groupName.get(groupPosition));
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   482
	    return convertView;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   483
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   484
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   485
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   486
	public boolean hasStableIds() {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   487
	    return false;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   488
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   489
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   490
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   491
	public boolean isChildSelectable(int groupPosition, int childPosition) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   492
	    return true;
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   493
	}
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   494
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   495
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   496
	public boolean isEmpty() {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   497
	    return groupMap.isEmpty();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   498
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   499
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   500
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   501
	public void onGroupCollapsed(int groupPosition) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   502
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   503
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   504
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   505
	public void onGroupExpanded(int groupPosition) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   506
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   507
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   508
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   509
	public void registerDataSetObserver(DataSetObserver observer) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   510
	    observers.add(observer);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   511
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   512
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   513
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   514
	public void unregisterDataSetObserver(DataSetObserver observer) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   515
	    observers.remove(observer);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   516
	}
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   517
    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   518
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   519
    private class BeemServiceConnection implements ServiceConnection {
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   520
	BeemRosterListener mBeemRosterListener = new BeemRosterListener();
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   521
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   522
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   523
	public void onServiceConnected(ComponentName name, IBinder service) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   524
	    xmppFacade = IXmppFacade.Stub.asInterface(service);
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   525
	    try {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   526
		mRoster = xmppFacade.getRoster();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   527
		if (mRoster != null) {
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   528
		    mRoster.addRosterListener(mBeemRosterListener);
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   529
		    buildContactList(mRoster.getContactList());
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   530
		}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   531
	    } catch (RemoteException e) {
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   532
		e.printStackTrace();
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   533
	    }
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   534
	}
191
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 185
diff changeset
   535
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   536
	@Override
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   537
	public void onServiceDisconnected(ComponentName name) {
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   538
	    try {
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   539
		mRoster.removeRosterListener(mBeemRosterListener);
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   540
	    } catch (RemoteException e) {
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   541
		e.printStackTrace();
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   542
	    }
287
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   543
	    xmppFacade = null;
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   544
	    mRoster = null;
191
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 185
diff changeset
   545
	}
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 260
diff changeset
   546
    }
184
e9d73490be9b Ajout du message d'etat dans la contact list
marseille
parents: 175 179
diff changeset
   547
}