* #29924: added calls/confs list
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
index 92d019b..b016529 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
@@ -31,13 +31,11 @@
  */
 package com.savoirfairelinux.sflphone.client;
 
-import java.util.HashMap;
 import java.util.Timer;
 import java.util.TimerTask;
 
 import android.app.Activity;
 import android.app.AlertDialog;
-import android.app.Dialog;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -46,9 +44,6 @@
 import android.content.ServiceConnection;
 import android.content.res.Configuration;
 import android.database.Cursor;
-import android.graphics.Color;
-import android.media.AudioFormat;
-import android.media.AudioTrack;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.RemoteException;
@@ -64,13 +59,11 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.RelativeLayout;
-import android.widget.TabHost;
 import android.widget.TabHost.TabContentFactory;
 import android.widget.Toast;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.adapters.SectionsPagerAdapter;
-import com.savoirfairelinux.sflphone.client.AccountPreferenceActivity.result;
 import com.savoirfairelinux.sflphone.fragments.ContactListFragment;
 import com.savoirfairelinux.sflphone.fragments.DialingFragment;
 import com.savoirfairelinux.sflphone.fragments.HistoryFragment;
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
index dd0bad6..f657702 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
@@ -136,7 +136,6 @@
 
     @Override
     protected void onDestroy() {
-        Log.i(TAG, "onDestroy: stopping SipService...");
 
         if (mBound) {
             unbindService(mConnection);
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
index d31cfb7..9845f8d 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
@@ -456,7 +456,7 @@
         }
 
         public void remove(Conference transfer) {
-
+            calls.remove(transfer);
         }
 
         public void update(ArrayList<Conference> list) {
diff --git a/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java b/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
index 888a92f..f2f427c 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
@@ -30,10 +30,12 @@
  */
 package com.savoirfairelinux.sflphone.fragments;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 
 import android.app.Activity;
 import android.app.Fragment;
+import android.content.Context;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.util.Log;
@@ -43,10 +45,10 @@
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
+import android.widget.BaseAdapter;
 import android.widget.Button;
 import android.widget.ListView;
 import android.widget.TextView;
-import android.widget.Toast;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.model.Conference;
@@ -59,7 +61,10 @@
     private Callbacks mCallbacks = sDummyCallbacks;
     Button access_calls;
     TextView nb_calls, nb_confs;
-    ListView list_calls, list_confs;
+    ListView list_calls;
+    CallListAdapter confs_adapter;
+
+    private CallListAdapter calls_adapter;
 
     /**
      * A dummy implementation of the {@link Callbacks} interface that does nothing. Used only when this fragment is not attached to an activity.
@@ -106,18 +111,18 @@
         super.onResume();
         if (mCallbacks.getService() != null) {
             try {
+
                 HashMap<String, SipCall> calls = (HashMap<String, SipCall>) mCallbacks.getService().getCallList();
                 HashMap<String, Conference> confs = (HashMap<String, Conference>) mCallbacks.getService().getConferenceList();
 
                 updateCallList(calls);
                 updateConferenceList(confs);
 
-                if(!calls.isEmpty() || !confs.isEmpty()){
+                if (!calls.isEmpty() || !confs.isEmpty()) {
                     access_calls.setVisibility(View.VISIBLE);
                 } else {
                     access_calls.setVisibility(View.GONE);
                 }
-//                access_calls.setText(calls.size() + " on going calls and "+confs.size()+" conferences");
 
             } catch (RemoteException e) {
                 Log.e(TAG, e.toString());
@@ -127,12 +132,22 @@
     }
 
     private void updateConferenceList(HashMap<String, Conference> confs) {
-        nb_confs.setText(""+confs.size());        
+        nb_confs.setText("" + confs.size());
+        confs_adapter.update(new ArrayList<Conference>(confs.values()));
     }
 
     private void updateCallList(HashMap<String, SipCall> calls) {
-        nb_calls.setText(""+calls.size());
+        nb_calls.setText("" + calls.size());
+        ArrayList<Conference> conferences = new ArrayList<Conference>();
+        for (SipCall call : calls.values()) {
+            Log.w(TAG, "SimpleCall:" + call.getCallId());
+            Conference confOne = new Conference("-1");
+            confOne.getParticipants().add(call);
+            conferences.add(confOne);
+        }
         
+        calls_adapter.update(conferences);
+
     }
 
     @Override
@@ -177,31 +192,84 @@
         nb_calls = (TextView) inflatedView.findViewById(R.id.calls_counter);
         nb_confs = (TextView) inflatedView.findViewById(R.id.confs_counter);
         list_calls = (ListView) inflatedView.findViewById(R.id.calls_list);
-        list_confs = (ListView) inflatedView.findViewById(R.id.confs_list);
+
+        confs_adapter = new CallListAdapter(getActivity());
+        ((ListView) inflatedView.findViewById(R.id.confs_list)).setAdapter(confs_adapter);
         
+        calls_adapter = new CallListAdapter(getActivity());
+        ((ListView) inflatedView.findViewById(R.id.calls_list)).setAdapter(calls_adapter);
+
         access_calls.setOnClickListener(new OnClickListener() {
 
             @Override
             public void onClick(View v) {
-
-                try {
-                    HashMap<String, SipCall> calls = (HashMap<String, SipCall>) mCallbacks.getService().getCallList();
-                    HashMap<String, Conference> confs = (HashMap<String, Conference>) mCallbacks.getService().getConferenceList();
-                    if (calls.isEmpty() && confs.isEmpty()) {
-                        Toast.makeText(getActivity(), "No calls", Toast.LENGTH_SHORT).show();
-                    } else {
-                        
-                       mCallbacks.resumeCallActivity();
-                        
-                    }
-                } catch (RemoteException e) {
-                    Log.e(TAG, e.toString());
-                }
-
+                mCallbacks.resumeCallActivity();
             }
         });
 
         return inflatedView;
     }
 
+    public class CallListAdapter extends BaseAdapter {
+
+        private ArrayList<Conference> calls;
+
+        private Context mContext;
+
+        public CallListAdapter(Context act) {
+            super();
+            mContext = act;
+            calls = new ArrayList<Conference>();
+
+        }
+
+        public void remove(Conference transfer) {
+
+        }
+
+        public void update(ArrayList<Conference> list) {
+            calls.clear();
+            calls.addAll(list);
+            notifyDataSetChanged();
+        }
+
+        @Override
+        public int getCount() {
+            return calls.size();
+        }
+
+        @Override
+        public Conference getItem(int position) {
+            return calls.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return 0;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            if (convertView == null)
+                convertView = LayoutInflater.from(mContext).inflate(R.layout.item_calllist, null);
+
+            Conference call = calls.get(position);
+            if (call.getParticipants().size() == 1) {
+                ((TextView) convertView.findViewById(R.id.call_title)).setText(call.getParticipants().get(0).getContact().getmDisplayName());
+            } else {
+                String tmp = "Conference with " + call.getParticipants().size() + " participants";
+                // for (SipCall c : call.getParticipants()) {
+                // tmp += c.getContact().getmDisplayName() + " ";
+                // }
+                ((TextView) convertView.findViewById(R.id.call_title)).setText(tmp);
+            }
+            // ((TextView) convertView.findViewById(R.id.num_participants)).setText("" + call.getParticipants().size());
+            ((TextView) convertView.findViewById(R.id.call_status)).setText(call.getState());
+
+            convertView.setTag(call);
+            return convertView;
+        }
+
+    }
+
 }
diff --git a/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java b/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
index 9d1dedc..e3b78d3 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
@@ -110,7 +110,6 @@
 
         mCallbacks = (Callbacks) activity;
         getLoaderManager().initLoader(LoaderConstants.ACCOUNTS_LOADER, null, this);
-        
 
     }
 
@@ -154,7 +153,6 @@
         getActivity().unregisterReceiver(accountReceiver);
     }
 
-
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
         View inflatedView = inflater.inflate(R.layout.frag_menu, parent, false);
@@ -164,9 +162,9 @@
 
             @Override
             public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
-                
+
                 Intent in = new Intent();
-                switch(pos){
+                switch (pos) {
                 case 1:
                     in.setClass(getActivity(), SFLPhonePreferenceActivity.class);
                     getActivity().startActivityForResult(in, SFLPhoneHomeActivity.REQUEST_CODE_PREFERENCES);