* #31230: changed search view
diff --git a/src/org/sflphone/adapters/ContactsAdapter.java b/src/org/sflphone/adapters/ContactsAdapter.java
index 7a68361..57ab39a 100644
--- a/src/org/sflphone/adapters/ContactsAdapter.java
+++ b/src/org/sflphone/adapters/ContactsAdapter.java
@@ -13,15 +13,14 @@
 import org.sflphone.fragments.ContactListFragment;
 import org.sflphone.model.CallContact;
 
-import android.app.Fragment;
 import android.content.Context;
-import android.util.Log;
 import android.util.SparseArray;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
+import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.SectionIndexer;
 import android.widget.TextView;
@@ -76,19 +75,33 @@
     }
 
     private View getViewContact(int position, LayoutInflater inflater, View convertView) {
-
+        ContactView entryView;
+        
         if (convertView == null) {
             convertView = inflater.inflate(R.layout.item_contact, null);
+
+            entryView = new ContactView();
+            entryView.quick_starred = (ImageButton) convertView.findViewById(R.id.quick_starred);
+            entryView.quick_edit = (ImageButton) convertView.findViewById(R.id.quick_edit);
+            entryView.quick_discard = (ImageButton) convertView.findViewById(R.id.quick_discard);
+            entryView.quick_call = (ImageButton) convertView.findViewById(R.id.quick_call);
+            entryView.quick_msg = (ImageButton) convertView.findViewById(R.id.quick_message);
+            entryView.photo = (ImageView) convertView.findViewById(R.id.photo);
+            entryView.display_name = (TextView) convertView.findViewById(R.id.display_name);
+            convertView.setTag(entryView);
+        } else {
+            entryView = (ContactView) convertView.getTag();
         }
+        
 
         final CallContact item = headers.getCallContact(position);
 
-        ((TextView) convertView.findViewById(R.id.display_name)).setText(item.getmDisplayName());
-        ImageView photo_view = (ImageView) convertView.findViewById(R.id.photo);
+        entryView.display_name.setText(item.getmDisplayName());
 
-        infos_fetcher.execute(new ContactPictureTask(mContext, photo_view, item.getId()));
 
-        convertView.findViewById(R.id.quick_call).setOnClickListener(new OnClickListener() {
+        infos_fetcher.execute(new ContactPictureTask(mContext, entryView.photo, item.getId()));
+
+        entryView.quick_call.setOnClickListener(new OnClickListener() {
 
             @Override
             public void onClick(View v) {
@@ -97,7 +110,7 @@
             }
         });
         
-        convertView.findViewById(R.id.quick_starred).setOnClickListener(new OnClickListener() {
+        entryView.quick_starred.setOnClickListener(new OnClickListener() {
 
             @Override
             public void onClick(View v) {
@@ -105,7 +118,7 @@
             }
         });
         
-        convertView.findViewById(R.id.quick_edit).setOnClickListener(new OnClickListener() {
+        entryView.quick_edit.setOnClickListener(new OnClickListener() {
 
             @Override
             public void onClick(View v) {
@@ -114,7 +127,7 @@
             }
         });
         
-        convertView.findViewById(R.id.quick_discard).setOnClickListener(new OnClickListener() {
+        entryView.quick_discard.setOnClickListener(new OnClickListener() {
 
             @Override
             public void onClick(View v) {
@@ -125,7 +138,7 @@
         
         
 
-        convertView.findViewById(R.id.quick_message).setOnClickListener(new OnClickListener() {
+        entryView.quick_msg.setOnClickListener(new OnClickListener() {
 
             @Override
             public void onClick(View v) {
@@ -135,6 +148,15 @@
 
         return convertView;
     }
+    
+    /*********************
+     * ViewHolder Pattern
+     *********************/
+    public class ContactView {
+        ImageButton quick_starred, quick_edit, quick_discard, quick_call, quick_msg;
+        ImageView photo;
+        TextView display_name;
+    }
 
     @Override
     public int getCount() {
diff --git a/src/org/sflphone/fragments/ContactListFragment.java b/src/org/sflphone/fragments/ContactListFragment.java
index 1e9216c..197b955 100644
--- a/src/org/sflphone/fragments/ContactListFragment.java
+++ b/src/org/sflphone/fragments/ContactListFragment.java
@@ -43,15 +43,12 @@
 import org.sflphone.views.SwipeListViewTouchListener;
 import org.sflphone.views.TACGridView;
 
-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;
-import android.provider.ContactsContract;
 import android.provider.ContactsContract.Contacts;
 import android.util.Log;
 import android.view.DragEvent;
@@ -67,7 +64,6 @@
 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;
@@ -77,7 +73,7 @@
     private static final String TAG = "ContactListFragment";
     ContactsAdapter mListAdapter;
     StarredContactsAdapter mGridAdapter;
-
+    SearchView search;
     String mCurFilter;
 
     @Override
@@ -220,6 +216,8 @@
 
             }
         });
+        
+        search = (SearchView) inflatedView.findViewById(R.id.contact_search);
 
         grid.setExpanded(true);
         grid.setOnDragListener(dragListener);
@@ -334,19 +332,21 @@
             @Override
             public void onClick(View v) {
 
-                SearchView search = new SearchView(getActivity());
+//                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);
+//                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));
+//                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());
+//                searchBar.setLayoutTransition(new LayoutTransition());
+                list.smoothScrollToPosition(0);
                 search.setOnQueryTextListener(ContactListFragment.this);
                 search.setIconified(false);
-                getActivity().getActionBar().setDisplayShowCustomEnabled(true);
-                getActivity().getActionBar().setCustomView(search);
+//                getActivity().getActionBar().hide();
+//                getActivity().getActionBar().setDisplayShowCustomEnabled(true);
+//                getActivity().getActionBar().setCustomView(search);
                 mCallbacks.openDrawer();
 
             }
diff --git a/src/org/sflphone/views/CustomSlidingDrawer.java b/src/org/sflphone/views/CustomSlidingDrawer.java
index 79397ef..d0edd5b 100644
--- a/src/org/sflphone/views/CustomSlidingDrawer.java
+++ b/src/org/sflphone/views/CustomSlidingDrawer.java
@@ -105,7 +105,7 @@
     private static final float MAXIMUM_TAP_VELOCITY = 100.0f;
     private static final float MAXIMUM_MINOR_VELOCITY = 150.0f;
     private static final float MAXIMUM_MAJOR_VELOCITY = 200.0f;
-    private static final float MAXIMUM_ACCELERATION = 2000.0f;
+    private static final float MAXIMUM_ACCELERATION = 1500.0f;
     private static final int VELOCITY_UNITS = 1000;
     private static final int MSG_ANIMATE = 1000;
     private static final int ANIMATION_FRAME_DURATION = 1000 / 60;