* #25117 Better call management
diff --git a/src/com/savoirfairelinux/sflphone/service/ISipService.aidl b/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
index 71692ea..95460bb 100644
--- a/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
+++ b/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
@@ -50,4 +50,9 @@
     List getParticipantList(in String confID);
     String getConferenceId(in String callID);
     Map getConferenceDetails(in String callID);
+    
+    
+    /*   */
+    
+    SipCall getCall(String callID);
 }
diff --git a/src/com/savoirfairelinux/sflphone/service/SipService.java b/src/com/savoirfairelinux/sflphone/service/SipService.java
index 35a3b62..1abfdaa 100644
--- a/src/com/savoirfairelinux/sflphone/service/SipService.java
+++ b/src/com/savoirfairelinux/sflphone/service/SipService.java
@@ -70,9 +70,8 @@
     private ConfigurationManagerCallback configurationManagerCallback;
     private ManagerImpl managerImpl;
     private boolean isPjSipStackStarted = false;
-    
-    HashMap<String, SipCall> current_calls = new HashMap<String, SipCall>();
 
+    HashMap<String, SipCall> current_calls = new HashMap<String, SipCall>();
 
     private BroadcastReceiver IncomingReceiver = new BroadcastReceiver() {
 
@@ -91,32 +90,32 @@
                 sendBroadcast(intent);
             } else if (intent.getAction().contentEquals(CallManagerCallBack.INCOMING_CALL)) {
                 Bundle b = intent.getBundleExtra("com.savoirfairelinux.sflphone.service.newcall");
-                
+
                 SipCall.SipCallBuilder callBuilder = SipCall.SipCallBuilder.getInstance();
-                callBuilder.startCallCreation(b.getString("CallID")).setAccountID(b.getString("AccountID")).setCallType(SipCall.state.CALL_TYPE_OUTGOING);
+                callBuilder.startCallCreation(b.getString("CallID")).setAccountID(b.getString("AccountID"))
+                        .setCallState(SipCall.state.CALL_STATE_RINGING).setCallType(SipCall.state.CALL_TYPE_INCOMING);
                 callBuilder.addContact(CallContact.ContactBuilder.buildUnknownContact(b.getString("From")));
-    
+
                 Intent toSend = new Intent(CallManagerCallBack.INCOMING_CALL);
                 try {
                     SipCall newCall = callBuilder.build();
-                    toSend.putExtra("newcall",newCall);
+                    toSend.putExtra("newcall", newCall);
                     current_calls.put(newCall.getCallId(), newCall);
                     sendBroadcast(toSend);
                 } catch (Exception e) {
                     Log.e(TAG, e.toString());
                 }
-                
-                
+
             } else if (intent.getAction().contentEquals(CallManagerCallBack.CALL_STATE_CHANGED)) {
-                
+
                 Bundle b = intent.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate");
                 String newState = b.getString("State");
                 if (newState.equals("INCOMING")) {
-                    current_calls.get(b.getString("CallID")).setmCallState(SipCall.state.CALL_STATE_INCOMING);
+                    current_calls.get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_INCOMING);
                 } else if (newState.equals("RINGING")) {
-                    current_calls.get(b.getString("CallID")).setmCallState(SipCall.state.CALL_STATE_RINGING);
+                    current_calls.get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_RINGING);
                 } else if (newState.equals("CURRENT")) {
-                    current_calls.get(b.getString("CallID")).setmCallState(SipCall.state.CALL_STATE_CURRENT);
+                    current_calls.get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_CURRENT);
                 } else if (newState.equals("HUNGUP")) {
                     current_calls.remove(b.getString("CallID"));
                 } else if (newState.equals("BUSY")) {
@@ -124,13 +123,13 @@
                 } else if (newState.equals("FAILURE")) {
                     current_calls.remove(b.getString("CallID"));
                 } else if (newState.equals("HOLD")) {
-                    current_calls.get(b.getString("CallID")).setmCallState(SipCall.state.CALL_STATE_HOLD);
+                    current_calls.get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_HOLD);
                 } else if (newState.equals("UNHOLD")) {
-                    current_calls.get(b.getString("CallID")).setmCallState(SipCall.state.CALL_STATE_CURRENT);
+                    current_calls.get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_CURRENT);
                 } else {
-                    current_calls.get(b.getString("CallID")).setmCallState(SipCall.state.CALL_STATE_NONE);
+                    current_calls.get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_NONE);
                 }
-                
+
                 sendBroadcast(intent);
             } else if (intent.getAction().contentEquals(CallManagerCallBack.NEW_CALL_CREATED)) {
                 Log.i(TAG, "Received" + intent.getAction());
@@ -590,7 +589,6 @@
             });
         }
 
-        
         @Override
         public ArrayList<HashMap<String, String>> getHistory() throws RemoteException {
             class History extends SipRunnableWithReturn {
@@ -903,31 +901,36 @@
 
         @Override
         public HashMap<String, SipCall> getCallList() throws RemoteException {
-//            class CallList extends SipRunnableWithReturn {
-//
-//                @Override
-//                protected StringVect doRun() throws SameThreadException {
-//                    Log.i(TAG, "SipService.getCallList() thread running...");
-//                    return callManagerJNI.getCallList();
-//                }
-//            }
-//
-//            CallList runInstance = new CallList();
-//            getExecutor().execute(runInstance);
-//            while (!runInstance.isDone()) {
-//                Log.w(TAG, "Waiting for getAudioCodecList");
-//            }
-//            StringVect swigmap = (StringVect) runInstance.getVal();
-//
-//            ArrayList<String> nativemap = new ArrayList<String>();
-//            for (int i = 0; i < swigmap.size(); ++i) {
-//
-//                String t = swigmap.get(i);
-//                nativemap.add(t);
-//            }
+            // class CallList extends SipRunnableWithReturn {
+            //
+            // @Override
+            // protected StringVect doRun() throws SameThreadException {
+            // Log.i(TAG, "SipService.getCallList() thread running...");
+            // return callManagerJNI.getCallList();
+            // }
+            // }
+            //
+            // CallList runInstance = new CallList();
+            // getExecutor().execute(runInstance);
+            // while (!runInstance.isDone()) {
+            // Log.w(TAG, "Waiting for getAudioCodecList");
+            // }
+            // StringVect swigmap = (StringVect) runInstance.getVal();
+            //
+            // ArrayList<String> nativemap = new ArrayList<String>();
+            // for (int i = 0; i < swigmap.size(); ++i) {
+            //
+            // String t = swigmap.get(i);
+            // nativemap.add(t);
+            // }
 
             return current_calls;
         }
 
+        @Override
+        public SipCall getCall(String callID) throws RemoteException {
+            return current_calls.get(callID);
+        }
+
     };
 }