Mise en place des alias
authormarseille@marseille-desktop
Fri, 22 May 2009 18:06:34 +0200
changeset 209 f5b9da8365f5
parent 208 6be326cfb621
child 210 2a52f2a67a21
Mise en place des alias
res/layout/contactdialog.xml
res/values/strings.xml
src/com/beem/project/beem/service/Contact.java
src/com/beem/project/beem/service/RosterAdapter.java
src/com/beem/project/beem/service/aidl/IRoster.aidl
src/com/beem/project/beem/ui/ContactDialog.java
src/com/beem/project/beem/ui/ContactList.java
--- a/res/layout/contactdialog.xml	Fri May 22 16:55:36 2009 +0200
+++ b/res/layout/contactdialog.xml	Fri May 22 18:06:34 2009 +0200
@@ -4,18 +4,18 @@
 	android:layout_height="fill_parent">
 
 	<Button android:id="@+id/CDChat" android:layout_width="fill_parent"
-		android:layout_height="wrap_content" android:text="Chat" />
+		android:layout_height="wrap_content" android:text="@string/CDChat" />
 
 	<Button android:id="@+id/CDAlias" android:layout_width="fill_parent"
-		android:layout_height="wrap_content" android:text="Alias" />
+		android:layout_height="wrap_content" android:text="@string/CDAlias" />
 
 	<Button android:id="@+id/CDGroup" android:layout_width="fill_parent"
-		android:layout_height="wrap_content" android:text="Change group" />
+		android:layout_height="wrap_content" android:text="@string/CDGroup" />
 
 	<Button android:id="@+id/CDResend" android:layout_width="fill_parent"
-		android:layout_height="wrap_content" android:text="Resend suscription" />
+		android:layout_height="wrap_content" android:text="@string/CDResend" />
 
 	<Button android:id="@+id/CDInfos" android:layout_width="fill_parent"
-		android:layout_height="wrap_content" android:text="User infos" />
+		android:layout_height="wrap_content" android:text="@string/CDInfos" />
 
 </LinearLayout>
\ No newline at end of file
--- a/res/values/strings.xml	Fri May 22 16:55:36 2009 +0200
+++ b/res/values/strings.xml	Fri May 22 18:06:34 2009 +0200
@@ -52,6 +52,13 @@
 	<string name="CLSLogin">Login:</string>
 	<string name="CLSOkButton">Ok</string>
 	
+	<!--  ContactDialog class -->
+	<string name="CDChat">Chat</string>
+	<string name="CDAlias">Alias</string>
+	<string name="CDGroup">Change group</string>
+	<string name="CDResend">Resend suscription</string>
+	<string name="CDInfos">User infos</string>
+	
 	<!-- AccountCreation class -->
 	<string name="ACLogin">Login:</string>
 	<string name="ACEmail">Email:</string>
--- a/src/com/beem/project/beem/service/Contact.java	Fri May 22 16:55:36 2009 +0200
+++ b/src/com/beem/project/beem/service/Contact.java	Fri May 22 18:06:34 2009 +0200
@@ -27,6 +27,7 @@
     private int mID;
     private int mStatus;
     private String mJID;
+    private String mName;
     private String mMsgState;
     private List<String> mRes;
     private List<String> mGroups;
@@ -60,6 +61,7 @@
      */
     public Contact(final String jid) {
 	mJID = jid;
+	mName = jid;
 	mStatus = Status.CONTACT_STATUS_DISCONNECT;
 	mRes = new ArrayList<String>();
 	mRes.add("none");
@@ -74,6 +76,7 @@
 	mID = in.readInt();
 	mStatus = in.readInt();
 	mJID = in.readString();
+	mName = in.readString();
 	mMsgState = in.readString();
 	mRes = new ArrayList<String>();
 	mGroups = new ArrayList<String>();
@@ -89,6 +92,7 @@
 	dest.writeInt(mID);
 	dest.writeInt(mStatus);
 	dest.writeString(mJID);
+	dest.writeString(mName);
 	dest.writeString(mMsgState);
 	dest.writeStringList(getMRes());
 	dest.writeStringList(getGroups());
@@ -242,5 +246,20 @@
      */
     public List<String> getGroups() {
 	return mGroups;
+    }
+
+    /**
+     * @param mName the mName to set
+     */
+    public void setName(String mName) {
+	if (mName != null)
+	    this.mName = mName;
+    }
+
+    /**
+     * @return the mName
+     */
+    public String getName() {
+	return mName;
     }    
 }
--- a/src/com/beem/project/beem/service/RosterAdapter.java	Fri May 22 16:55:36 2009 +0200
+++ b/src/com/beem/project/beem/service/RosterAdapter.java	Fri May 22 18:06:34 2009 +0200
@@ -49,6 +49,7 @@
 		Contact c = new Contact(user);
 		c.setStatus(roster.getPresence(user));
 		c.setGroups(entry.getGroups());
+		c.setName(entry.getName());
 		mContacts.put(user, c);
 	    }
 	}
@@ -72,7 +73,7 @@
 	    Contact res = new Contact(user);
 	    mContacts.put(user, res);
 	    for (String group : groups) {
-		//mAdaptee.createGroup(group);
+		// mAdaptee.createGroup(group);
 		res.addGroup(group);
 	    }
 	    return res;
@@ -80,7 +81,7 @@
 	    Log.e(TAG, "Error while adding new contact", e);
 	    return null;
 	}
-    }    
+    }
 
     /**
      * {@inheritDoc}
@@ -117,6 +118,15 @@
     }
 
     /**
+     * 
+     */
+    @Override
+    public void setContactName(String jid, String name) throws RemoteException {
+	mContacts.get(jid).setName(name);
+	mAdaptee.getEntry(jid).setName(name);
+    }
+
+    /**
      * {@inheritDoc}
      */
     @Override
@@ -225,6 +235,7 @@
 	    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/service/aidl/IRoster.aidl	Fri May 22 16:55:36 2009 +0200
+++ b/src/com/beem/project/beem/service/aidl/IRoster.aidl	Fri May 22 18:06:34 2009 +0200
@@ -10,6 +10,7 @@
     void deleteContact(in Contact contact);
     
     Contact getContact(in String jid);
+    void setContactName(in String jid, in String name);
      
     void createGroup(in String groupname);
     
--- a/src/com/beem/project/beem/ui/ContactDialog.java	Fri May 22 16:55:36 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactDialog.java	Fri May 22 18:06:34 2009 +0200
@@ -15,6 +15,7 @@
 import com.beem.project.beem.R;
 import com.beem.project.beem.service.Contact;
 import com.beem.project.beem.service.PresenceAdapter;
+import com.beem.project.beem.service.aidl.IRoster;
 import com.beem.project.beem.service.aidl.IXmppFacade;
 
 public class ContactDialog extends Dialog {
@@ -25,16 +26,16 @@
     private IXmppFacade mService;
 
     public ContactDialog(final Context context, Contact curContact) {
-	super(context);	
-	mContext = context;	
-	
+	super(context);
+	mContext = context;
+
 	setContentView(R.layout.contactdialog);
 	mContact = curContact;
-	setTitle(curContact.getJID());	
+	setTitle(curContact.getJID());
 
 	Button chat = (Button) findViewById(R.id.CDChat);
 	chat.setOnClickListener(new chatListener());
-	Button alias= (Button) findViewById(R.id.CDAlias);
+	Button alias = (Button) findViewById(R.id.CDAlias);
 	alias.setOnClickListener(new aliasListener());
 	Button group = (Button) findViewById(R.id.CDGroup);
 	group.setOnClickListener(new groupListener());
@@ -43,7 +44,7 @@
 	Button infos = (Button) findViewById(R.id.CDInfos);
 	infos.setOnClickListener(new infosListener());
     }
-    
+
     public void initService() {
 	mService = BeemApplication.getApplication(ContactDialog.this.getOwnerActivity()).getXmppFacade();
     }
@@ -65,7 +66,11 @@
 
 	@Override
 	public void onClick(View v) {
-	    // TODO Auto-generated method stub
+	    try {
+		mService.getRoster().setContactName(mContact.getJID(), "new name");
+	    } catch (RemoteException e) {
+		Log.e(TAG, "alias", e);
+	    }
 	    dismiss();
 	}
 
--- a/src/com/beem/project/beem/ui/ContactList.java	Fri May 22 16:55:36 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactList.java	Fri May 22 18:06:34 2009 +0200
@@ -7,8 +7,10 @@
 
 import org.jivesoftware.smack.util.StringUtils;
 
-
+import android.app.AlertDialog;
+import android.app.Dialog;
 import android.app.ExpandableListActivity;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.database.DataSetObserver;
@@ -29,6 +31,7 @@
 import android.widget.ExpandableListAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import com.beem.project.beem.BeemApplication;
 import com.beem.project.beem.R;
@@ -82,13 +85,13 @@
 		}
 		callbackShowContactList();
 	    }
-	});	
-    }    
+	});
+    }
 
     @Override
     protected void onDestroy() {
 	mBeemApplication.unbindBeemService();
-	super.onDestroy();	
+	super.onDestroy();
     }
 
     private void callbackShowContactList() {
@@ -155,7 +158,7 @@
     }
 
     private void buildContactList(List<Contact> listContact) {
-	mListContact = listContact;	
+	mListContact = listContact;
 	for (Contact contact : listContact) {
 	    for (String group : contact.getGroups()) {
 		if (!groupMap.containsKey(group)) {
@@ -222,40 +225,38 @@
 	}
 
 	void createDialog(Contact contact) {
-	    ContactDialog dialogContact= new ContactDialog(ContactList.this, contact);
+	    ContactDialog dialogContact = new ContactDialog(ContactList.this, contact);
 	    dialogContact.setOwnerActivity(ContactList.this);
 	    dialogContact.initService();
 	    dialogContact.show();
 	}
 
 	class MyOnLongClickListener implements OnLongClickListener {
+	    private Contact mContact;
+
+	    public MyOnLongClickListener(Contact contact) {
+		mContact = contact;
+	    }
+
 	    @Override
 	    public boolean onLongClick(View v) {
-		TextView jidTextView = (TextView) v.findViewById(R.id.contactlistpseudo);
-		String jid = jidTextView.getText().toString();
-		for (Contact curContact : mListContact) {
-		    if (jid.equals(curContact.getJID())) {
-			createDialog(curContact);
-			break;
-		    }
-		}
+		createDialog(mContact);
 		return true;
 	    }
 	}
 
 	class MyOnClickListener implements OnClickListener {
+	    private Contact mContact;
+
+	    public MyOnClickListener(Contact contact) {
+		mContact = contact;
+	    }
+
 	    @Override
 	    public void onClick(View v) {
-		TextView jidTextView = (TextView) v.findViewById(R.id.contactlistpseudo);
-		String jid = jidTextView.getText().toString();
-		for (Contact curContact : mListContact) {
-		    if (jid.equals(curContact.getJID())) {
-			Intent i = new Intent(ContactList.this, SendIM.class);
-			i.putExtra("contact", curContact);
-			startActivity(i);
-			break;
-		    }
-		}
+		Intent i = new Intent(ContactList.this, SendIM.class);
+		i.putExtra("contact", mContact);
+		startActivity(i);
 	    }
 
 	}
@@ -269,10 +270,11 @@
 	    } else {
 		v = convertView;
 	    }
-	    bindView(v, groupMap.get(groupName.get(groupPosition)).get(childPosition));
+	    Contact contact = groupMap.get(groupName.get(groupPosition)).get(childPosition);
+	    bindView(v, contact);
 
-	    v.setOnLongClickListener(new MyOnLongClickListener());
-	    v.setOnClickListener(new MyOnClickListener());
+	    v.setOnLongClickListener(new MyOnLongClickListener(contact));
+	    v.setOnClickListener(new MyOnClickListener(contact));
 	    return v;
 	}
 
@@ -391,7 +393,7 @@
 
 		TextView v = (TextView) view.findViewById(R.id.contactlistpseudo);
 		if (v != null) {
-		    v.setText(curContact.getJID());
+		    v.setText(curContact.getName());
 		}
 
 		v = (TextView) view.findViewById(R.id.contactlistmsgperso);
@@ -413,9 +415,9 @@
 
 	@Override
 	public void onEntriesAdded(List<String> addresses) throws RemoteException {
-	    for (String str: addresses) {
+	    for (String str : addresses) {
 		Contact curContact = mRoster.getContact(str);
-		for (String group: curContact.getGroups()) {
+		for (String group : curContact.getGroups()) {
 		    if (!groupMap.containsKey(group)) {
 			groupMap.put(group, new ArrayList<Contact>());
 			groupName.add(group);
@@ -438,13 +440,13 @@
 	@Override
 	public void onEntriesDeleted(List<String> addresses) throws RemoteException {
 	    for (List<Contact> cList : groupMap.values()) {
-		for (Contact curContact:cList) {
-		    for (String addr:addresses) {
+		for (Contact curContact : cList) {
+		    for (String addr : addresses) {
 			if (addr.equals(curContact.getJID())) {
 			    cList.remove(curContact);
 			    if (cList.isEmpty()) {
 				groupMap.values().remove(cList);
-				}
+			    }
 			}
 		    }
 		}
@@ -459,20 +461,20 @@
 
 	@Override
 	public void onEntriesUpdated(List<String> addresses) throws RemoteException {
-	    for (String str: addresses) {
+	    for (String str : addresses) {
 		Contact curContact = mRoster.getContact(str);
-		for (String group: curContact.getGroups()) {
+		for (String group : curContact.getGroups()) {
 		    if (!groupMap.containsKey(group)) {
 			groupMap.put(group, new ArrayList<Contact>());
 			groupName.add(group);
 			groupMap.get(group).add(curContact);
 		    } else {
 			boolean found = false;
-			for (Contact tempContact:groupMap.get(group)) {
-			    if (tempContact.getJID().equals(str)) {
+			for (Contact tempContact : groupMap.get(group)) {
+			    if (tempContact.getJID() == str) {
 				curContact = tempContact;
 				found = true;
-				break ;
+				break;
 			    }
 			}
 			if (!found) {