* #25268 changed animation, moved searchview
* #26000 working, call process slightly modified
diff --git a/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
index 3fd80fa..d50fbdd 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
@@ -33,10 +33,10 @@
 
 import java.util.ArrayList;
 
+import android.animation.LayoutTransition;
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.LoaderManager;
-import android.content.Intent;
 import android.content.Loader;
 import android.net.Uri;
 import android.os.Bundle;
@@ -47,30 +47,28 @@
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
-import android.view.MenuItem;
 import android.view.View;
 import android.view.View.DragShadowBuilder;
 import android.view.View.OnClickListener;
 import android.view.View.OnDragListener;
 import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.AdapterView.OnItemLongClickListener;
 import android.widget.ImageButton;
+import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.RelativeLayout;
 import android.widget.SearchView;
+import android.widget.SearchView.OnCloseListener;
 import android.widget.SearchView.OnQueryTextListener;
-import android.widget.ViewSwitcher;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.adapters.ContactsAdapter;
 import com.savoirfairelinux.sflphone.adapters.StarredContactsAdapter;
-import com.savoirfairelinux.sflphone.client.CallActivity;
-import com.savoirfairelinux.sflphone.fragments.HistoryFragment.Callbacks;
 import com.savoirfairelinux.sflphone.loaders.ContactsLoader;
 import com.savoirfairelinux.sflphone.model.CallContact;
-import com.savoirfairelinux.sflphone.model.SipCall;
 import com.savoirfairelinux.sflphone.service.ISipService;
 import com.savoirfairelinux.sflphone.views.TACGridView;
 
@@ -81,6 +79,8 @@
 
     String mCurFilter;
 
+    private RelativeLayout mHandle;
+
     public static final int CONTACT_LOADER = 555;
 
     @Override
@@ -135,7 +135,7 @@
 
         mCallbacks = (Callbacks) activity;
     }
-    
+
     @Override
     public void onDetach() {
         super.onDetach();
@@ -159,23 +159,14 @@
         public boolean onItemLongClick(AdapterView<?> av, View view, int pos, long id) {
             DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view.findViewById(R.id.photo));
             view.startDrag(null, shadowBuilder, view, 0);
-//            view.setVisibility(View.INVISIBLE);
+            // view.setVisibility(View.INVISIBLE);
             mCallbacks.onContactDragged();
+//            ((SearchView) mHandle.findViewById(R.id.contact_search_text)).setIconified(true);
             return true;
         }
 
     };
 
-//    private void launchCallActivity(CallContact c) {
-//        Log.i(TAG, "Launch Call Activity");
-//        Bundle bundle = new Bundle();
-//        bundle.putString("action", "call");
-//        bundle.putParcelable("CallContact", c);
-//        Intent intent = new Intent().setClass(getActivity(), CallActivity.class);
-//        intent.putExtras(bundle);
-//        getActivity().startActivity(intent);
-//    }
-
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View inflatedView = inflater.inflate(R.layout.frag_contact_list, container, false);
@@ -187,7 +178,8 @@
             @Override
             public void onItemClick(AdapterView<?> arg0, View v, int pos, long arg3) {
                 mCallbacks.onContactSelected(mListAdapter.getItem(pos));
-                
+//                ((SearchView) mHandle.findViewById(R.id.contact_search_text)).setIconified(true);
+
             }
         });
         list.setOnItemLongClickListener(mItemLongClickListener);
@@ -199,15 +191,15 @@
         list.setAdapter(mListAdapter);
         grid.setAdapter(mGridAdapter);
         grid.setExpanded(true);
-        
-        
+
         grid.setOnDragListener(dragListener);
         grid.setOnItemClickListener(new OnItemClickListener() {
 
             @Override
             public void onItemClick(AdapterView<?> arg0, View v, int pos, long arg3) {
-//                launchCallActivity(mGridAdapter.getItem(pos));
+                // launchCallActivity(mGridAdapter.getItem(pos));
                 mCallbacks.onContactSelected(mGridAdapter.getItem(pos));
+//                ((SearchView) mHandle.findViewById(R.id.contact_search_text)).setIconified(true);
             }
         });
         grid.setOnItemLongClickListener(mItemLongClickListener);
@@ -226,10 +218,9 @@
             case DragEvent.ACTION_DRAG_ENTERED:
                 break;
             case DragEvent.ACTION_DRAG_EXITED:
-//                v.setBackgroundDrawable(null);
+                // v.setBackgroundDrawable(null);
                 break;
             case DragEvent.ACTION_DROP:
-                View view = (View) event.getLocalState();
                 break;
             case DragEvent.ACTION_DRAG_ENDED:
                 View view1 = (View) event.getLocalState();
@@ -241,22 +232,20 @@
         }
 
     };
-    private RelativeLayout mHandle;
 
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         // Place an action bar item for searching
-//        inflater.inflate(R.menu.contact_list_menu, menu);
-//        MenuItem item = menu.findItem(R.id.menu_search);
-//        SearchView sv = new SearchView(getActivity());
-//        sv.setOnQueryTextListener(this);
-//        item.setActionView(sv);
+        // inflater.inflate(R.menu.contact_list_menu, menu);
+        // MenuItem item = menu.findItem(R.id.menu_search);
+        // SearchView sv = new SearchView(getActivity());
+        // sv.setOnQueryTextListener(this);
+        // item.setActionView(sv);
     }
 
     @Override
     public boolean onQueryTextChange(String newText) {
-        
-        Log.i(TAG,"onQueryTextChangeonQueryTextChangeonQueryTextChangeonQueryTextChangeonQueryTextChangeonQueryTextChangeonQueryTextChangeonQueryTextChangeonQueryTextChangeonQueryTextChangeonQueryTextChange");
+
         // Called when the action bar search text has changed. Update
         // the search filter, and restart the loader to do a new query
         // with this filter.
@@ -276,7 +265,6 @@
 
     @Override
     public boolean onQueryTextSubmit(String query) {
-        Log.i(TAG,"onQueryTextSubmitonQueryTextSubmitonQueryTextSubmitonQueryTextSubmitonQueryTextSubmitonQueryTextSubmitonQueryTextSubmit");
         // Return false to let the SearchView perform the default action
         return false;
     }
@@ -318,29 +306,34 @@
     public void setHandleView(RelativeLayout handle) {
         mHandle = handle;
         
-//        ((ImageButton) handle.findViewById(R.id.contact_search)).setTag(R.id.contact_search, false);
+
+
+        // ((ImageButton) handle.findViewById(R.id.contact_search)).setTag(R.id.contact_search, false);
+
         
-        ((SearchView)mHandle.findViewById(R.id.contact_search_text)).setOnQueryTextListener(this);
-        ((SearchView)mHandle.findViewById(R.id.contact_search_text)).setOnSearchClickListener(new OnClickListener() {
+        ((ImageButton)handle.findViewById(R.id.contact_search_button)).setOnClickListener(new OnClickListener() {
             
             @Override
             public void onClick(View v) {
+                SearchView search = new SearchView(getActivity());
+                //Get the ID for the search bar LinearLayout
+                int searchBarId = search.getContext().getResources().getIdentifier("android:id/search_bar", null, null);
+                //Get the search bar Linearlayout
+                LinearLayout searchBar = (LinearLayout) search.findViewById(searchBarId);
+                searchBar.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
+                //Give the Linearlayout a transition animation.
+                searchBar.setLayoutTransition(new LayoutTransition());
+                search.setOnQueryTextListener(ContactListFragment.this);
+                search.setIconified(false);
+                getActivity().getActionBar().setDisplayShowCustomEnabled(true);
+                getActivity().getActionBar().setCustomView(search);
                 mCallbacks.openDrawer();
                 
             }
         });
         
-//        ((ImageButton) mHandle.findViewById(R.id.contact_search)).setOnClickListener(new OnClickListener() {
-//
-//            @Override
-//            public void onClick(View v) {
-//                Log.i(TAG, "Click on serach");
-////                ((ViewSwitcher)mHandle.findViewById(R.id.view_switcher)).showNext();
-////                ((SearchView)mHandle.findViewById(R.id.contact_search_text)).
-//                
-//
-//            }
-//        });
         
+
     }
+
 }
diff --git a/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java b/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java
index 853d0ff..8711384 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java
@@ -75,8 +75,8 @@
     AccountSelectionAdapter mAdapter;
     private Callbacks mCallbacks = sDummyCallbacks;
     private Spinner spinnerAccounts;
-    
-    private static final int ACCOUNTS_LOADER = 555; 
+
+    private static final int ACCOUNTS_LOADER = 555;
 
     /**
      * A dummy implementation of the {@link Callbacks} interface that does nothing. Used only when this fragment is not attached to an activity.
@@ -254,7 +254,8 @@
     }
 
     public void updateAllAccounts() {
-        getActivity().getLoaderManager().restartLoader(ACCOUNTS_LOADER, null, this);
+        if (getActivity() != null)
+            getActivity().getLoaderManager().restartLoader(ACCOUNTS_LOADER, null, this);
 
     }
 
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
similarity index 94%
rename from src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java
rename to src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
index 3d24cb4..a3dcdd7 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
@@ -66,8 +66,8 @@
 /**
  * Main list of Call Elements. We don't manage contacts ourself so they are
  */
-public class CallElementListFragment extends ListFragment {
-    private static final String TAG = CallElementListFragment.class.getSimpleName();
+public class HomeFragment extends ListFragment {
+    private static final String TAG = HomeFragment.class.getSimpleName();
     private CallElementAdapter mAdapter;
 
 
@@ -254,20 +254,20 @@
 
     }
 
-    private static final int REQUEST_CODE_PREFERENCES = 1;
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        Log.i(TAG, "onOptionsItemSelected " + item.getItemId());
-        switch (item.getItemId()) {
-        case R.id.menu_settings:
-            Intent launchPreferencesIntent = new Intent().setClass(getActivity(), SFLPhonePreferenceActivity.class);
-            startActivityForResult(launchPreferencesIntent, SFLPhoneHomeActivity.REQUEST_CODE_PREFERENCES);
-            break;
-        }
-
-        return super.onOptionsItemSelected(item);
-    }
+//    private static final int REQUEST_CODE_PREFERENCES = 1;
+//
+//    @Override
+//    public boolean onOptionsItemSelected(MenuItem item) {
+//        Log.i(TAG, "onOptionsItemSelected " + item.getItemId());
+//        switch (item.getItemId()) {
+//        case R.id.menu_settings:
+//            Intent launchPreferencesIntent = new Intent().setClass(getActivity(), SFLPhonePreferenceActivity.class);
+//            startActivityForResult(launchPreferencesIntent, SFLPhoneHomeActivity.REQUEST_CODE_PREFERENCES);
+//            break;
+//        }
+//
+//        return super.onOptionsItemSelected(item);
+//    }
 
     public void updateCall(String iD, String newState) {
         if (mAdapter == null) {
diff --git a/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java b/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
index 095b135..3cac94e 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
@@ -1,14 +1,11 @@
 package com.savoirfairelinux.sflphone.fragments;
 
-import java.util.Random;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 import android.app.Activity;
 import android.app.Fragment;
-import android.app.LoaderManager.LoaderCallbacks;
 import android.content.Intent;
-import android.content.Loader;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
@@ -24,7 +21,6 @@
 import android.widget.TextView;
 
 import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.adapters.ContactPictureLoader;
 import com.savoirfairelinux.sflphone.adapters.MenuAdapter;
 import com.savoirfairelinux.sflphone.client.SFLPhoneHomeActivity;
 import com.savoirfairelinux.sflphone.client.SFLPhonePreferenceActivity;
@@ -85,13 +81,17 @@
         });
 
         Cursor mProfileCursor = getActivity().getContentResolver().query(Profile.CONTENT_URI, mProjection, null, null, null);
-        mProfileCursor.moveToFirst();
 
-        ((ImageView) inflatedView.findViewById(R.id.user_photo)).setImageURI(Uri.parse(mProfileCursor.getString(mProfileCursor
-                .getColumnIndex(Profile.PHOTO_THUMBNAIL_URI))));
-        ((TextView) inflatedView.findViewById(R.id.user_name)).setText(mProfileCursor.getString(mProfileCursor
-                .getColumnIndex(Profile.DISPLAY_NAME_PRIMARY)));
-
+        if (mProfileCursor.getCount() > 0) {
+            mProfileCursor.moveToFirst();
+            String photo_uri = mProfileCursor.getString(mProfileCursor.getColumnIndex(Profile.PHOTO_THUMBNAIL_URI));
+            if (photo_uri != null) {
+                ((ImageView) inflatedView.findViewById(R.id.user_photo)).setImageURI(Uri.parse(photo_uri));
+            }
+            ((TextView) inflatedView.findViewById(R.id.user_name)).setText(mProfileCursor.getString(mProfileCursor
+                    .getColumnIndex(Profile.DISPLAY_NAME_PRIMARY)));
+            mProfileCursor.close();
+        }
         return inflatedView;
     }