Small UI fixes, debugging sndfile issues
diff --git a/jni/Android.mk b/jni/Android.mk
index 50ee913..551dc54 100644
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -214,22 +214,42 @@
 					$(MY_LIBSNDFILE)/src/float32.c \
 					$(MY_LIBSNDFILE)/src/chanmap.c $(MY_LIBSNDFILE)/src/test_endswap.c $(MY_LIBSNDFILE)/src/rf64.c \
 					$(MY_LIBSNDFILE)/src/sndfile.c $(MY_LIBSNDFILE)/src/htk.c $(MY_LIBSNDFILE)/src/dither.c \
-       $(MY_LIBSNDFILE)/src/test_log_printf.c $(MY_LIBSNDFILE)/src/txw.c $(MY_LIBSNDFILE)/src/ms_adpcm.c $(MY_LIBSNDFILE)/src/ima_adpcm.c $(MY_LIBSNDFILE)/src/flac.c $(MY_LIBSNDFILE)/src/aiff.c \
-       $(MY_LIBSNDFILE)/src/wav.c $(MY_LIBSNDFILE)/src/macbinary3.c $(MY_LIBSNDFILE)/src/mat4.c $(MY_LIBSNDFILE)/src/pcm.c $(MY_LIBSNDFILE)/src/caf.c \
-       $(MY_LIBSNDFILE)/src/audio_detect.c $(MY_LIBSNDFILE)/src/id3.c $(MY_LIBSNDFILE)/src/alaw.c $(MY_LIBSNDFILE)/src/macos.c $(MY_LIBSNDFILE)/src/file_io.c $(MY_LIBSNDFILE)/src/broadcast.c $(MY_LIBSNDFILE)/src/double64.c \
-       $(MY_LIBSNDFILE)/src/raw.c $(MY_LIBSNDFILE)/src/test_broadcast_var.c \
-       $(MY_LIBSNDFILE)/src/g72x.c $(MY_LIBSNDFILE)/src/command.c $(MY_LIBSNDFILE)/src/chunk.c $(MY_LIBSNDFILE)/src/avr.c $(MY_LIBSNDFILE)/src/sd2.c $(MY_LIBSNDFILE)/src/voc.c $(MY_LIBSNDFILE)/src/test_audio_detect.c \
-       $(MY_LIBSNDFILE)/src/mpc2k.c $(MY_LIBSNDFILE)/src/gsm610.c $(MY_LIBSNDFILE)/src/dwd.c \
-       $(MY_LIBSNDFILE)/src/interleave.c $(MY_LIBSNDFILE)/src/common.c $(MY_LIBSNDFILE)/src/test_strncpy_crlf.c $(MY_LIBSNDFILE)/src/sds.c $(MY_LIBSNDFILE)/src/pvf.c $(MY_LIBSNDFILE)/src/paf.c $(MY_LIBSNDFILE)/src/au.c \
-       $(MY_LIBSNDFILE)/src/test_float.c \
-       $(MY_LIBSNDFILE)/src/vox_adpcm.c $(MY_LIBSNDFILE)/src/ulaw.c $(MY_LIBSNDFILE)/src/strings.c $(MY_LIBSNDFILE)/src/svx.c $(MY_LIBSNDFILE)/src/test_conversions.c $(MY_LIBSNDFILE)/src/rx2.c $(MY_LIBSNDFILE)/src/nist.c \
-       $(MY_LIBSNDFILE)/src/GSM610/code.c $(MY_LIBSNDFILE)/src/GSM610/gsm_destroy.c \
-       $(MY_LIBSNDFILE)/src/GSM610/gsm_decode.c $(MY_LIBSNDFILE)/src/GSM610/short_term.c $(MY_LIBSNDFILE)/src/GSM610/gsm_create.c \
-       $(MY_LIBSNDFILE)/src/GSM610/decode.c $(MY_LIBSNDFILE)/src/GSM610/gsm_option.c \
-       $(MY_LIBSNDFILE)/src/GSM610/long_term.c $(MY_LIBSNDFILE)/src/GSM610/table.c $(MY_LIBSNDFILE)/src/GSM610/rpe.c $(MY_LIBSNDFILE)/src/GSM610/preprocess.c \
-       $(MY_LIBSNDFILE)/src/GSM610/gsm_encode.c $(MY_LIBSNDFILE)/src/GSM610/lpc.c \
-       $(MY_LIBSNDFILE)/src/GSM610/add.c $(MY_LIBSNDFILE)/src/dwvw.c $(MY_LIBSNDFILE)/src/wav_w64.c $(MY_LIBSNDFILE)/src/wve.c $(MY_LIBSNDFILE)/src/ogg.c $(MY_LIBSNDFILE)/src/w64.c $(MY_LIBSNDFILE)/src/test_file_io.c \
-       $(MY_LIBSNDFILE)/src/ircam.c $(MY_LIBSNDFILE)/src/xi.c $(MY_LIBSNDFILE)/src/ima_oki_adpcm.c
+       				$(MY_LIBSNDFILE)/src/test_log_printf.c $(MY_LIBSNDFILE)/src/txw.c \
+					$(MY_LIBSNDFILE)/src/ms_adpcm.c $(MY_LIBSNDFILE)/src/ima_adpcm.c \
+					$(MY_LIBSNDFILE)/src/flac.c $(MY_LIBSNDFILE)/src/aiff.c \
+					$(MY_LIBSNDFILE)/src/wav.c \
+					$(MY_LIBSNDFILE)/src/macbinary3.c \
+					$(MY_LIBSNDFILE)/src/mat4.c \
+					$(MY_LIBSNDFILE)/src/pcm.c \
+					$(MY_LIBSNDFILE)/src/caf.c \
+					$(MY_LIBSNDFILE)/src/audio_detect.c \
+					$(MY_LIBSNDFILE)/src/id3.c \
+					$(MY_LIBSNDFILE)/src/alaw.c $(MY_LIBSNDFILE)/src/macos.c $(MY_LIBSNDFILE)/src/file_io.c $(MY_LIBSNDFILE)/src/broadcast.c \
+					$(MY_LIBSNDFILE)/src/double64.c \
+					$(MY_LIBSNDFILE)/src/raw.c $(MY_LIBSNDFILE)/src/test_broadcast_var.c \
+					$(MY_LIBSNDFILE)/src/g72x.c $(MY_LIBSNDFILE)/src/command.c \
+					$(MY_LIBSNDFILE)/src/chunk.c $(MY_LIBSNDFILE)/src/avr.c \
+					$(MY_LIBSNDFILE)/src/sd2.c $(MY_LIBSNDFILE)/src/voc.c \
+					$(MY_LIBSNDFILE)/src/test_audio_detect.c \
+					$(MY_LIBSNDFILE)/src/mpc2k.c $(MY_LIBSNDFILE)/src/gsm610.c $(MY_LIBSNDFILE)/src/dwd.c \
+					$(MY_LIBSNDFILE)/src/interleave.c $(MY_LIBSNDFILE)/src/common.c \
+					$(MY_LIBSNDFILE)/src/test_strncpy_crlf.c $(MY_LIBSNDFILE)/src/sds.c \
+					$(MY_LIBSNDFILE)/src/pvf.c $(MY_LIBSNDFILE)/src/paf.c \
+					$(MY_LIBSNDFILE)/src/au.c \
+					$(MY_LIBSNDFILE)/src/test_float.c \
+					$(MY_LIBSNDFILE)/src/vox_adpcm.c $(MY_LIBSNDFILE)/src/ulaw.c \
+					$(MY_LIBSNDFILE)/src/strings.c $(MY_LIBSNDFILE)/src/svx.c \
+					$(MY_LIBSNDFILE)/src/test_conversions.c $(MY_LIBSNDFILE)/src/rx2.c \
+					$(MY_LIBSNDFILE)/src/nist.c \
+					$(MY_LIBSNDFILE)/src/GSM610/code.c $(MY_LIBSNDFILE)/src/GSM610/gsm_destroy.c \
+					$(MY_LIBSNDFILE)/src/GSM610/gsm_decode.c $(MY_LIBSNDFILE)/src/GSM610/short_term.c $(MY_LIBSNDFILE)/src/GSM610/gsm_create.c \
+					$(MY_LIBSNDFILE)/src/GSM610/decode.c $(MY_LIBSNDFILE)/src/GSM610/gsm_option.c \
+					$(MY_LIBSNDFILE)/src/GSM610/long_term.c $(MY_LIBSNDFILE)/src/GSM610/table.c $(MY_LIBSNDFILE)/src/GSM610/rpe.c $(MY_LIBSNDFILE)/src/GSM610/preprocess.c \
+					$(MY_LIBSNDFILE)/src/GSM610/gsm_encode.c $(MY_LIBSNDFILE)/src/GSM610/lpc.c \
+					$(MY_LIBSNDFILE)/src/GSM610/add.c $(MY_LIBSNDFILE)/src/dwvw.c \
+					$(MY_LIBSNDFILE)/src/wav_w64.c $(MY_LIBSNDFILE)/src/wve.c $(MY_LIBSNDFILE)/src/ogg.c $(MY_LIBSNDFILE)/src/w64.c \
+					$(MY_LIBSNDFILE)/src/test_file_io.c \
+					$(MY_LIBSNDFILE)/src/ircam.c $(MY_LIBSNDFILE)/src/xi.c $(MY_LIBSNDFILE)/src/ima_oki_adpcm.c
 
 LOCAL_C_INCLUDES += $(APP_PROJECT_PATH)/jni/$(MY_LIBSNDFILE)/src \
 
diff --git a/res/layout/activity_sflphone_home.xml b/res/layout/activity_sflphone_home.xml
index 042b11b..e7d2dca 100644
--- a/res/layout/activity_sflphone_home.xml
+++ b/res/layout/activity_sflphone_home.xml
@@ -33,7 +33,7 @@
 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/drawer_layout"
     android:layout_width="match_parent"
-    android:layout_height="match_parent" >
+    android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res/com.savoirfairelinux.sflphone">
 
     <RelativeLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
@@ -66,6 +66,7 @@
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true"
             android:orientation="vertical"
+            app:animateOnClick="true"
             app:content="@+id/contacts_frame"
             app:handle="@+id/slider_button" >
 
diff --git a/res/menu/account_creation.xml b/res/menu/account_creation.xml
index 9fc56fd..b412027 100644
--- a/res/menu/account_creation.xml
+++ b/res/menu/account_creation.xml
@@ -3,8 +3,7 @@
 
     <item
         android:id="@+id/menuitem_create"
-        android:icon="@drawable/ic_checkmark_holo_light"
-        android:showAsAction="ifRoom"
-        android:title="Create"/>
+        android:showAsAction="always"
+        android:title="@string/ab_account_creation"/>
 
 </menu>
\ No newline at end of file
diff --git a/res/menu/account_edition.xml b/res/menu/account_edition.xml
index 013fd4f..178aa35 100644
--- a/res/menu/account_edition.xml
+++ b/res/menu/account_edition.xml
@@ -3,13 +3,13 @@
 
     <item
         android:id="@+id/menuitem_delete"
-        android:title="Delete"
+        android:title="@string/ab_account_edition_1"
         android:showAsAction="ifRoom"
         android:icon="@android:drawable/ic_menu_delete"/>
     
         <item
         android:id="@+id/menuitem_edit"
-        android:title="Edit"
+        android:title="@string/ab_account_edition_2"
         android:showAsAction="ifRoom"
         android:icon="@android:drawable/ic_menu_edit"/>
 </menu>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 86f71c3..d93d4e5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -40,6 +40,11 @@
     <string name="title_section1">Call</string>
     <string name="title_section2">History</string>
     <string name="title_activity_sflphone_home">SFLphone</string>
+    
+    <!-- AB menus -->
+    <string name="ab_account_creation">New Account</string>
+    <string name="ab_account_edition_1">Delete</string>
+    <string name="ab_account_edition_2">Edit</string>
 
     <!-- Left Drawer -->
     <!-- Accessibility -->
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
index 9970015..6813e53 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
@@ -91,6 +91,7 @@
         initEdition();
 
         getActionBar().setDisplayHomeAsUpEnabled(true);
+        
 
         requiredFields = new ArrayList<String>();
         requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS);
@@ -128,11 +129,7 @@
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         MenuInflater inflater = getMenuInflater();
-
-        Log.i(TAG, "onCreateOptionsMenu: " + mAccountID);
-
         inflater.inflate(R.menu.account_edition, menu);
-
         return true;
     }
 
@@ -354,7 +351,7 @@
     private AlertDialog createCancelDialog() {
         Activity ownerActivity = this;
         AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
-        builder.setMessage("All parameters will be lost").setTitle("Account Creation").setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+        builder.setMessage("Modifications will be lost").setTitle("Account Edition").setPositiveButton("Ok", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int whichButton) {
                 Activity activity = ((Dialog) dialog).getOwnerActivity();
                 activity.finish();
diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index 58fb6dc..9c2c0c3 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -33,6 +33,7 @@
 
 package com.savoirfairelinux.sflphone.client;
 
+import java.io.File;
 import java.util.HashMap;
 
 import android.app.Activity;
@@ -43,6 +44,7 @@
 import android.content.ServiceConnection;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Environment;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.support.v4.widget.SlidingPaneLayout;
@@ -117,7 +119,7 @@
                         getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment).commit();
 
                         fragIsChanging = false;
-                    } else if(mCurrentCallFragment != null && mCurrentCallFragment.getBubbleView() != null){
+                    } else if (mCurrentCallFragment != null && mCurrentCallFragment.getBubbleView() != null) {
                         mCurrentCallFragment.getBubbleView().restartDrawing();
                     }
 
@@ -256,8 +258,8 @@
 
         mCallsFragment.update();
 
-        if(mCurrentCallFragment != null)
-        mCurrentCallFragment.changeCallState(callID, newState);
+        if (mCurrentCallFragment != null)
+            mCurrentCallFragment.changeCallState(callID, newState);
 
         try {
             HashMap<String, SipCall> callMap = (HashMap<String, SipCall>) service.getCallList();
@@ -290,7 +292,7 @@
     @Override
     public void onCallSelected(Conference conf) {
 
-        if(mCurrentCallFragment == null || mCurrentCallFragment.getBubbleView() == null){
+        if (mCurrentCallFragment == null || mCurrentCallFragment.getBubbleView() == null) {
             return;
         }
         mCurrentCallFragment.getBubbleView().stopThread();
@@ -410,10 +412,10 @@
     public void onRecordCall(SipCall call) {
         try {
 
-                // service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath());
-                Log.w(TAG, "Recording path" + service.getRecordPath());
-                service.setRecordingCall(call.getCallId());
-            
+            service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator);
+            Log.w(TAG, "Recording path" + service.getRecordPath());
+            service.toggleRecordingCall(call.getCallId());
+
         } catch (RemoteException e) {
             Log.e(TAG, "Cannot call service method", e);
         }
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
index 5902d2f..bfe559a 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
@@ -165,6 +165,8 @@
         mContactsFragment.setHandleView((RelativeLayout) findViewById(R.id.slider_button));
 
         mDrawer.setmTrackHandle(findViewById(R.id.handle_title));
+        
+        
 
         // Set up the ViewPager with the sections adapter.
         mViewPager = (ViewPager) findViewById(R.id.pager);
@@ -386,7 +388,7 @@
                 final PagerTabStrip strip = PagerTabStrip.class.cast(mViewPager.findViewById(R.id.pts_main));
                 strip.setDrawFullUnderline(false);
                 strip.setTabIndicatorColor(getResources().getColor(R.color.holo_blue_dark));
-                strip.setBackgroundColor(getResources().getColor(R.color.lighter_gray));
+                strip.setBackgroundColor(getResources().getColor(R.color.darker_gray));
                 strip.setNonPrimaryAlpha(0.5f);
                 strip.setTextSpacing(25);
                 strip.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
index 1dab612..dd0bad6 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
@@ -119,7 +119,7 @@
             finish();
             return true;
         default:
-            return true;
+            return false;
         }
     }
 
diff --git a/src/com/savoirfairelinux/sflphone/client/ZoomOutPageTransformer.java b/src/com/savoirfairelinux/sflphone/client/ZoomOutPageTransformer.java
index 53247d2..d2cd1ae 100644
--- a/src/com/savoirfairelinux/sflphone/client/ZoomOutPageTransformer.java
+++ b/src/com/savoirfairelinux/sflphone/client/ZoomOutPageTransformer.java
@@ -13,6 +13,8 @@
 
     @Override
     public void transformPage(View page, float position) {
-        page.setRotationY(position * -30);
+        // page.setRotationY(position * -30);
+        final float normalizedposition = Math.abs(Math.abs(position) - 1);
+        page.setAlpha(normalizedposition);
     }
 }
\ No newline at end of file
diff --git a/src/com/savoirfairelinux/sflphone/fragments/AccountCreationFragment.java b/src/com/savoirfairelinux/sflphone/fragments/AccountCreationFragment.java
index d5111c7..af758ef 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/AccountCreationFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/AccountCreationFragment.java
@@ -14,8 +14,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.EditText;
-import android.widget.TextView;
-import android.widget.Toast;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.account.AccountDetail;
@@ -222,24 +220,4 @@
 
     }
 
-    private AlertDialog createCancelDialog() {
-        Activity ownerActivity = getActivity();
-        AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
-        builder.setMessage("All parameters will be lost").setTitle("Account Creation").setPositiveButton("Ok", new DialogInterface.OnClickListener() {
-            public void onClick(DialogInterface dialog, int whichButton) {
-                Activity activity = ((Dialog) dialog).getOwnerActivity();
-                activity.finish();
-            }
-        }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
-            public void onClick(DialogInterface dialog, int whichButton) {
-                /* Terminate with no action */
-            }
-        });
-
-        AlertDialog alertDialog = builder.create();
-        alertDialog.setOwnerActivity(ownerActivity);
-
-        return alertDialog;
-    }
-
 }
diff --git a/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
index 01e5159..cf96191 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
@@ -44,12 +44,13 @@
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.preference.Preference;
-import android.preference.PreferenceCategory;
 import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
 import android.support.v4.content.LocalBroadcastManager;
 import android.util.Log;
-import android.widget.Toast;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.account.AccountDetail;
@@ -64,7 +65,6 @@
 import com.savoirfairelinux.sflphone.model.Account;
 import com.savoirfairelinux.sflphone.service.ConfigurationManagerCallback;
 import com.savoirfairelinux.sflphone.service.ISipService;
-import com.savoirfairelinux.sflphone.service.ServiceConstants;
 
 public class AccountManagementFragment extends PreferenceFragment {
     static final String TAG = "AccountManagementFragment";
@@ -104,6 +104,8 @@
 
         Log.i(TAG, "Create Account Management Fragment");
 
+        this.setHasOptionsMenu(true);
+
         /*
          * FIXME if service cannot be obtained from SFLPhonePreferenceActivity, then get it from Application
          */
@@ -143,10 +145,10 @@
                 Log.i(TAG, "Create account settings");
                 HashMap<String, String> accountDetails = new HashMap<String, String>();
                 accountDetails = (HashMap<String, String>) bundle.getSerializable(AccountDetail.TAG);
-//                if(accountDetails == null){
-//                    Toast.makeText(getActivity(), "NUUUUL", Toast.LENGTH_SHORT).show();
-//                } else 
-//                    Toast.makeText(getActivity(), "OKKKK", Toast.LENGTH_SHORT).show();
+                // if(accountDetails == null){
+                // Toast.makeText(getActivity(), "NUUUUL", Toast.LENGTH_SHORT).show();
+                // } else
+                // Toast.makeText(getActivity(), "OKKKK", Toast.LENGTH_SHORT).show();
                 createNewAccount(accountDetails);
             }
             break;
@@ -227,7 +229,7 @@
 
     Preference.OnPreferenceClickListener launchAccountCreationOnClick = new Preference.OnPreferenceClickListener() {
         public boolean onPreferenceClick(Preference preference) {
-                launchAccountCreationActivity(preference);
+            launchAccountCreationActivity(preference);
             return true;
         }
     };
@@ -248,6 +250,25 @@
         }
     };
 
+    @Override
+    public void onCreateOptionsMenu(Menu m, MenuInflater inf) {
+        super.onCreateOptionsMenu(m, inf);
+        inf.inflate(R.menu.account_creation, m);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        super.onOptionsItemSelected(item);
+        switch (item.getItemId()) {
+        case R.id.menuitem_create:
+            Intent intent = new Intent().setClass(getActivity(), AccountWizard.class);
+            startActivityForResult(intent, ACCOUNT_CREATE_REQUEST);
+            break;
+        }
+
+        return true;
+    }
+
     private void launchAccountCreationActivity(Preference preference) {
         Log.i(TAG, "Launch account creation activity");
         Intent intent = preference.getIntent();
@@ -312,17 +333,12 @@
         // mRoot.addPreference(createAccountPreferenceScreen(DEFAULT_ACCOUNT_ID));
 
         // Account list category
-        PreferenceCategory accountListCat = new PreferenceCategory(currentContext);
-        accountListCat.setTitle(R.string.default_account_category);
-        mRoot.addPreference(accountListCat);
-
-        Preference createNewAccount = new Preference(currentContext);
-        createNewAccount.setTitle("Register Account");
-        createNewAccount.setOnPreferenceClickListener(launchAccountCreationOnClick);
-        createNewAccount.setIntent(new Intent().setClass(getActivity(), AccountWizard.class));
-        mRoot.addPreference(createNewAccount);
+        // PreferenceCategory accountListCat = new PreferenceCategory(currentContext);
+        // accountListCat.setTitle(R.string.default_account_category);
+        // mRoot.addPreference(accountListCat);
 
         ArrayList<String> accountList = getAccountList();
+
         for (String s : accountList) {
             Preference accountScreen = createAccountPreferenceScreen(s);
             mRoot.addPreference(accountScreen);
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
index 9276db0..a64f792 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
@@ -44,6 +44,7 @@
 import android.view.SurfaceHolder.Callback;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Toast;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.model.Attractor;
@@ -72,6 +73,8 @@
 
     private SipCall myself;
 
+    boolean accepted = false;
+
     private Bitmap hangup_icon, separate_icon;
     private Bitmap call_icon;
 
@@ -82,7 +85,7 @@
         conf = new Conference((Conference) b.getParcelable("conference"));
         model = new BubbleModel(getResources().getDisplayMetrics().density);
         BUBBLE_SIZE = getResources().getDimension(R.dimen.bubble_size);
-        Log.e(TAG,"BUBBLE_SIZE "+BUBBLE_SIZE);
+        Log.e(TAG, "BUBBLE_SIZE " + BUBBLE_SIZE);
 
     }
 
@@ -292,7 +295,11 @@
         model.addAttractor(new Attractor(new PointF(4 * model.width / 5, model.height / 2), ATTRACTOR_SIZE, new Attractor.Callback() {
             @Override
             public boolean onBubbleSucked(Bubble b) {
-                mCallbacks.onCallAccepted(conf.getParticipants().get(0));
+
+                if (!accepted) {
+                    mCallbacks.onCallAccepted(conf.getParticipants().get(0));
+                    accepted = true;
+                }
                 return false;
             }
         }, call_icon));
diff --git a/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java b/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
index 68998ff..ccc59f8 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
@@ -77,9 +77,7 @@
     AccountSelectionAdapter mAccountAdapter;
     private Spinner spinnerAccounts;
     AccountsReceiver accountReceiver;
-
     private Callbacks mCallbacks = sDummyCallbacks;
-    // private Spinner spinnerAccounts;
 
     /**
      * A dummy implementation of the {@link Callbacks} interface that does nothing. Used only when this fragment is not attached to an activity.
diff --git a/src/com/savoirfairelinux/sflphone/service/ISipService.aidl b/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
index 4d99e42..cd65f2d 100644
--- a/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
+++ b/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
@@ -32,7 +32,7 @@
     /* Recording */
     void setRecordPath(in String path);
     String getRecordPath();
-    void setRecordingCall(in String id);
+    boolean toggleRecordingCall(in String id);
     boolean startRecordedFilePlayback(in String filepath);
 	void stopRecordedFilePlayback(in String filepath);
 	boolean isRecording(in String id);
diff --git a/src/com/savoirfairelinux/sflphone/service/SipService.java b/src/com/savoirfairelinux/sflphone/service/SipService.java
index 48fce75..1e2a637 100644
--- a/src/com/savoirfairelinux/sflphone/service/SipService.java
+++ b/src/com/savoirfairelinux/sflphone/service/SipService.java
@@ -231,7 +231,6 @@
             System.loadLibrary("samplerate");
             System.loadLibrary("codec_ulaw");
             System.loadLibrary("codec_alaw");
-            System.loadLibrary("codec_g722");
             System.loadLibrary("speexresampler");
             System.loadLibrary("sflphone");
             isPjSipStackStarted = true;
@@ -883,8 +882,7 @@
                 @Override
                 protected String doRun() throws SameThreadException {
                     Log.i(TAG, "SipService.getRecordPath() thread running...");
-                    // return configurationManager.getRecordPath();
-                    return "";
+                     return configurationManagerJNI.getRecordPath();
                 }
             }
 
@@ -899,14 +897,23 @@
         }
 
         @Override
-        public void setRecordingCall(final String id) throws RemoteException {
-            getExecutor().execute(new SipRunnable() {
+        public boolean toggleRecordingCall(final String id) throws RemoteException {
+            
+            class ToggleRecording extends SipRunnableWithReturn {
+
                 @Override
-                protected void doRun() throws SameThreadException, RemoteException {
-                    Log.i(TAG, "SipService.setRecordingCall() thread running...");
-                    callManagerJNI.toggleRecording(id);
+                protected Boolean doRun() throws SameThreadException {
+                    Log.i(TAG, "SipService.toggleRecordingCall() thread running...");
+                    return callManagerJNI.toggleRecording(id);
                 }
-            });
+            }
+
+            ToggleRecording runInstance = new ToggleRecording();
+            getExecutor().execute(runInstance);
+            while (!runInstance.isDone()) {
+            }
+
+            return (Boolean) runInstance.getVal();
 
         }
 
@@ -958,8 +965,8 @@
             getExecutor().execute(new SipRunnable() {
                 @Override
                 protected void doRun() throws SameThreadException, RemoteException {
-                    Log.i(TAG, "SipService.setRecordingCall() thread running...");
-                    // configurationManagerJNI.setRecordPath(path);
+                    Log.i(TAG, "SipService.setRecordPath() "+path+" thread running...");
+                     configurationManagerJNI.setRecordPath(path);
                 }
             });
         }
diff --git a/src/com/savoirfairelinux/sflphone/views/CustomSlidingDrawer.java b/src/com/savoirfairelinux/sflphone/views/CustomSlidingDrawer.java
index 9c97489..78c1e9c 100644
--- a/src/com/savoirfairelinux/sflphone/views/CustomSlidingDrawer.java
+++ b/src/com/savoirfairelinux/sflphone/views/CustomSlidingDrawer.java
@@ -124,6 +124,7 @@
     private final int mMaximumMajorVelocity;
     private final int mMaximumAcceleration;
     private final int mVelocityUnits;
+    private long pressTime;
 
     /**
      * Callback invoked when the drawer is opened.
@@ -334,7 +335,7 @@
 
 //        Log.i(TAG, "onInterceptTouchEvent");
         if (mLocked) {
-            Log.i(TAG, "Locked");
+//            Log.i(TAG, "Locked");
             return false;
         }
 
@@ -364,16 +365,18 @@
 
         // handle.getHitRect(frame);
         if (!mTracking && !frame.contains((int) x, (int) y)) {
-            Log.i(TAG, "not tracking and not in frame");
+//            Log.i(TAG, "not tracking and not in frame");
             return false;
         }
 
         if (action == MotionEvent.ACTION_DOWN) {
             mTracking = true;
-            Log.i(TAG, "action down");
+//            Log.i(TAG, "action down");
             handle.setPressed(true);
             // Must be called before prepareTracking()
             prepareContent();
+            
+            pressTime = System.currentTimeMillis();
 
             // Must be called after prepareContent()
             if (mOnDrawerScrollListener != null) {
@@ -411,6 +414,11 @@
                 moveHandle((int) (mVertical ? event.getY() : event.getX()) - mTouchDelta);
                 break;
             case MotionEvent.ACTION_UP:
+                if(System.currentTimeMillis() - pressTime <= 100){
+                    animateToggle();
+                    break;
+                }
+                
             case MotionEvent.ACTION_CANCEL: {
                 final VelocityTracker velocityTracker = mVelocityTracker;
                 velocityTracker.computeCurrentVelocity(mVelocityUnits);