Merge
authorJ. Da Silva <dasilvj@gmail.com>
Fri, 26 Jun 2009 09:39:19 +0200
changeset 308 9236b57675c9
parent 307 78ce8be73f47 (current diff)
parent 303 5427deeda4e0 (diff)
child 309 5c39c01e2a42
Merge
AndroidManifest.xml
src/com/beem/project/beem/service/Contact.java
src/com/beem/project/beem/ui/ContactList.java
--- a/AndroidManifest.xml	Thu Jun 25 12:24:16 2009 +0200
+++ b/AndroidManifest.xml	Fri Jun 26 09:39:19 2009 +0200
@@ -35,6 +35,6 @@
 	<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
 	<uses-permission android:name="com.beem.project.beem.BEEM_SERVICE"></uses-permission>
 	<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
-	<uses-sdk android:minSdkVersion="2"></uses-sdk>
+	<uses-sdk android:minSdkVersion="3"></uses-sdk>
 
 </manifest> 
--- a/src/com/beem/project/beem/service/RosterAdapter.java	Thu Jun 25 12:24:16 2009 +0200
+++ b/src/com/beem/project/beem/service/RosterAdapter.java	Fri Jun 26 09:39:19 2009 +0200
@@ -3,11 +3,10 @@
  */
 package com.beem.project.beem.service;
 
+
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.jivesoftware.smack.Roster;
 import org.jivesoftware.smack.RosterEntry;
@@ -33,8 +32,6 @@
     private Roster mAdaptee;
     private RemoteCallbackList<IBeemRosterListener> mRemoteRosListeners = new RemoteCallbackList<IBeemRosterListener>();
 
-    private Map<String, Contact> mContacts = new HashMap<String, Contact>();
-
     private RosterListenerAdapter mRosterListener = new RosterListenerAdapter();
 
     /**
@@ -44,13 +41,6 @@
     public RosterAdapter(final Roster roster) {
 	mAdaptee = roster;
 	roster.addRosterListener(mRosterListener);
-	for (RosterEntry entry : roster.getEntries()) {
-	    String user = StringUtils.parseBareAddress(entry.getUser());
-	    if (!mContacts.containsKey(user)) {
-		Contact c = getContactFromRosterEntry(entry);
-		mContacts.put(user, c);
-	    }
-	}
     }
 
     /**
@@ -67,20 +57,13 @@
      */
     @Override
     public Contact addContact(String user, String name, String[] groups) throws RemoteException {
-	Contact res = null;
 	RosterEntry contact = mAdaptee.getEntry(user);
-	if (contact != null) {
-	    res = mContacts.get(user);
-	} else {
-	    try {
-		mAdaptee.createEntry(user, name, groups);
-		contact = mAdaptee.getEntry(user);
-		res = new Contact(user);
-		mContacts.put(user, res);
-	    } catch (XMPPException e) {
-		Log.e(TAG, "Error while adding new contact", e);
-		return null;
-	    }
+	try {
+	    mAdaptee.createEntry(user, name, groups);
+	    contact = mAdaptee.getEntry(user);
+	} catch (XMPPException e) {
+	    Log.e(TAG, "Error while adding new contact", e);
+	    return null;
 	}
 	if (groups != null) {
 	    for (String groupStr : groups) {
@@ -92,11 +75,11 @@
 		    group.addEntry(contact);
 		} catch (XMPPException e) {
 		    e.printStackTrace();
+		    return null;
 		}
-		res.addGroup(groupStr);
 	    }		
 	}
-	return res;
+	return getContactFromRosterEntry(contact);
     }
 
     /**
@@ -107,10 +90,8 @@
 	try {
 	    RosterEntry entry = mAdaptee.getEntry(contact.getJID());
 	    if (entry.getGroups().size() == 0) {
-		mContacts.remove(contact.getJID());
 		mAdaptee.removeEntry(entry);
 	    } else {
-		mContacts.get(contact.getJID()).delGroup(group);
 		mAdaptee.getGroup(group).removeEntry(entry);
 		mRosterListener.onEntryDeleteFromGroup(group, contact.getJID());
 	    }
@@ -124,8 +105,11 @@
      */
     @Override
     public void createGroup(String groupname) throws RemoteException {
-	if (!mAdaptee.contains(groupname))
+	try {
 	    mAdaptee.createGroup(groupname);
+	} catch (IllegalArgumentException e) {
+	    //pas grave, plus simple a gerer comme ca.
+	}
     }
 
     /**
@@ -133,7 +117,9 @@
      */
     @Override
     public Contact getContact(String jid) throws RemoteException {
-	return mContacts.get(jid);
+	if (mAdaptee.contains(jid))
+	    return getContactFromRosterEntry(mAdaptee.getEntry(jid));
+	return null;
     }
 
     /**
@@ -141,9 +127,11 @@
      */
     @Override
     public List<Contact> getContactList() throws RemoteException {
-	List<Contact> res = new ArrayList<Contact>();
-	res.addAll(mContacts.values());
-	return res;
+	List<Contact> coList= new ArrayList<Contact> (mAdaptee.getEntries().size());
+	for(RosterEntry entry: mAdaptee.getEntries()){
+	    coList.add(getContactFromRosterEntry(entry));
+	}
+	return coList;
     }
 
     /**
@@ -173,7 +161,6 @@
      */
     @Override
     public void setContactName(String jid, String name) throws RemoteException {
-	mContacts.get(jid).setName(name);
 	mAdaptee.getEntry(jid).setName(name);
     }
 
@@ -287,16 +274,6 @@
 	@Override
 	public void presenceChanged(Presence presence) {
 	    Log.i(TAG, "presence Changed");
-	    String user = StringUtils.parseBareAddress(presence.getFrom());
-	    Contact c = mContacts.get(StringUtils.parseBareAddress(user));
-	    if (c == null) {
-		c = new Contact(user);
-		mContacts.put(user, c);
-	    }
-	    c.addRes(StringUtils.parseResource(presence.getFrom()));
-	    c.setStatus(mAdaptee.getPresence(presence.getFrom()));
-	    c.setMsgState(presence.getStatus());
-	    c.setName(mAdaptee.getEntry(user).getName());
 	    /* redispatch vers les IBeemRosterListener */
 	    final int n = mRemoteRosListeners.beginBroadcast();
 
--- a/src/com/beem/project/beem/ui/ContactList.java	Thu Jun 25 12:24:16 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactList.java	Fri Jun 26 09:39:19 2009 +0200
@@ -171,15 +171,17 @@
 
 	@Override
 	public void onEntriesAdded(List<String> addresses) throws RemoteException {
-	    Log.d("CONTACTLIST", "DEBUG - ONENTRIESADDED()");
+	    Log.d("CONTACTLIST", "DEBUG - ONENTRIESADDED()"+ addresses.size());
 	    for (String str : addresses) {
 		Contact curContact = mRoster.getContact(str);
+		Log.d("CONTACTLIST", "DEBUG - ONENTRIESADDED() group size " + curContact.getGroups().size() );
 		for (String group : curContact.getGroups()) {
 		    if (!groupMap.containsKey(group)) {
 			groupMap.put(group, new ArrayList<Contact>());
 			groupName.add(group);
 		    }
 		    try {
+			Log.d("CONTACTLIST", "DEBUG - ONENTRIESADD");
 			groupMap.get(group).add(curContact);
 		    } catch (NullPointerException e) {
 			Log.e(TAG, "Failed to find group in groupMap", e);
@@ -215,6 +217,7 @@
 		    if (!groupMap.containsKey(group)) {
 			groupMap.put(group, new ArrayList<Contact>());
 			groupName.add(group);
+			Log.d("CONTACTLIST", "DEBUG - ONENTRIESUPDATED() found");
 			groupMap.get(group).add(curContact);
 		    } else {
 			boolean found = false;
@@ -224,8 +227,10 @@
 				break;
 			    }
 			}
-			if (!found)
+			if (!found) {
+			    Log.d("CONTACTLIST", "DEBUG - ONENTRIESUPDATED() not found");
 			    groupMap.get(group).add(curContact);
+			}
 		    }
 		}
 	    }
@@ -352,13 +357,18 @@
 			break;
 		    default:
 			imageDrawable = getResources().getDrawable(R.drawable.error);
-			break;
+		    break;
 		}
 		imgV.setImageDrawable(imageDrawable);
-
-		if (v != null) {
-		    v.setText(curContact.getName());
+		
+		String mContactName = curContact.getName();
+		if ("".equals(mContactName)) {
+		    mContactName = curContact.getJID();
+		    mContactName = StringUtils.parseName(mContactName);
+		    if ("".equals(mContactName))
+			mContactName = curContact.getJID();
 		}
+		v.setText(mContactName);
 
 		v = (TextView) view.findViewById(R.id.contactlistmsgperso);
 		if (v != null) {