src/com/beem/project/beem/ui/ContactList.java
author nikita@nikita-lab
Sat, 20 Jun 2009 18:01:09 +0200
changeset 251 fae2a16a1f28
parent 250 bce0846bc3ed
child 252 f9bbba863298
permissions -rw-r--r--
Feature #169 La feature a été ajouté, à priori c'est bon, a testé.
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
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    46
	private static final String TAG = "CONTACTLIST_ACT";
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    47
	private static final String DEFAULT_GROUP = "Default";
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    48
	private MyExpandableListAdapter mAdapter;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    49
	private IRoster mRoster;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    50
	private Map<String, List<Contact>> groupMap;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    51
	private List<String> groupName;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    52
	private List<Contact> mListContact;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    53
	private Handler mHandler;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    54
	private IXmppFacade xmppFacade = null;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    55
	private final ServiceConnection mServConn = new BeemServiceConnection();
238
ef8d8745894a Correction bug lors de la Fermeture de la contactlist
marseille@marseille-desktop
parents: 237
diff changeset
    56
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    57
	/**
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    58
	 * Callback for menu creation.
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    59
	 * @param menu the menu created
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    60
	 * @return true on success, false otherwise
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    61
	 */
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 238
diff changeset
    62
	@Override
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    63
	public final boolean onCreateOptionsMenu(Menu menu) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    64
		super.onCreateOptionsMenu(menu);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    65
		MenuInflater inflater = getMenuInflater();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    66
		inflater.inflate(R.menu.contact_list, menu);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    67
		return true;
240
f879726d6295 Contact List :
marseille@marseille-desktop
parents: 239
diff changeset
    68
	}
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 238
diff changeset
    69
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    70
	/**
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    71
	 * Callback for menu item selected.
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    72
	 * @param item the item selected
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    73
	 * @return true on success, false otherwise
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    74
	 */
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    75
	@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    76
	public final boolean onOptionsItemSelected(MenuItem item) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    77
		switch (item.getItemId()) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    78
		case R.id.contact_list_menu_settings:
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    79
			startActivity(new Intent(this, EditSettings.class));
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    80
			return true;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    81
		case R.id.contact_list_menu_add_contact:
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    82
			startActivity(new Intent(ContactList.this, AddContact.class));
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    83
			return true;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    84
		default:
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    85
			return false;
235
d8fa7f751a0f Arrangement de la classe ContactList .
marseille@marseille-desktop
parents: 234
diff changeset
    86
		}
d8fa7f751a0f Arrangement de la classe ContactList .
marseille@marseille-desktop
parents: 234
diff changeset
    87
	}
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
    88
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
    89
	@Override
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    90
	protected void onCreate(Bundle saveBundle) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    91
		super.onCreate(saveBundle);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    92
		bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    93
		mHandler = new Handler();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    94
		groupMap = new HashMap<String, List<Contact>>();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    95
		groupName = new ArrayList<String>();
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
    96
	}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
    97
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
    98
	@Override
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
    99
	protected void onDestroy() {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   100
		super.onDestroy();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   101
		unbindService(mServConn);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   102
	}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   103
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   104
	class ComparatorContactListByName<T> implements Comparator<T> {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   105
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   106
		public int compare(T c1, T c2) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   107
			return ((Contact) c1).getName().compareToIgnoreCase(((Contact) c2).getName());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   108
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   109
	}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   110
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   111
	class ComparatorContactListByStatusAndName<T> implements Comparator<T> {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   112
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   113
		public int compare(T c1, T c2) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   114
			if (((Contact) c1).getStatus() < ((Contact) c2).getStatus()) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   115
				return 1;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   116
			} else if (((Contact) c1).getStatus() > ((Contact) c2).getStatus()) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   117
				return -1;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   118
			} else
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   119
				return ((Contact) c1).getName().compareToIgnoreCase(((Contact) c2).getName());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   120
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   121
	}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   122
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   123
	private void buildContactList(List<Contact> listContact) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   124
		mListContact = listContact;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   125
		Collections.sort(mListContact, new ComparatorContactListByStatusAndName<Contact>());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   126
		for (Contact contact : mListContact) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   127
			for (String group : contact.getGroups()) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   128
				if (!groupMap.containsKey(group)) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   129
					groupMap.put(group, new ArrayList<Contact>());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   130
					Collections.sort(groupMap.get(group), new ComparatorContactListByStatusAndName<Contact>());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   131
					groupName.add(group);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   132
				}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   133
				try {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   134
					if (!groupMap.get(group).contains(contact))
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   135
						groupMap.get(group).add(contact);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   136
				} catch (NullPointerException e) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   137
					Log.e(TAG, "Failed to find group in groupMap", e);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   138
				}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   139
			}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   140
			if (contact.getGroups().isEmpty()) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   141
				if (!groupMap.containsKey(DEFAULT_GROUP)) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   142
					groupMap.put(DEFAULT_GROUP, new ArrayList<Contact>());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   143
					groupName.add(DEFAULT_GROUP);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   144
				}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   145
				groupMap.get(DEFAULT_GROUP).add(contact);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   146
			}
86
23a0dfdff589 Little Clean.
marseille@KungFuh
parents: 78
diff changeset
   147
		}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   148
		mAdapter = new MyExpandableListAdapter();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   149
		setListAdapter(mAdapter);
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   150
	}
170
e892a47de086 Correction de 2 3 bugs.
marseille
parents: 166
diff changeset
   151
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   152
	private class BeemRosterListener extends IBeemRosterListener.Stub {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   153
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   154
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   155
		public void onEntriesAdded(List<String> addresses) throws RemoteException {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   156
			for (String str : addresses) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   157
				Contact curContact = mRoster.getContact(str);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   158
				for (String group : curContact.getGroups()) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   159
					if (!groupMap.containsKey(group)) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   160
						groupMap.put(group, new ArrayList<Contact>());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   161
						groupName.add(group);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   162
					}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   163
					try {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   164
						groupMap.get(group).add(curContact);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   165
					} catch (NullPointerException e) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   166
						Log.e(TAG, "Failed to find group in groupMap", e);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   167
					}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   168
				}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   169
			}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   170
			mHandler.post(new RunnableChange());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   171
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   172
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   173
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   174
		public void onEntriesDeleted(List<String> addresses) throws RemoteException {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   175
			for (List<Contact> cList : groupMap.values()) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   176
				for (Contact curContact : cList) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   177
					for (String addr : addresses) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   178
						if (addr.equals(curContact.getJID())) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   179
							cList.remove(curContact);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   180
							if (cList.isEmpty()) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   181
								groupMap.values().remove(cList);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   182
							}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   183
						}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   184
					}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   185
				}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   186
			}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   187
			mHandler.post(new RunnableChange());
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   188
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   189
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   190
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   191
		public void onEntriesUpdated(List<String> addresses) throws RemoteException {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   192
			for (String str : addresses) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   193
				Contact curContact = mRoster.getContact(str);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   194
				for (String group : curContact.getGroups()) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   195
					if (!groupMap.containsKey(group)) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   196
						groupMap.put(group, new ArrayList<Contact>());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   197
						groupName.add(group);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   198
						groupMap.get(group).add(curContact);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   199
					} else {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   200
						boolean found = false;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   201
						for (Contact tempContact : groupMap.get(group)) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   202
							if (tempContact.getJID() == str) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   203
								curContact = tempContact;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   204
								found = true;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   205
								break;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   206
							}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   207
						}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   208
						if (!found) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   209
							groupMap.get(group).add(curContact);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   210
						}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   211
					}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   212
				}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   213
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   214
			mHandler.post(new RunnableChange());
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   215
		}
235
d8fa7f751a0f Arrangement de la classe ContactList .
marseille@marseille-desktop
parents: 234
diff changeset
   216
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   217
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   218
		public void onPresenceChanged(PresenceAdapter presence) throws RemoteException {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   219
			for (Contact curContact : mListContact) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   220
				if (curContact.getJID().equals(StringUtils.parseBareAddress(presence.getFrom()))) {
251
fae2a16a1f28 Feature #169
nikita@nikita-lab
parents: 250
diff changeset
   221
					curContact.setStatus(mRoster.getPresence(StringUtils.parseBareAddress(presence.getFrom())));
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   222
					mHandler.post(new RunnableChange());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   223
					return;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   224
				}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   225
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   226
		}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   227
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   228
		private class RunnableChange implements Runnable {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   229
			@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   230
			public void run() {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   231
				mAdapter.changed();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   232
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   233
		}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   234
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   235
	}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   236
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   237
	private class MyExpandableListAdapter implements ExpandableListAdapter {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   238
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   239
		class MyOnClickListener implements OnClickListener {
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   240
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   241
			private final Contact mContact;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   242
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   243
			public MyOnClickListener(Contact contact) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   244
				mContact = contact;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   245
			}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   246
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   247
			@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   248
			public void onClick(View v) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   249
				Intent i = new Intent(ContactList.this, SendIM.class);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   250
				i.setData(mContact.toUri());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   251
				startActivity(i);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   252
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   253
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   254
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   255
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   256
		class MyOnLongClickListener implements OnLongClickListener {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   257
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   258
			private final Contact mContact;
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   259
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   260
			public MyOnLongClickListener(Contact contact) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   261
				mContact = contact;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   262
			}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   263
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   264
			@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   265
			public boolean onLongClick(View v) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   266
				createDialog(mContact);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   267
				return true;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   268
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   269
		}
196
052599f4e646 oulala le dialog ...
marseille@marseille-desktop
parents: 193
diff changeset
   270
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   271
		private final List<DataSetObserver> observers;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   272
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   273
		public MyExpandableListAdapter() {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   274
			observers = new ArrayList<DataSetObserver>();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   275
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   276
		
196
052599f4e646 oulala le dialog ...
marseille@marseille-desktop
parents: 193
diff changeset
   277
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   278
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   279
		public boolean areAllItemsEnabled() {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   280
			return true;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   281
		}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   282
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   283
		private void bindView(View view, Contact curContact) {
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   284
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   285
			if (curContact != null) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   286
				ImageView imgV = (ImageView) view.findViewById(R.id.contactliststatus);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   287
				Drawable imageDrawable = null;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   288
				switch (curContact.getStatus()) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   289
				case Status.CONTACT_STATUS_AVAILABLE:
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   290
					imageDrawable = getResources().getDrawable(R.drawable.online);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   291
					break;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   292
				case Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT:
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   293
					imageDrawable = getResources().getDrawable(R.drawable.chat);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   294
					break;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   295
				case Status.CONTACT_STATUS_AWAY:
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   296
					imageDrawable = getResources().getDrawable(R.drawable.away);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   297
					break;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   298
				case Status.CONTACT_STATUS_BUSY:
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   299
					imageDrawable = getResources().getDrawable(R.drawable.dnd);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   300
					break;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   301
				case Status.CONTACT_STATUS_DISCONNECT:
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   302
					imageDrawable = getResources().getDrawable(R.drawable.offline);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   303
					break;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   304
				case Status.CONTACT_STATUS_UNAVAILABLE:
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   305
					imageDrawable = getResources().getDrawable(R.drawable.requested);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   306
					break;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   307
				default:
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   308
					imageDrawable = getResources().getDrawable(R.drawable.error);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   309
				break;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   310
				}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   311
				imgV.setImageDrawable(imageDrawable);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   312
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   313
				TextView v = (TextView) view.findViewById(R.id.contactlistpseudo);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   314
				if (v != null) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   315
					v.setText(curContact.getName());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   316
				}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   317
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   318
				v = (TextView) view.findViewById(R.id.contactlistmsgperso);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   319
				if (v != null) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   320
					v.setText(curContact.getMsgState());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   321
				}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   322
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   323
				// TODO: Rajouter l'avatar du contact getAvatar() dans la classe
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   324
				imgV = (ImageView) view.findViewById(R.id.contactlistavatar);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   325
				if (imgV != null) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   326
					imageDrawable = getResources().getDrawable(R.drawable.avatar);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   327
					imgV.setImageDrawable(imageDrawable);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   328
				}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   329
			}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   330
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   331
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   332
		public void changed() {
251
fae2a16a1f28 Feature #169
nikita@nikita-lab
parents: 250
diff changeset
   333
			for (String name : groupName) {
fae2a16a1f28 Feature #169
nikita@nikita-lab
parents: 250
diff changeset
   334
				Collections.sort(groupMap.get(name), new ComparatorContactListByStatusAndName<Contact>());
fae2a16a1f28 Feature #169
nikita@nikita-lab
parents: 250
diff changeset
   335
			}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   336
			for (DataSetObserver obs : observers) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   337
				obs.onChanged();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   338
			}			
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   339
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   340
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   341
		void createDialog(Contact contact) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   342
			ContactDialog dialogContact = new ContactDialog(ContactList.this, contact);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   343
			dialogContact.setOwnerActivity(ContactList.this);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   344
			dialogContact.show();
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   345
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   346
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   347
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   348
		public Object getChild(int groupPosition, int childPosition) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   349
			try {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   350
				return groupMap.get(groupName.get(groupPosition)).get(childPosition);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   351
			} catch (NullPointerException e) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   352
				Log.e(TAG, "Child not found", e);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   353
				return null;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   354
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   355
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   356
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   357
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   358
		public long getChildId(int groupPosition, int childPosition) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   359
			try {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   360
				groupMap.get(groupName.get(groupPosition)).get(childPosition);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   361
			} catch (NullPointerException e) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   362
				Log.e(TAG, "Child not found", e);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   363
				return 0;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   364
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   365
			return childPosition;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   366
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   367
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   368
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   369
		public int getChildrenCount(int groupPosition) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   370
			try {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   371
				return groupMap.get(groupName.get(groupPosition)).size();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   372
			} catch (NullPointerException e) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   373
				Log.e(TAG, "Child not found", e);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   374
				return 0;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   375
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   376
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   377
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   378
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   379
		public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   380
				ViewGroup parent) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   381
			View v;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   382
			if (convertView == null) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   383
				v = LayoutInflater.from(ContactList.this).inflate(R.layout.contactlistcontact, null);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   384
			} else {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   385
				v = convertView;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   386
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   387
			Contact contact = groupMap.get(groupName.get(groupPosition)).get(childPosition);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   388
			bindView(v, contact);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   389
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   390
			v.setOnLongClickListener(new MyOnLongClickListener(contact));
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   391
			v.setOnClickListener(new MyOnClickListener(contact));
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   392
			return v;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   393
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   394
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   395
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   396
		public long getCombinedChildId(long groupId, long childId) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   397
			return 1000 * groupId + childId;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   398
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   399
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   400
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   401
		public long getCombinedGroupId(long groupId) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   402
			return 1000 * groupId;
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   403
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   404
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   405
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   406
		public Object getGroup(int groupPosition) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   407
			try {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   408
				return groupMap.get(groupName.get(groupPosition));
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   409
			} catch (NullPointerException e) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   410
				Log.e(TAG, "Group not found", e);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   411
				return null;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   412
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   413
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   414
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   415
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   416
		public int getGroupCount() {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   417
			return groupMap.size();
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   418
		}
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   419
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   420
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   421
		public long getGroupId(int groupPosition) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   422
			return groupPosition;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   423
		}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   424
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   425
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   426
		public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   427
			if (convertView == null) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   428
				convertView = LayoutInflater.from(ContactList.this).inflate(R.layout.contactlistgroup, null);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   429
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   430
			TextView groupTextView = (TextView) convertView.findViewById(R.id.textgroup);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   431
			groupTextView.setText(groupName.get(groupPosition));
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   432
			return convertView;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   433
		}
196
052599f4e646 oulala le dialog ...
marseille@marseille-desktop
parents: 193
diff changeset
   434
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   435
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   436
		public boolean hasStableIds() {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   437
			return false;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   438
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   439
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   440
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   441
		public boolean isChildSelectable(int groupPosition, int childPosition) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   442
			return true;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   443
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   444
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   445
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   446
		public boolean isEmpty() {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   447
			return groupMap.isEmpty();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   448
		}
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   449
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   450
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   451
		public void onGroupCollapsed(int groupPosition) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   452
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   453
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   454
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   455
		public void onGroupExpanded(int groupPosition) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   456
		}
48
e7a787b81100 merge avec marseille
Da Risk <darisk972@gmail.com>
parents: 47 42
diff changeset
   457
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   458
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   459
		public void registerDataSetObserver(DataSetObserver observer) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   460
			observers.add(observer);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   461
		}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   462
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   463
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   464
		public void unregisterDataSetObserver(DataSetObserver observer) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   465
			observers.remove(observer);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   466
		}
42
a0baf41c24a1 Ajout de la partie de barbu. Mais c'est en dur.
marseille@KungFuh
parents: 41
diff changeset
   467
	}
22
280112cd9602 Reorganisation des fichiers de linterface.
marseille@marseille-desktop
parents:
diff changeset
   468
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   469
	private class BeemServiceConnection implements ServiceConnection {
60
aa70a805da17 Ajout de nombreux icones pour la gestion des status.
marseille@KungFuh
parents: 59
diff changeset
   470
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   471
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   472
		public void onServiceConnected(ComponentName name, IBinder service) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   473
			xmppFacade = IXmppFacade.Stub.asInterface(service);
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   474
			try {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   475
				mRoster = xmppFacade.getRoster();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   476
				if (mRoster != null) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   477
					mRoster.addRosterListener(new BeemRosterListener());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   478
					buildContactList(mRoster.getContactList());
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   479
				}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   480
			} catch (RemoteException e) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   481
				e.printStackTrace();
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   482
			}
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   483
		}
191
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 185
diff changeset
   484
250
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   485
		@Override
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   486
		public void onServiceDisconnected(ComponentName name) {
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   487
			xmppFacade = null;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   488
			mRoster = null;
bce0846bc3ed Bug #178
nikita@nikita-lab
parents: 241
diff changeset
   489
		}
191
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 185
diff changeset
   490
	}
184
e9d73490be9b Ajout du message d'etat dans la contact list
marseille
parents: 175 179
diff changeset
   491
}