Feature #183
authornikita@localhost
Tue, 23 Jun 2009 13:34:47 +0200
changeset 269 d78115a6b45b
parent 262 0548b407992a
child 270 728e2d6b4e2b
Feature #183 des petits trucs en plus, ajout du bouton "block user", il ne faut pas le toucher, il y a un bug dessus encore
res/layout/contactdialog.xml
res/values/strings.xml
src/com/beem/project/beem/BeemService.java
src/com/beem/project/beem/service/Contact.java
src/com/beem/project/beem/service/RosterAdapter.java
src/com/beem/project/beem/service/XmppConnectionAdapter.java
src/com/beem/project/beem/service/XmppFacade.java
src/com/beem/project/beem/service/aidl/IXmppFacade.aidl
src/com/beem/project/beem/ui/ContactDialog.java
--- a/res/layout/contactdialog.xml	Mon Jun 22 18:07:29 2009 +0200
+++ b/res/layout/contactdialog.xml	Tue Jun 23 13:34:47 2009 +0200
@@ -18,4 +18,7 @@
 	<Button android:id="@+id/CDInfos" android:layout_width="fill_parent"
 		android:layout_height="wrap_content" android:text="@string/CDInfos" />
 
+	<Button android:id="@+id/CDBlock" android:layout_width="fill_parent"
+		android:layout_height="wrap_content" android:text="@string/CDBlock" />
+
 </LinearLayout>
\ No newline at end of file
--- a/res/values/strings.xml	Mon Jun 22 18:07:29 2009 +0200
+++ b/res/values/strings.xml	Tue Jun 23 13:34:47 2009 +0200
@@ -58,6 +58,7 @@
 	<string name="CDGroup">Change group</string>
 	<string name="CDResend">Resend suscription</string>
 	<string name="CDInfos">User infos</string>
+	<string name="CDBlock">Block user</string>
 	
 	<!-- AccountCreation class -->
 	<string name="ACLogin">Login:</string>
--- a/src/com/beem/project/beem/BeemService.java	Mon Jun 22 18:07:29 2009 +0200
+++ b/src/com/beem/project/beem/BeemService.java	Tue Jun 23 13:34:47 2009 +0200
@@ -2,6 +2,7 @@
 
 import org.jivesoftware.smack.ConnectionConfiguration;
 import org.jivesoftware.smack.PacketListener;
+import org.jivesoftware.smack.PrivacyListManager;
 import org.jivesoftware.smack.Roster;
 import org.jivesoftware.smack.XMPPConnection;
 import org.jivesoftware.smack.Roster.SubscriptionMode;
@@ -233,7 +234,7 @@
 	else
 	    mService = null;
 	initConnectionConfig();
-	mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+	mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);	
 	mConnection = new XmppConnectionAdapter(mConnectionConfiguration, mLogin, mPassword, this);
 	initRosterRequestListener();
 	mBind = new XmppFacade(mConnection, this);
--- a/src/com/beem/project/beem/service/Contact.java	Mon Jun 22 18:07:29 2009 +0200
+++ b/src/com/beem/project/beem/service/Contact.java	Tue Jun 23 13:34:47 2009 +0200
@@ -29,16 +29,16 @@
      */
     public static final Parcelable.Creator<Contact> CREATOR = new Parcelable.Creator<Contact>() {
 
-	                                                        @Override
-	                                                        public Contact createFromParcel(Parcel source) {
-		                                                    return new Contact(source);
-	                                                        }
+	@Override
+	public Contact createFromParcel(Parcel source) {
+	    return new Contact(source);
+	}
 
-	                                                        @Override
-	                                                        public Contact[] newArray(int size) {
-		                                                    return new Contact[size];
-	                                                        }
-	                                                    };
+	@Override
+	public Contact[] newArray(int size) {
+	    return new Contact[size];
+	}
+    };
 
     private int                                     mID;
     private int                                     mStatus;
--- a/src/com/beem/project/beem/service/RosterAdapter.java	Mon Jun 22 18:07:29 2009 +0200
+++ b/src/com/beem/project/beem/service/RosterAdapter.java	Tue Jun 23 13:34:47 2009 +0200
@@ -5,9 +5,7 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -32,276 +30,274 @@
  */
 public class RosterAdapter extends com.beem.project.beem.service.aidl.IRoster.Stub {
 
-	/**
-	 * Listener for the roster events. It will call the remote listeners registered.
-	 * 
-	 * @author darisk
-	 */
-	private class RosterListenerAdapter implements RosterListener {
-
-		/**
-		 * Constructor.
-		 */
-		public RosterListenerAdapter() {
-			// TODO Auto-generated constructor stub
-		}
-
-		/**
-		 * {@inheritDoc}
-		 */
-		@Override
-		public void entriesAdded(Collection<String> addresses) {
-			Log.i(TAG, "Ajout de l'entry");
-			final int n = mRemoteRosListeners.beginBroadcast();
-
-			List<String> tab = new ArrayList<String>();
-			tab.addAll(addresses);
-			for (int i = 0; i < n; i++) {
-				IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
-				try {					
-					listener.onEntriesAdded(tab);
-				} catch (RemoteException e) {
-					Log.w(TAG, "Error while adding roster entries", e);
-				}
-			}
-			mRemoteRosListeners.finishBroadcast();
-		}
-
-		/**
-		 * {@inheritDoc}
-		 */
-		@Override
-		public void entriesDeleted(Collection<String> addresses) {
-			Log.i(TAG, "Suppression de l'entry");
-			final int n = mRemoteRosListeners.beginBroadcast();
-
-			List<String> tab = new ArrayList<String>();
-			tab.addAll(addresses);
-			for (int i = 0; i < n; i++) {
-				IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
-				try {					
-					listener.onEntriesDeleted(tab);
-				} catch (RemoteException e) {
-					Log.w(TAG, "Error while deleting roster entries", e);
-				}
-			}
-			mRemoteRosListeners.finishBroadcast();
-		}
-
-		/**
-		 * {@inheritDoc}
-		 */
-		@Override
-		public void entriesUpdated(Collection<String> addresses) {
-			Log.d(TAG, "Update de l'entry");
-			final int n = mRemoteRosListeners.beginBroadcast();
-
-			List<String> tab = new ArrayList<String>();
-			tab.addAll(addresses);
-			for (int i = 0; i < n; i++) {
-				IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
-				try {					
-					listener.onEntriesUpdated(tab);
-				} catch (RemoteException e) {
-					Log.w(TAG, "Error while updating roster entries", e);
-				}
-			}
-			mRemoteRosListeners.finishBroadcast();
-		}
-
-		/**
-		 * {@inheritDoc}
-		 */
-		@Override
-		public void presenceChanged(Presence presence) {
-			Log.i(TAG, "Changement de Presence");
-			String user = StringUtils.parseBareAddress(presence.getFrom());
-			Log.d(TAG, "User : " + user);
-			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();
-
-			for (int i = 0; i < n; i++) {
-				IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
-				try {
-					listener.onPresenceChanged(new PresenceAdapter(presence));
-				} catch (RemoteException e) {
-					// The RemoteCallbackList will take care of removing the
-					// dead listeners.
-					Log.w(TAG, "Error while updating roster entries", e);
-				}
-			}
-			mRemoteRosListeners.finishBroadcast();
-		}
-	}
-
-	private static final String                     TAG                 = "RosterAdapter";
-	private Roster                                  mAdaptee;
-	private RemoteCallbackList<IBeemRosterListener> mRemoteRosListeners = new RemoteCallbackList<IBeemRosterListener>();
-
-	private Map<String, Contact>                    mContacts           = new HashMap<String, Contact>();
-
-	private RosterListenerAdapter                   mRosterListener     = new RosterListenerAdapter();
+    /**
+     * Listener for the roster events. It will call the remote listeners registered.
+     * 
+     * @author darisk
+     */
+    private class RosterListenerAdapter implements RosterListener {
 
 	/**
 	 * Constructor.
-	 * 
-	 * @param roster
-	 *            the roster to adapt
+	 */
+	public RosterListenerAdapter() {
+	    // TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public void entriesAdded(Collection<String> addresses) {
+	    Log.i(TAG, "Ajout de l'entry");
+	    final int n = mRemoteRosListeners.beginBroadcast();
+
+	    List<String> tab = new ArrayList<String>();
+	    tab.addAll(addresses);
+	    for (int i = 0; i < n; i++) {
+		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
+		try {					
+		    listener.onEntriesAdded(tab);
+		} catch (RemoteException e) {
+		    Log.w(TAG, "Error while adding roster entries", e);
+		}
+	    }
+	    mRemoteRosListeners.finishBroadcast();
+	}
+
+	/**
+	 * {@inheritDoc}
 	 */
-	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 = new Contact(user);
-				c.setStatus(roster.getPresence(user));
-				c.setGroups(entry.getGroups());
-				c.setName(entry.getName());
-				mContacts.put(user, c);
-			}
+	@Override
+	public void entriesDeleted(Collection<String> addresses) {
+	    Log.i(TAG, "Suppression de l'entry");
+	    final int n = mRemoteRosListeners.beginBroadcast();
+
+	    List<String> tab = new ArrayList<String>();
+	    tab.addAll(addresses);
+	    for (int i = 0; i < n; i++) {
+		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
+		try {					
+		    listener.onEntriesDeleted(tab);
+		} catch (RemoteException e) {
+		    Log.w(TAG, "Error while deleting roster entries", e);
 		}
+	    }
+	    mRemoteRosListeners.finishBroadcast();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public void entriesUpdated(Collection<String> addresses) {
+	    Log.d(TAG, "Update de l'entry");
+	    final int n = mRemoteRosListeners.beginBroadcast();
+
+	    List<String> tab = new ArrayList<String>();
+	    tab.addAll(addresses);
+	    for (int i = 0; i < n; i++) {
+		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
+		try {					
+		    listener.onEntriesUpdated(tab);
+		} catch (RemoteException e) {
+		    Log.w(TAG, "Error while updating roster entries", e);
+		}
+	    }
+	    mRemoteRosListeners.finishBroadcast();
 	}
 
 	/**
 	 * {@inheritDoc}
 	 */
 	@Override
-	public void addRosterListener(IBeemRosterListener listen) throws RemoteException {
-		if (listen != null)
-			mRemoteRosListeners.register(listen);
+	public void presenceChanged(Presence presence) {
+	    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();
+
+	    for (int i = 0; i < n; i++) {
+		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
+		try {
+		    listener.onPresenceChanged(new PresenceAdapter(presence));
+		} catch (RemoteException e) {
+		    // The RemoteCallbackList will take care of removing the
+		    // dead listeners.
+		    Log.w(TAG, "Error while updating roster entries", e);
+		}
+	    }
+	    mRemoteRosListeners.finishBroadcast();
 	}
+    }
+
+    private static final String                     TAG                 = "RosterAdapter";
+    private Roster                                  mAdaptee;
+    private RemoteCallbackList<IBeemRosterListener> mRemoteRosListeners = new RemoteCallbackList<IBeemRosterListener>();
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@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);
-			for (String groupStr : groups) {
-				boolean found = false;
-				for (RosterGroup group: mAdaptee.getGroups()) {
-					if (group.getName().equals(groupStr) && !group.contains(contact)) {
-						try {
-							group.addEntry(contact);
-							res.addGroup(groupStr);
-							found = true;
-						} catch (XMPPException e) {
-							e.printStackTrace();
-						}
-					}
-				}
-				if (!found) {
-					try {
-						mAdaptee.createGroup(groupStr).addEntry(contact);
-					} catch (XMPPException e) {
-						e.printStackTrace();
-					} catch (IllegalArgumentException e) {
-					}
-					res.addGroup(groupStr);
-				}
-			}
-		} else {
-			try {
-				mAdaptee.createEntry(user, name, groups);
-				res = new Contact(user);
-				mContacts.put(user, res);
-				for (String groupStr : groups) {
-					try {
-						mAdaptee.createGroup(groupStr);
-					} catch (IllegalArgumentException e) {
-						//e.printStackTrace();
-					}
-					res.addGroup(groupStr);
-				}
-			} catch (XMPPException e) {
-				Log.e(TAG, "Error while adding new contact", e);
-				return null;
-			}
-		}
-		return res;
+    private Map<String, Contact>                    mContacts           = new HashMap<String, Contact>();
+
+    private RosterListenerAdapter                   mRosterListener     = new RosterListenerAdapter();
+
+    /**
+     * Constructor.
+     * 
+     * @param roster
+     *            the roster to adapt
+     */
+    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 = new Contact(user);
+		c.setStatus(roster.getPresence(user));
+		c.setGroups(entry.getGroups());
+		c.setName(entry.getName());
+		mContacts.put(user, c);
+	    }
 	}
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void addRosterListener(IBeemRosterListener listen) throws RemoteException {
+	if (listen != null)
+	    mRemoteRosListeners.register(listen);
+    }
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void createGroup(String groupname) throws RemoteException {
-		mAdaptee.createGroup(groupname);
+    /**
+     * {@inheritDoc}
+     */
+    @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);
+	    for (String groupStr : groups) {
+		boolean found = false;
+		for (RosterGroup group: mAdaptee.getGroups()) {
+		    if (group.getName().equals(groupStr) && !group.contains(contact)) {
+			try {
+			    group.addEntry(contact);
+			    res.addGroup(groupStr);
+			    found = true;
+			} catch (XMPPException e) {
+			    e.printStackTrace();
+			}
+		    }
+		}
+		if (!found) {
+		    try {
+			mAdaptee.createGroup(groupStr).addEntry(contact);
+		    } catch (XMPPException e) {
+			e.printStackTrace();
+		    } catch (IllegalArgumentException e) {
+		    }
+		    res.addGroup(groupStr);
+		}
+	    }
+	} else {
+	    try {
+		mAdaptee.createEntry(user, name, groups);
+		res = new Contact(user);
+		mContacts.put(user, res);
+		for (String groupStr : groups) {
+		    try {
+			mAdaptee.createGroup(groupStr);
+		    } catch (IllegalArgumentException e) {
+			//e.printStackTrace();
+		    }
+		    res.addGroup(groupStr);
+		}
+	    } catch (XMPPException e) {
+		Log.e(TAG, "Error while adding new contact", e);
+		return null;
+	    }
 	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void deleteContact(Contact contact) throws RemoteException {
-		mContacts.remove(contact.getJID());
-	}
+	return res;
+    }
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public Contact getContact(String jid) throws RemoteException {
-		return mContacts.get(jid);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public List<Contact> getContactList() throws RemoteException {
-		List<Contact> res = new ArrayList<Contact>();
-		res.addAll(mContacts.values());
-		return res;
-	}
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void createGroup(String groupname) throws RemoteException {
+	mAdaptee.createGroup(groupname);
+    }
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public List<String> getGroupsNames() throws RemoteException {
-		Collection<RosterGroup> groups = mAdaptee.getGroups();
-		ArrayList<String> result = new ArrayList<String>(groups.size());
-		for (RosterGroup rosterGroup : groups) {
-			result.add(rosterGroup.getName());
-		}
-		return result;
-	}
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void deleteContact(Contact contact) throws RemoteException {
+	mContacts.remove(contact.getJID());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Contact getContact(String jid) throws RemoteException {
+	return mContacts.get(jid);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public List<Contact> getContactList() throws RemoteException {
+	List<Contact> res = new ArrayList<Contact>();
+	res.addAll(mContacts.values());
+	return res;
+    }
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void removeRosterListener(IBeemRosterListener listen) throws RemoteException {
-		if (listen != null)
-			mRemoteRosListeners.unregister(listen);
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public List<String> getGroupsNames() throws RemoteException {
+	Collection<RosterGroup> groups = mAdaptee.getGroups();
+	ArrayList<String> result = new ArrayList<String>(groups.size());
+	for (RosterGroup rosterGroup : groups) {
+	    result.add(rosterGroup.getName());
 	}
+	return result;
+    }
 
-	/**
-	 * 
-	 */
-	@Override
-	public void setContactName(String jid, String name) throws RemoteException {
-		mContacts.get(jid).setName(name);
-		mAdaptee.getEntry(jid).setName(name);
-	}
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void removeRosterListener(IBeemRosterListener listen) throws RemoteException {
+	if (listen != null)
+	    mRemoteRosListeners.unregister(listen);
+    }
 
-	@Override
-	public PresenceAdapter getPresence(String jid) throws RemoteException {
-		return new PresenceAdapter(mAdaptee.getPresence(jid));
-	}
+    /**
+     * 
+     */
+    @Override
+    public void setContactName(String jid, String name) throws RemoteException {
+	mContacts.get(jid).setName(name);
+	mAdaptee.getEntry(jid).setName(name);
+    }
+
+    @Override
+    public PresenceAdapter getPresence(String jid) throws RemoteException {
+	return new PresenceAdapter(mAdaptee.getPresence(jid));
+    }
 
 }
--- a/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Mon Jun 22 18:07:29 2009 +0200
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Tue Jun 23 13:34:47 2009 +0200
@@ -35,7 +35,7 @@
     private String mLogin;
     private String mPassword;
     private RosterAdapter mRoster;
-    private PrivacyListAdapter mPrivacyList;
+    private PrivacyListManagerAdapter mPrivacyList;
     private BeemService mService;
     private RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners = new RemoteCallbackList<IBeemConnectionListener>();
 
@@ -111,15 +111,21 @@
     @Override
     public boolean connectSync() throws RemoteException {
 	try {
+	    try {
+		PrivacyListManager.getInstanceFor(mAdaptee);
+	    } catch (NullPointerException e){
+		Log.e(TAG, "pas normal", e);
+	    }
 	    mAdaptee.connect();
 	    mAdaptee.addConnectionListener(mConListener);
 	    mAdaptee.login(mLogin, mPassword, "BEEM");
 
 	    mChatManager = new BeemChatManager(mAdaptee.getChatManager(), mService);
-	    // TODO find why this cause a null pointer exception
+	    mPrivacyList = new PrivacyListManagerAdapter(mAdaptee);
+
 	    this.initFeatures(); // pour declarer les features xmpp qu'on supporte
-	    mPrivacyList = new PrivacyListAdapter(PrivacyListManager.getInstanceFor(mAdaptee));
 	    ChatStateManager.getInstance(mAdaptee);
+
 	    triggerAsynchronousConnectEvent();
 	    return true;
 	} catch (XMPPException e) {
@@ -165,7 +171,7 @@
 	Roster adap = mAdaptee.getRoster();
 	if (adap == null)
 	    return null;
-	mRoster = new RosterAdapter(adap);
+	mRoster = new RosterAdapter(adap);	
 	return mRoster;
     }
 
@@ -206,6 +212,19 @@
 	mConListener.onConnect();
     }
     /**
+     * @param mPrivacyList the mPrivacyList to set
+     */
+    public void setPrivacyList(PrivacyListManagerAdapter mPrivacyList) {
+	this.mPrivacyList = mPrivacyList;
+    }
+
+    /**
+     * @return the mPrivacyList
+     */
+    public PrivacyListManagerAdapter getPrivacyList() {
+	return mPrivacyList;
+    }
+    /**
      * Listener for XMPP connection events. It will calls the remote listeners for connexion events.
      * @author darisk
      */
@@ -223,6 +242,7 @@
 	@Override
 	public void connectionClosed() {
 	    mRoster = null;
+
 	    final int n = mRemoteConnListeners.beginBroadcast();
 
 	    for (int i = 0; i < n; i++) {
--- a/src/com/beem/project/beem/service/XmppFacade.java	Mon Jun 22 18:07:29 2009 +0200
+++ b/src/com/beem/project/beem/service/XmppFacade.java	Tue Jun 23 13:34:47 2009 +0200
@@ -117,4 +117,9 @@
 	presence2.setTo(presence.getTo());
 	mConnexion.getAdaptee().sendPacket(presence2);
     }
+
+    @Override
+    public void blockUser(String jid) throws RemoteException {
+	mConnexion.getPrivacyList().addBlockedUser(jid);
+    }
 }
--- a/src/com/beem/project/beem/service/aidl/IXmppFacade.aidl	Mon Jun 22 18:07:29 2009 +0200
+++ b/src/com/beem/project/beem/service/aidl/IXmppFacade.aidl	Tue Jun 23 13:34:47 2009 +0200
@@ -46,4 +46,5 @@
     
     void sendPresencePacket(in PresenceAdapter presence);
     
+    void blockUser(in String jid);
 }
--- a/src/com/beem/project/beem/ui/ContactDialog.java	Mon Jun 22 18:07:29 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactDialog.java	Tue Jun 23 13:34:47 2009 +0200
@@ -47,6 +47,8 @@
 	button.setOnClickListener(new resendListener());
 	button = (Button) findViewById(R.id.CDInfos);
 	button.setOnClickListener(new infosListener());
+	button = (Button) findViewById(R.id.CDBlock);
+	button.setOnClickListener(new blockListener());
 
 	mContext.bindService(new Intent(mContext, BeemService.class), mServConn, Service.BIND_AUTO_CREATE);
     }
@@ -63,6 +65,19 @@
 	}
 
     }
+    
+    class blockListener implements View.OnClickListener {
+
+	@Override
+	public void onClick(View v) {
+	    try {
+		xmppFacade.blockUser("beem.test@gmail.com");
+	    } catch (RemoteException e) {
+		// TODO Auto-generated catch block
+		e.printStackTrace();
+	    }	    
+	}	
+    }
 
     class chatListener implements View.OnClickListener {
 
@@ -80,8 +95,7 @@
     class groupListener implements View.OnClickListener {
 
 	@Override
-	public void onClick(View v) {
-	    // TODO Auto-generated method stub
+	public void onClick(View v) {	   
 	    dismiss();
 	}
 
@@ -90,8 +104,7 @@
     class infosListener implements View.OnClickListener {
 
 	@Override
-	public void onClick(View v) {
-	    // TODO Auto-generated method stub
+	public void onClick(View v) {	    
 	    dismiss();
 	}