* #25268 Faster contact list loading
* #26286 conference creation/suppression working
diff --git a/src/com/savoirfairelinux/sflphone/receivers/CallReceiver.java b/src/com/savoirfairelinux/sflphone/receivers/CallReceiver.java
index 78d3ebb..4642b54 100644
--- a/src/com/savoirfairelinux/sflphone/receivers/CallReceiver.java
+++ b/src/com/savoirfairelinux/sflphone/receivers/CallReceiver.java
@@ -57,7 +57,13 @@
 	        callback.incomingText(intent);
 	    } else if(intent.getAction().contentEquals(CallManagerCallBack.CALL_STATE_CHANGED)){
 	        callback.callStateChanged(intent);
-	    } else {
+	    } else if(intent.getAction().contentEquals(CallManagerCallBack.CONF_CREATED)){
+            callback.confCreated(intent);
+        }else if(intent.getAction().contentEquals(CallManagerCallBack.CONF_REMOVED)){
+            callback.confRemoved(intent);
+        }else if(intent.getAction().contentEquals(CallManagerCallBack.CONF_CHANGED)){
+            callback.confChanged(intent);
+        }else {
 	        Log.e(TAG, "Unknown action: "+intent.getAction());
 	    }
 
diff --git a/src/com/savoirfairelinux/sflphone/receivers/IncomingReceiver.java b/src/com/savoirfairelinux/sflphone/receivers/IncomingReceiver.java
index e3ac34f..536395f 100644
--- a/src/com/savoirfairelinux/sflphone/receivers/IncomingReceiver.java
+++ b/src/com/savoirfairelinux/sflphone/receivers/IncomingReceiver.java
@@ -1,17 +1,23 @@
 package com.savoirfairelinux.sflphone.receivers;
 
+import java.util.ArrayList;
+
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.RemoteException;
 import android.os.Vibrator;
 import android.util.Log;
+import android.widget.Toast;
 
 import com.savoirfairelinux.sflphone.interfaces.CallInterface;
 import com.savoirfairelinux.sflphone.model.CallContact;
+import com.savoirfairelinux.sflphone.model.Conference;
 import com.savoirfairelinux.sflphone.model.SipCall;
 import com.savoirfairelinux.sflphone.service.CallManagerCallBack;
 import com.savoirfairelinux.sflphone.service.ConfigurationManagerCallback;
+import com.savoirfairelinux.sflphone.service.ISipService.Stub;
 import com.savoirfairelinux.sflphone.service.SipService;
 
 public class IncomingReceiver extends BroadcastReceiver{
@@ -19,23 +25,31 @@
     static final String TAG = IncomingReceiver.class.getSimpleName();
 
     SipService callback;
+    Stub mBinder;
     
-    public IncomingReceiver(SipService client){
+    public IncomingReceiver(SipService client, Stub bind){
         callback = client;
+        mBinder = bind;
     }
     
     @Override
     public void onReceive(Context context, Intent intent) {
 
         if (intent.getAction().contentEquals(ConfigurationManagerCallback.ACCOUNT_STATE_CHANGED)) {
+            
             Log.i(TAG, "Received" + intent.getAction());
             callback.sendBroadcast(intent);
+            
         } else if (intent.getAction().contentEquals(ConfigurationManagerCallback.ACCOUNTS_CHANGED)) {
+            
             Log.i(TAG, "Received" + intent.getAction());
             callback.sendBroadcast(intent);
+            
         } else if (intent.getAction().contentEquals(CallManagerCallBack.INCOMING_TEXT)) {
+            
             Log.i(TAG, "Received" + intent.getAction());
             callback.sendBroadcast(intent);
+            
         } else if (intent.getAction().contentEquals(CallManagerCallBack.INCOMING_CALL)) {
             Bundle b = intent.getBundleExtra("com.savoirfairelinux.sflphone.service.newcall");
 
@@ -79,8 +93,45 @@
             }
 
             callback.sendBroadcast(intent);
+            
         } else if (intent.getAction().contentEquals(CallManagerCallBack.NEW_CALL_CREATED)) {
+            
             Log.i(TAG, "Received" + intent.getAction());
+            
+        } else if (intent.getAction().contentEquals(CallManagerCallBack.CONF_CREATED)) {
+            
+            Log.i(TAG, "Received" + intent.getAction());
+            Conference created = new Conference(intent.getStringExtra("confID"));
+            ArrayList<String> all_participants;
+            try {
+                all_participants = (ArrayList<String>) mBinder.getParticipantList(intent.getStringExtra("confID"));
+                for(String participant : all_participants){
+                    created.getParticipants().add(callback.getCurrent_calls().get(participant));
+                }
+                Intent toSend = new Intent(CallManagerCallBack.CONF_CREATED);
+                toSend.putExtra("newconf", created);
+                callback.getCurrent_confs().put(intent.getStringExtra("confID"), created);
+                callback.sendBroadcast(toSend);
+            } catch (RemoteException e1) {
+                e1.printStackTrace();
+            }
+            Log.i(TAG, "current_confs size " + callback.getCurrent_confs().size());
+            
+        } else if (intent.getAction().contentEquals(CallManagerCallBack.CONF_REMOVED)) {
+            
+            Log.i(TAG, "Received" + intent.getAction());
+            Conference toDestroy = callback.getCurrent_confs().get(intent.getStringExtra("confID"));
+            for(int i = 0; i < toDestroy.getParticipants().size() ; ++i){
+                callback.getCurrent_calls().put(toDestroy.getParticipants().get(i).getCallId(), toDestroy.getParticipants().get(i));
+            }
+            callback.getCurrent_confs().remove(intent.getStringExtra("confID"));
+            Toast.makeText(callback, "Removed conf ", Toast.LENGTH_SHORT).show();
+            
+        } else if (intent.getAction().contentEquals(CallManagerCallBack.CONF_CHANGED)) {
+            
+            Log.i(TAG, "Received" + intent.getAction());
+            callback.getCurrent_confs().get(intent.getStringExtra("confID")).setState(intent.getStringExtra("State"));
+            Toast.makeText(callback, "Changing conf state: "+ intent.getStringExtra("State"), Toast.LENGTH_SHORT).show();
         }
 
     }