ui: bump to material design

Refs #75022

Change-Id: I9db3858c1ab365de8572323bc19ef630da9774fd
diff --git a/ring-android/app/src/main/java/cx/ring/adapters/AccountSelectionAdapter.java b/ring-android/app/src/main/java/cx/ring/adapters/AccountSelectionAdapter.java
index 9b480bf..5f3ba7e 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/AccountSelectionAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/AccountSelectionAdapter.java
@@ -83,30 +83,66 @@
 
         if (rowView == null) {
             LayoutInflater inflater = LayoutInflater.from(mContext);
+            rowView = inflater.inflate(R.layout.item_account_selected, null);
+
+            entryView = new AccountView();
+            entryView.alias = (TextView) rowView.findViewById(R.id.account_alias);
+            entryView.host = (TextView) rowView.findViewById(R.id.account_host);
+            entryView.error = (ImageView) rowView.findViewById(R.id.error_indicator);
+            rowView.setTag(entryView);
+        } else {
+            entryView = (AccountView) rowView.getTag();
+        }
+/*
+        entryView.alias.setText(accounts.get(pos).getAlias());
+
+        entryView.host.setText(accounts.get(pos).getHost() + " - " + accounts.get(pos).getRegistered_state());
+        // accManager.displayAccountDetails(accounts.get(pos), entryView);
+        entryView.error.setVisibility(View.GONE);
+*/
+        updateAccountView(entryView, accounts.get(pos));
+
+        return rowView;
+    }
+
+    @Override
+    public View getDropDownView(int pos, View convertView, ViewGroup parent) {
+        View rowView = convertView;
+        AccountView entryView = null;
+
+        if (rowView == null) {
+            LayoutInflater inflater = LayoutInflater.from(mContext);
             rowView = inflater.inflate(R.layout.item_account, null);
 
             entryView = new AccountView();
             entryView.alias = (TextView) rowView.findViewById(R.id.account_alias);
             entryView.host = (TextView) rowView.findViewById(R.id.account_host);
-            entryView.select = (ImageView) rowView.findViewById(R.id.account_selected);
+            entryView.error = (ImageView) rowView.findViewById(R.id.error_indicator);
             rowView.setTag(entryView);
         } else {
             entryView = (AccountView) rowView.getTag();
         }
-
+/*
         entryView.alias.setText(accounts.get(pos).getAlias());
 
         entryView.host.setText(accounts.get(pos).getHost() + " - " + accounts.get(pos).getRegistered_state());
         // accManager.displayAccountDetails(accounts.get(pos), entryView);
         if (pos == selectedAccount) {
-            entryView.select.setVisibility(View.VISIBLE);
+            entryView.error.setVisibility(View.VISIBLE);
         } else {
-            entryView.select.setVisibility(View.GONE);
+            entryView.error.setVisibility(View.GONE);
         }
-
+*/
+        updateAccountView(entryView, accounts.get(pos));
         return rowView;
     }
 
+    private void updateAccountView(AccountView entryView, Account acc) {
+        entryView.alias.setText(acc.getAlias());
+        entryView.host.setText(acc.getHost() + " - " + acc.getRegistered_state());
+        entryView.error.setVisibility(View.GONE);
+    }
+
     public Account getAccount(String accountID) {
         for(Account acc : accounts) {
             if(acc.getAccountID().contentEquals(accountID))
@@ -121,7 +157,7 @@
     public class AccountView {
         public TextView alias;
         public TextView host;
-        public ImageView select;
+        public ImageView error;
     }
 
     public void setSelectedAccount(int pos) {
diff --git a/ring-android/app/src/main/java/cx/ring/adapters/SectionsPagerAdapter.java b/ring-android/app/src/main/java/cx/ring/adapters/SectionsPagerAdapter.java
index bae0414..b9b2d13 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/SectionsPagerAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/SectionsPagerAdapter.java
@@ -34,8 +34,8 @@
 import java.util.ArrayList;
 import java.util.Locale;
 
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
+import android.app.Fragment;
+import android.app.FragmentManager;
 import cx.ring.R;
 import cx.ring.fragments.CallListFragment;
 import cx.ring.fragments.DialingFragment;
@@ -43,9 +43,10 @@
 import com.astuetz.PagerSlidingTabStrip;
 
 import android.content.Context;
+import android.support.v13.app.FragmentStatePagerAdapter;
 import android.util.Log;
 
-public class SectionsPagerAdapter extends android.support.v4.app.FragmentStatePagerAdapter implements PagerSlidingTabStrip.IconTabProvider {
+public class SectionsPagerAdapter extends FragmentStatePagerAdapter implements PagerSlidingTabStrip.IconTabProvider {
 
     private static final String TAG = SectionsPagerAdapter.class.getSimpleName();
     Context mContext;
diff --git a/ring-android/app/src/main/java/cx/ring/client/CallActivity.java b/ring-android/app/src/main/java/cx/ring/client/CallActivity.java
index 9f2071c..8df8c72 100644
--- a/ring-android/app/src/main/java/cx/ring/client/CallActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/CallActivity.java
@@ -35,7 +35,7 @@
 
 import java.util.*;
 
-import android.support.v4.app.FragmentActivity;
+import android.app.Activity;
 import android.util.Log;
 import cx.ring.R;
 import cx.ring.fragments.CallFragment;
@@ -68,7 +68,7 @@
 import android.view.Window;
 import android.view.WindowManager;
 
-public class CallActivity extends FragmentActivity implements IMFragment.Callbacks, CallFragment.Callbacks, CallProximityManager.ProximityDirector {
+public class CallActivity extends Activity implements IMFragment.Callbacks, CallFragment.Callbacks, CallProximityManager.ProximityDirector {
 
     @SuppressWarnings("unused")
     static final String TAG = "CallActivity";
@@ -112,7 +112,7 @@
         }
 
         mSlidingPaneLayout.setCurFragment(mCurrentCallFragment);
-        getSupportFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment)
+        getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment)
                 .replace(R.id.message_list_frame, mIMFragment).commit();
     }
 
diff --git a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
index 7b4049c..9358e7e 100644
--- a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
@@ -42,7 +42,6 @@
 
 import android.app.Activity;
 import android.app.AlertDialog;
-import android.support.v4.app.*;
 import cx.ring.R;
 import cx.ring.fragments.AboutFragment;
 import cx.ring.fragments.AccountsManagementFragment;
@@ -62,6 +61,10 @@
 import cx.ring.views.SlidingUpPanelLayout;
 import cx.ring.views.SlidingUpPanelLayout.PanelSlideListener;
 
+import android.app.Fragment;
+import android.app.FragmentManager;
+
+import android.app.FragmentTransaction;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -77,22 +80,31 @@
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.support.design.widget.FloatingActionButton;
+import android.support.design.widget.NavigationView;
+import android.support.v4.app.FragmentActivity;
 import android.support.v4.view.GravityCompat;
 import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBarDrawerToggle;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
 import android.util.Log;
+import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.RelativeLayout;
 import android.widget.Toast;
 
-public class HomeActivity extends FragmentActivity implements DialingFragment.Callbacks, AccountsManagementFragment.Callbacks,
-        ContactListFragment.Callbacks, CallListFragment.Callbacks, HistoryFragment.Callbacks, MenuFragment.Callbacks {
+public class HomeActivity extends AppCompatActivity implements DialingFragment.Callbacks, AccountsManagementFragment.Callbacks,
+        ContactListFragment.Callbacks, CallListFragment.Callbacks, HistoryFragment.Callbacks, NavigationView.OnNavigationItemSelectedListener, MenuFragment.Callbacks {
 
     static final String TAG = HomeActivity.class.getSimpleName();
 
     private ContactListFragment mContactsFragment = null;
-    private MenuFragment fMenu;
+    private NavigationView fMenu;
+    private MenuFragment fMenuHead = null;
 
     private boolean mBound = false;
     private ISipService service;
@@ -103,6 +115,8 @@
     SlidingUpPanelLayout mContactDrawer;
     private DrawerLayout mNavigationDrawer;
     private ActionBarDrawerToggle mDrawerToggle;
+    private Toolbar toolbar;
+    private FloatingActionButton actionButton;
 
     private boolean isClosing = false;
     private Timer t = new Timer();
@@ -128,6 +142,13 @@
             bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
         }
 
+        toolbar = (Toolbar) findViewById(R.id.main_toolbar);
+        setSupportActionBar(toolbar);
+        actionButton = (FloatingActionButton) findViewById(R.id.action_button);
+
+        fMenu = (NavigationView) findViewById(R.id.left_drawer);
+        fMenu.setNavigationItemSelectedListener(this);
+
         mContactsFragment = new ContactListFragment();
         getFragmentManager().beginTransaction().replace(R.id.contacts_frame, mContactsFragment).commit();
 
@@ -141,12 +162,12 @@
             @Override
             public void onPanelSlide(View panel, float slideOffset) {
                 if (slideOffset < 0.2) {
-                    if (getActionBar().isShowing()) {
-                        getActionBar().hide();
+                    if (getSupportActionBar().isShowing()) {
+                        getSupportActionBar().hide();
                     }
                 } else {
-                    if (!getActionBar().isShowing()) {
-                        getActionBar().show();
+                    if (!getSupportActionBar().isShowing()) {
+                        getSupportActionBar().show();
                     }
                 }
             }
@@ -169,27 +190,23 @@
 
         mNavigationDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
 
-        // set a custom shadow that overlays the main content when the drawer opens
-        mNavigationDrawer.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
-
-        getActionBar().setDisplayHomeAsUpEnabled(true);
-        getActionBar().setHomeButtonEnabled(true);
+        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+        getSupportActionBar().setHomeButtonEnabled(true);
 
         mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
                 mNavigationDrawer, /* DrawerLayout object */
-                R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
+                //  R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
                 R.string.drawer_open, /* "open drawer" description for accessibility */
                 R.string.drawer_close /* "close drawer" description for accessibility */
         ) {
             @Override
             public void onDrawerClosed(View view) {
-                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
+                invalidateOptionsMenu();
             }
 
             @Override
             public void onDrawerOpened(View drawerView) {
-                // getActionBar().setTitle(mDrawerTitle);
-                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
+                invalidateOptionsMenu();
             }
         };
 
@@ -203,7 +220,7 @@
         // Sync the toggle state after onRestoreInstanceState has occurred.
         mDrawerToggle.syncState();
         if (mContactDrawer.isExpanded()) {
-            getActionBar().hide();
+            getSupportActionBar().hide();
         }
     }
 
@@ -227,6 +244,29 @@
 
     }
 
+    public void setToolbarState(boolean double_h, int title_res) {
+        TypedValue tv = new TypedValue();
+        if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
+            int abSz = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
+            ViewGroup.LayoutParams params = toolbar.getLayoutParams();
+            if (double_h) {
+                params.height = abSz*2;
+                actionButton.setVisibility(View.VISIBLE);
+            }
+            else {
+                params.height = abSz;
+                actionButton.setVisibility(View.GONE);
+            }
+            toolbar.setLayoutParams(params);
+            toolbar.setMinimumHeight(abSz);
+        }
+        toolbar.setTitle(title_res);
+    }
+
+    public FloatingActionButton getActionButton() {
+        return actionButton;
+    }
+
     private static boolean copyAssetFolder(AssetManager assetManager, String fromAssetPath, String toPath) {
         try {
             String[] files = assetManager.list(fromAssetPath);
@@ -301,9 +341,9 @@
             return;
         }
 
-        if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
+        if (getFragmentManager().getBackStackEntryCount() > 1) {
             popCustomBackStack();
-            fMenu.backToHome();
+            fMenu.getMenu().findItem(R.id.menuitem_home).setChecked(true);
             return;
         }
 
@@ -324,7 +364,7 @@
     }
 
     private void popCustomBackStack() {
-        FragmentManager fm = getSupportFragmentManager();
+        FragmentManager fm = getFragmentManager();
         FragmentManager.BackStackEntry entry = fm.getBackStackEntryAt(0);
         fContent = fm.findFragmentByTag(entry.getName());
         for (int i = 0; i < fm.getBackStackEntryCount() - 1; ++i) {
@@ -372,15 +412,23 @@
         @Override
         public void onServiceConnected(ComponentName className, IBinder binder) {
             service = ISipService.Stub.asInterface(binder);
-            fMenu = new MenuFragment();
             fContent = new HomeFragment();
-            getSupportFragmentManager().beginTransaction().replace(R.id.left_drawer, fMenu).replace(R.id.main_frame, fContent, "Home").addToBackStack("Home").commit();
+            if (fMenuHead != null)
+                fMenu.removeHeaderView(fMenuHead.getView());
+            fMenu.inflateHeaderView(R.layout.menuheader);
+            fMenuHead = (MenuFragment) getFragmentManager().findFragmentById(R.id.accountselector);
+
+            getFragmentManager().beginTransaction().replace(R.id.main_frame, fContent, "Home").addToBackStack("Home").commit();
             mBound = true;
             Log.d(TAG, "Service connected service=" + service);
         }
 
         @Override
         public void onServiceDisconnected(ComponentName arg0) {
+            if (fMenuHead != null) {
+                fMenu.removeHeaderView(fMenuHead.getView());
+                fMenuHead = null;
+            }
 
             mBound = false;
             Log.d(TAG, "Service disconnected service=" + service);
@@ -405,8 +453,8 @@
         switch (requestCode) {
             case REQUEST_CODE_PREFERENCES:
             case AccountsManagementFragment.ACCOUNT_EDIT_REQUEST:
-                if (fMenu != null)
-                    fMenu.updateAllAccounts();
+                if (fMenuHead != null)
+                    fMenuHead.updateAllAccounts();
                 break;
             case REQUEST_CODE_CALL:
                 if (resultCode == CallActivity.RESULT_FAILURE) {
@@ -438,17 +486,17 @@
     @Override
     public void onCallContact(final CallContact c) {
 
-        if (fMenu.getSelectedAccount() == null) {
+        if (fMenuHead.getSelectedAccount() == null) {
             createAccountDialog().show();
             return;
         }
 
-        if (!fMenu.getSelectedAccount().isRegistered()) {
+        if (!fMenuHead.getSelectedAccount().isRegistered()) {
             createNotRegisteredDialog().show();
             return;
         }
 
-        getActionBar().show();
+        getSupportActionBar().show();
         Thread launcher = new Thread(new Runnable() {
 
             final String[] CONTACTS_PHONES_PROJECTION = new String[]{Phone.NUMBER, Phone.TYPE};
@@ -459,7 +507,7 @@
 
                 Bundle args = new Bundle();
                 args.putString(SipCall.ID, Integer.toString(Math.abs(new Random().nextInt())));
-                args.putParcelable(SipCall.ACCOUNT, fMenu.getSelectedAccount());
+                args.putParcelable(SipCall.ACCOUNT, fMenuHead.getSelectedAccount());
                 args.putInt(SipCall.STATE, SipCall.state.CALL_STATE_NONE);
                 args.putInt(SipCall.TYPE, SipCall.direction.CALL_TYPE_OUTGOING);
 
@@ -492,7 +540,7 @@
     @Override
     public void onCallHistory(HistoryEntry to) {
 
-        Account usedAccount = fMenu.retrieveAccountById(to.getAccountID());
+        Account usedAccount = fMenuHead.retrieveAccountById(to.getAccountID());
 
         if (usedAccount == null) {
             createAccountDialog().show();
@@ -519,14 +567,14 @@
 
     @Override
     public void onCallDialed(String to) {
-        Account usedAccount = fMenu.getSelectedAccount();
+        Account usedAccount = fMenuHead.getSelectedAccount();
 
         if (usedAccount == null) {
             createAccountDialog().show();
             return;
         }
 
-        if (fMenu.getSelectedAccount().isRegistered()) {
+        if (usedAccount.isRegistered() || usedAccount.isIP2IP()) {
             Bundle args = new Bundle();
             args.putString(SipCall.ID, Integer.toString(Math.abs(new Random().nextInt())));
             args.putParcelable(SipCall.ACCOUNT, usedAccount);
@@ -615,37 +663,39 @@
     }
 
     @Override
-    public void onSectionSelected(int pos) {
-
+    public boolean onNavigationItemSelected(MenuItem pos) {
+        pos.setChecked(true);
         mNavigationDrawer.closeDrawers();
 
-        switch (pos) {
-            case 0:
+        switch (pos.getItemId()) {
+            case R.id.menuitem_home:
 
                 if (fContent instanceof HomeFragment)
                     break;
 
-                if (getSupportFragmentManager().getBackStackEntryCount() == 1)
+                if (getFragmentManager().getBackStackEntryCount() == 1)
                     break;
 
                 popCustomBackStack();
 
                 break;
-            case 1:
+            case  R.id.menuitem_accounts:
                 if (fContent instanceof AccountsManagementFragment)
                     break;
                 fContent = new AccountsManagementFragment();
-                getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "Accounts").addToBackStack("Accounts").commit();
+                getFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "Accounts").addToBackStack("Accounts").commit();
                 break;
-            case 2:
+            case R.id.menuitem_about:
                 if (fContent instanceof AboutFragment)
                     break;
                 fContent = new AboutFragment();
-                getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "About").addToBackStack("About").commit();
+                getFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "About").addToBackStack("About").commit();
                 break;
+            default:
+                return false;
         }
 
-
+        return true;
     }
 
 }
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AboutFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AboutFragment.java
index be1037c..27605be 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/AboutFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/AboutFragment.java
@@ -2,7 +2,7 @@
 
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
+import android.app.Fragment;
 import android.text.Html;
 import android.text.method.LinkMovementMethod;
 import android.view.LayoutInflater;
@@ -10,13 +10,14 @@
 import android.view.ViewGroup;
 import android.widget.TextView;
 import cx.ring.R;
+import cx.ring.client.HomeActivity;
 
 public class AboutFragment extends Fragment {
 
     @Override
     public void onResume() {
         super.onResume();
-        getActivity().getActionBar().setTitle(R.string.menu_item_about);
+        ((HomeActivity)getActivity()).setToolbarState(false, R.string.menu_item_about);
     }
 
     @Override
@@ -32,7 +33,7 @@
         }
 
         TextView link = (TextView) inflatedView.findViewById(R.id.web_site);
-        String linkText = "<a href='http://sflphone.org/'>" + getResources().getString(R.string.web_site) + "</a>";
+        String linkText = "<a href='http://ring.cx'>" + getResources().getString(R.string.web_site) + "</a>";
         link.setText(Html.fromHtml(linkText));
         link.setMovementMethod(LinkMovementMethod.getInstance());
 
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AccountWrapperFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AccountWrapperFragment.java
index 6172708..80257f3 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/AccountWrapperFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/AccountWrapperFragment.java
@@ -36,7 +36,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
+import android.app.Fragment;
 import android.util.Log;
 import cx.ring.interfaces.AccountsInterface;
 import cx.ring.service.ConfigurationManagerCallback;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java
index 09da403..7384c9a 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java
@@ -35,24 +35,33 @@
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.app.Activity;
+import android.app.LoaderManager;
+import android.content.AsyncTaskLoader;
 import android.content.Context;
 import android.content.Intent;
+import android.content.Loader;
+import android.graphics.PorterDuff;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.content.AsyncTaskLoader;
-import android.support.v4.content.Loader;
+import android.support.design.widget.FloatingActionButton;
+import android.support.v7.app.ActionBar;
+import android.support.v7.widget.*;
+import android.support.v7.widget.Toolbar;
 import android.util.Log;
+import android.util.TypedValue;
 import android.view.*;
 import android.view.View.OnClickListener;
 import android.widget.*;
 import android.widget.AdapterView.OnItemClickListener;
+
 import cx.ring.R;
 import cx.ring.client.AccountEditionActivity;
 import cx.ring.client.AccountWizard;
+import cx.ring.client.HomeActivity;
 import cx.ring.loaders.AccountsLoader;
 import cx.ring.loaders.LoaderConstants;
 import cx.ring.model.account.Account;
+import cx.ring.model.account.AccountDetailBasic;
 import cx.ring.service.ISipService;
 import cx.ring.views.dragsortlv.DragSortListView;
 
@@ -60,7 +69,7 @@
 import java.util.ArrayList;
 
 public class AccountsManagementFragment extends AccountWrapperFragment implements LoaderManager.LoaderCallbacks<Bundle> {
-    static final String TAG = "AccountManagementFragment";
+    static final String TAG = "AccountManagementFrag";
     static final String DEFAULT_ACCOUNT_ID = "IP2IP";
     static final int ACCOUNT_CREATE_REQUEST = 1;
     public static final int ACCOUNT_EDIT_REQUEST = 2;
@@ -138,7 +147,7 @@
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
         View inflatedView = inflater.inflate(R.layout.frag_accounts_list, parent, false);
-        ((ListView)inflatedView.findViewById(R.id.accounts_list)).setAdapter(mAccountsAdapter);
+        ((ListView) inflatedView.findViewById(R.id.accounts_list)).setAdapter(mAccountsAdapter);
 
         return inflatedView;
     }
@@ -179,7 +188,16 @@
     public void onResume() {
         super.onResume();
         accountsLoader.onContentChanged();
-        getActivity().getActionBar().setTitle(R.string.menu_item_accounts);
+        ((HomeActivity) getActivity()).setToolbarState(true, R.string.menu_item_accounts);
+        FloatingActionButton btn = ((HomeActivity) getActivity()).getActionButton();
+        btn.setImageResource(R.drawable.ic_add_white_24dp);
+        btn.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent().setClass(getActivity(), AccountWizard.class);
+                startActivityForResult(intent, ACCOUNT_CREATE_REQUEST);
+            }
+        });
     }
 
     @Override
@@ -287,6 +305,7 @@
                 rowView = inflater.inflate(R.layout.item_account_pref, null);
 
                 entryView = new AccountView();
+                entryView.handle = (ImageView) rowView.findViewById(R.id.drag_handle);
                 entryView.alias = (TextView) rowView.findViewById(R.id.account_alias);
                 entryView.host = (TextView) rowView.findViewById(R.id.account_host);
                 entryView.enabled = (CheckBox) rowView.findViewById(R.id.account_checked);
@@ -300,15 +319,18 @@
             if (item.isIP2IP()) {
                 entryView.host.setText(item.getRegistered_state());
                 entryView.enabled.setVisibility(View.GONE);
+                entryView.handle.setVisibility(View.INVISIBLE);
             } else {
-                entryView.host.setText(item.getHost() + " - " + item.getRegistered_state());
+                if (item.isSip())
+                    entryView.host.setText(item.getHost() + " - " + item.getRegistered_state());
+                else
+                    entryView.host.setText(item.getBasicDetails().getDetailString(AccountDetailBasic.CONFIG_ACCOUNT_USERNAME));
                 entryView.enabled.setChecked(item.isEnabled());
                 entryView.enabled.setOnClickListener(new OnClickListener() {
 
                     @Override
                     public void onClick(View v) {
                         item.setEnabled(!item.isEnabled());
-
                         try {
                             mCallbacks.getService().setAccountDetails(item.getAccountID(), item.getDetails());
                         } catch (RemoteException e) {
@@ -327,6 +349,7 @@
          * *******************
          */
         public class AccountView {
+            public ImageView handle;
             public TextView alias;
             public TextView host;
             public CheckBox enabled;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
index b2b2406..24bd94f 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
@@ -32,6 +32,7 @@
 package cx.ring.fragments;
 
 import android.app.Activity;
+import android.app.FragmentManager;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -46,7 +47,6 @@
 import android.os.PowerManager;
 import android.os.PowerManager.WakeLock;
 import android.os.RemoteException;
-import android.support.v4.app.FragmentManager;
 import android.util.FloatMath;
 import android.util.Log;
 import android.view.*;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CallableWrapperFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/CallableWrapperFragment.java
index 53ccc01..eb0a632 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/CallableWrapperFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/CallableWrapperFragment.java
@@ -36,7 +36,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
+import android.app.Fragment;
 import android.util.Log;
 import cx.ring.interfaces.CallInterface;
 import cx.ring.model.Conference;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/DialingFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/DialingFragment.java
index 7a634f9..71425d4 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/DialingFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/DialingFragment.java
@@ -33,7 +33,7 @@
 
 import java.util.Locale;
 
-import android.support.v4.app.Fragment;
+import android.app.Fragment;
 import cx.ring.R;
 import cx.ring.service.ISipService;
 import cx.ring.views.ClearableEditText;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/DropActionsChoice.java b/ring-android/app/src/main/java/cx/ring/fragments/DropActionsChoice.java
index 5e09f23..9dd2ebc 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/DropActionsChoice.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/DropActionsChoice.java
@@ -31,7 +31,7 @@
 
 package cx.ring.fragments;
 
-import android.support.v4.app.DialogFragment;
+import android.app.DialogFragment;
 import cx.ring.R;
 
 import android.app.AlertDialog;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/HistoryFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/HistoryFragment.java
index 7a04f0a..c7221b3 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/HistoryFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/HistoryFragment.java
@@ -34,10 +34,10 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import android.support.v4.app.ListFragment;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.content.AsyncTaskLoader;
-import android.support.v4.content.Loader;
+import android.app.ListFragment;
+import android.app.LoaderManager;
+import android.content.AsyncTaskLoader;
+import android.content.Loader;
 import android.view.*;
 import cx.ring.R;
 import cx.ring.adapters.ContactPictureTask;
@@ -62,7 +62,8 @@
 import android.widget.ListAdapter;
 import android.widget.TextView;
 
-public class HistoryFragment extends ListFragment implements LoaderManager.LoaderCallbacks<ArrayList<HistoryEntry>> {
+public class HistoryFragment extends ListFragment implements LoaderManager.LoaderCallbacks<ArrayList<HistoryEntry>>
+{
 
     private static final String TAG = HistoryFragment.class.getSimpleName();
 
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/HomeFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/HomeFragment.java
index b89841d..b0c58d8 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/HomeFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/HomeFragment.java
@@ -30,12 +30,15 @@
  */
 package cx.ring.fragments;
 
-import android.support.v4.app.Fragment;
 import cx.ring.R;
 import cx.ring.adapters.SectionsPagerAdapter;
+import cx.ring.client.HomeActivity;
+
 import com.astuetz.PagerSlidingTabStrip;
 
 import android.app.Activity;
+import android.app.Fragment;
+
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v4.view.ViewPager;
@@ -55,7 +58,7 @@
     @Override
     public void onResume() {
         super.onResume();
-        getActivity().getActionBar().setTitle(R.string.menu_item_home);
+        ((HomeActivity)getActivity()).setToolbarState(false, R.string.app_name);
     }
 
     @Override
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/MenuFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/MenuFragment.java
index d7653d8..42bc786 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/MenuFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/MenuFragment.java
@@ -31,18 +31,17 @@
 package cx.ring.fragments;
 
 import android.app.Activity;
+import android.app.LoaderManager;
+import android.content.AsyncTaskLoader;
 import android.content.Intent;
+import android.content.Loader;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.content.AsyncTaskLoader;
-import android.support.v4.content.Loader;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.*;
-import android.widget.AdapterView.OnItemClickListener;
 import android.widget.AdapterView.OnItemSelectedListener;
 import cx.ring.R;
 import cx.ring.adapters.AccountSelectionAdapter;
@@ -63,20 +62,11 @@
     AccountSelectionAdapter mAccountAdapter;
     private Spinner spinnerAccounts;
     private Callbacks mCallbacks = sDummyCallbacks;
-
-    private ListView sections;
-
     private static Callbacks sDummyCallbacks = new Callbacks() {
-
         @Override
         public ISipService getService() {
             return null;
         }
-
-        @Override
-        public void onSectionSelected(int pos) {
-
-        }
     };
 
     public Account retrieveAccountById(String accountID) {
@@ -90,11 +80,7 @@
     }
 
     public interface Callbacks {
-
-        public ISipService getService();
-
-        public void onSectionSelected(int pos);
-
+        ISipService getService();
     }
 
     @Override
@@ -140,20 +126,7 @@
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
-        View inflatedView = inflater.inflate(R.layout.frag_menu, parent, false);
-
-        ArrayAdapter<String> paramAdapter = new ArrayAdapter<String>(getActivity(), R.layout.item_menu, getResources().getStringArray(
-                R.array.menu_items_param));
-        sections = (ListView) inflatedView.findViewById(R.id.listView);
-        sections.setAdapter(paramAdapter);
-        backToHome();
-        sections.setOnItemClickListener(new OnItemClickListener() {
-
-            @Override
-            public void onItemClick(AdapterView<?> arg0, View selected, int pos, long arg3) {
-                mCallbacks.onSectionSelected(pos);
-            }
-        });
+        View inflatedView = inflater.inflate(R.layout.frag_menu_header, parent, false);
 
         spinnerAccounts = (Spinner) inflatedView.findViewById(R.id.account_selection);
         mAccountAdapter = new AccountSelectionAdapter(getActivity(), new ArrayList<Account>());
@@ -162,8 +135,9 @@
 
             @Override
             public void onItemSelected(AdapterView<?> arg0, View view, int pos, long arg3) {
+                Log.w(TAG, "onItemSelected -> setSelectedAccount" + pos);
                 mAccountAdapter.setSelectedAccount(pos);
-                view.findViewById(R.id.account_selected).setVisibility(View.GONE);
+                //view.findViewById(R.id.account_selected).setVisibility(View.GONE);
                 try {
                     mCallbacks.getService().setAccountOrder(mAccountAdapter.getAccountOrder());
                 } catch (RemoteException e) {
@@ -173,6 +147,7 @@
 
             @Override
             public void onNothingSelected(AdapterView<?> arg0) {
+                Log.w(TAG, "onNothingSelected -1");
                 mAccountAdapter.setSelectedAccount(-1);
             }
         });
@@ -191,6 +166,8 @@
     }
 
     public Account getSelectedAccount() {
+        Log.w(TAG, "getSelectedAccount " + mAccountAdapter.getSelectedAccount().getAccountID());
+
         return mAccountAdapter.getSelectedAccount();
     }
 
@@ -207,6 +184,8 @@
 
     @Override
     public void accountStateChanged(String accoundID, String state, int code) {
+        Log.w(TAG, "accountStateChanged " + accoundID + " " + state);
+
         if (mAccountAdapter != null)
             mAccountAdapter.updateAccount(accoundID, state, code);
     }
@@ -222,6 +201,7 @@
     public void onLoadFinished(Loader<Bundle> loader, Bundle data) {
         mAccountAdapter.removeAll();
         ArrayList<Account> accounts = data.getParcelableArrayList(AccountsLoader.ACCOUNTS);
+        accounts.add((Account)data.getParcelable(AccountsLoader.ACCOUNT_IP2IP));
         mAccountAdapter.addAll(accounts);
     }
 
@@ -230,8 +210,4 @@
 
     }
 
-    public void backToHome() {
-        sections.setItemChecked(0, true);
-    }
-
 }
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/TransferDFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/TransferDFragment.java
index 9d51c78..cb331de 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/TransferDFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/TransferDFragment.java
@@ -36,7 +36,7 @@
 import java.util.List;
 
 import android.app.Dialog;
-import android.support.v4.app.DialogFragment;
+import android.app.DialogFragment;
 import cx.ring.R;
 import cx.ring.loaders.ContactsLoader;
 import cx.ring.model.Conference;
diff --git a/ring-android/app/src/main/java/cx/ring/loaders/AccountsLoader.java b/ring-android/app/src/main/java/cx/ring/loaders/AccountsLoader.java
index 0f9eb39..962fe02 100644
--- a/ring-android/app/src/main/java/cx/ring/loaders/AccountsLoader.java
+++ b/ring-android/app/src/main/java/cx/ring/loaders/AccountsLoader.java
@@ -35,10 +35,10 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import android.support.v4.content.AsyncTaskLoader;
 import cx.ring.model.account.Account;
 import cx.ring.service.ISipService;
 
+import android.content.AsyncTaskLoader;
 import android.content.Context;
 import android.os.Bundle;
 import android.os.RemoteException;
@@ -78,6 +78,7 @@
                 if (id.contentEquals(ACCOUNT_IP2IP)) {
                     details = (HashMap<String, String>) service.getAccountDetails(id);
                     IP2IP = new Account(ACCOUNT_IP2IP, details, new ArrayList<Map<String, String>>()); // Empty credentials
+                    //accounts.add(IP2IP);
                     continue;
                 }
                 details = (Map<String, String>) service.getAccountDetails(id);
diff --git a/ring-android/app/src/main/java/cx/ring/loaders/HistoryLoader.java b/ring-android/app/src/main/java/cx/ring/loaders/HistoryLoader.java
index 5d878aa..b6712ea 100644
--- a/ring-android/app/src/main/java/cx/ring/loaders/HistoryLoader.java
+++ b/ring-android/app/src/main/java/cx/ring/loaders/HistoryLoader.java
@@ -31,10 +31,10 @@
 
 package cx.ring.loaders;
 
+import android.content.AsyncTaskLoader;
 import android.content.Context;
 import android.database.Cursor;
 import android.provider.ContactsContract;
-import android.support.v4.content.AsyncTaskLoader;
 import cx.ring.history.HistoryCall;
 import cx.ring.history.HistoryEntry;
 import cx.ring.history.HistoryManager;
diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_add_circle_white_48dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_add_circle_white_48dp.png
new file mode 100644
index 0000000..de713bc
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-hdpi/ic_add_circle_white_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_add_white_24dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_add_white_24dp.png
new file mode 100644
index 0000000..694179b
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-hdpi/ic_add_white_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_error_white_24dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_error_white_24dp.png
new file mode 100644
index 0000000..69cbb1e
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-hdpi/ic_error_white_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_group_black_48dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_group_black_48dp.png
new file mode 100644
index 0000000..5a8b5d0
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-hdpi/ic_group_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_home_black_48dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_home_black_48dp.png
new file mode 100644
index 0000000..2e86cc2
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-hdpi/ic_home_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_info_black_48dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_info_black_48dp.png
new file mode 100644
index 0000000..a81eeb9
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-hdpi/ic_info_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_24dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_24dp.png
new file mode 100644
index 0000000..142d715
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_36dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_36dp.png
new file mode 100644
index 0000000..b439931
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_36dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_add_circle_white_48dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_add_circle_white_48dp.png
new file mode 100644
index 0000000..4d1cbca
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-mdpi/ic_add_circle_white_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_add_white_24dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_add_white_24dp.png
new file mode 100644
index 0000000..3856041
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-mdpi/ic_add_white_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_error_white_24dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_error_white_24dp.png
new file mode 100644
index 0000000..ca148fc
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-mdpi/ic_error_white_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_group_black_48dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_group_black_48dp.png
new file mode 100644
index 0000000..c2e9ffe
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-mdpi/ic_group_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_home_black_48dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_home_black_48dp.png
new file mode 100644
index 0000000..dcdcfc0
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-mdpi/ic_home_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_info_black_48dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_info_black_48dp.png
new file mode 100644
index 0000000..46ed12a
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-mdpi/ic_info_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_24dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_24dp.png
new file mode 100644
index 0000000..d18997c
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_36dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_36dp.png
new file mode 100644
index 0000000..142d715
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_36dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_add_circle_white_48dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_add_circle_white_48dp.png
new file mode 100644
index 0000000..4244b5e
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xhdpi/ic_add_circle_white_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_add_white_24dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_add_white_24dp.png
new file mode 100644
index 0000000..67bb598
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xhdpi/ic_add_white_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_error_white_24dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_error_white_24dp.png
new file mode 100644
index 0000000..9829698
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xhdpi/ic_error_white_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_group_black_48dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_group_black_48dp.png
new file mode 100644
index 0000000..2994e7c
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xhdpi/ic_group_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_home_black_48dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_home_black_48dp.png
new file mode 100644
index 0000000..04e2b26
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xhdpi/ic_home_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_info_black_48dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_info_black_48dp.png
new file mode 100644
index 0000000..c8f86b9
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xhdpi/ic_info_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_24dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_24dp.png
new file mode 100644
index 0000000..0b080a1
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_36dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_36dp.png
new file mode 100644
index 0000000..0a66529
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_36dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_add_circle_white_48dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_add_circle_white_48dp.png
new file mode 100644
index 0000000..4f5005d
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxhdpi/ic_add_circle_white_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_add_white_24dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_add_white_24dp.png
new file mode 100644
index 0000000..0fdced8
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxhdpi/ic_add_white_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_error_white_24dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_error_white_24dp.png
new file mode 100644
index 0000000..abe2573
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxhdpi/ic_error_white_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_group_black_48dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_group_black_48dp.png
new file mode 100644
index 0000000..1fa4b3c
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxhdpi/ic_group_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_home_black_48dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_home_black_48dp.png
new file mode 100644
index 0000000..d66401c
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxhdpi/ic_home_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_info_black_48dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_info_black_48dp.png
new file mode 100644
index 0000000..74b5ecb
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxhdpi/ic_info_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_24dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_24dp.png
new file mode 100644
index 0000000..0a66529
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_36dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_36dp.png
new file mode 100644
index 0000000..d72a9b9
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_36dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_circle_white_48dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_circle_white_48dp.png
new file mode 100644
index 0000000..7332c75
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_circle_white_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_white_24dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_white_24dp.png
new file mode 100644
index 0000000..d64c22e
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_white_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_error_white_24dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_error_white_24dp.png
new file mode 100644
index 0000000..830fb7e
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_error_white_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_group_black_48dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_group_black_48dp.png
new file mode 100644
index 0000000..b9f2b92
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_group_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_home_black_48dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_home_black_48dp.png
new file mode 100644
index 0000000..8fac2c3
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_home_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_info_black_48dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_info_black_48dp.png
new file mode 100644
index 0000000..4192281
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_info_black_48dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_24dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_24dp.png
new file mode 100644
index 0000000..56a5bc8
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_24dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_36dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_36dp.png
new file mode 100644
index 0000000..b5cfb69
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_36dp.png
Binary files differ
diff --git a/ring-android/app/src/main/res/layout/activity_home.xml b/ring-android/app/src/main/res/layout/activity_home.xml
index 66422c9..5bbadcc 100644
--- a/ring-android/app/src/main/res/layout/activity_home.xml
+++ b/ring-android/app/src/main/res/layout/activity_home.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?><!--
 Copyright (C) 2004-2014 Savoir-Faire Linux Inc.                     
                                                                     
-Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>                     
-                                                                    
+Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
+Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com>
+
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 3 of the License, or   
@@ -31,22 +31,66 @@
 -->
 
 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/drawer_layout"
     android:layout_width="match_parent"
-    android:layout_height="match_parent" >
+    android:layout_height="match_parent"
+    android:fitsSystemWindows="true">
 
     <cx.ring.views.SlidingUpPanelLayout
         android:id="@+id/contact_panel"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" >
+        android:layout_height="match_parent">
 
-        <FrameLayout
-            android:id="@+id/main_frame"
+        <RelativeLayout
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:paddingTop="?android:attr/actionBarSize"
-            android:orientation="vertical" >
-        </FrameLayout>
+            android:layout_height="match_parent">
+
+            <android.support.v7.widget.Toolbar
+                android:id="@+id/main_toolbar"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentStart="true"
+                android:layout_alignParentTop="true"
+
+                android:background="@color/sfl_dark_blue"
+                android:elevation="4dp"
+                android:gravity="bottom"
+                android:longClickable="true"
+                android:minHeight="?android:attr/actionBarSize"
+                android:popupTheme="@style/Theme.AppCompat.Light.NoActionBar"
+                android:theme="@style/MyActionBar"
+                app:contentInsetStart="72dp"
+                app:elevation="4dp"
+                app:popupTheme="@style/Theme.AppCompat.Light.NoActionBar"
+                app:titleMarginBottom="16dp" />
+
+            <FrameLayout
+                android:id="@+id/main_frame"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentStart="true"
+                android:layout_below="@id/main_toolbar"
+                android:orientation="vertical" />
+
+            <android.support.design.widget.FloatingActionButton
+                android:id="@+id/action_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignBottom="@id/main_toolbar"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentStart="true"
+                android:layout_centerVertical="true"
+                android:layout_marginBottom="-20dp"
+                android:layout_marginLeft="16dp"
+                android:layout_marginStart="20dp"
+                android:elevation="4dp"
+                android:visibility="gone"
+                app:elevation="4dp"
+                app:fabSize="mini" />
+        </RelativeLayout>
 
         <FrameLayout
             android:id="@+id/contacts_frame"
@@ -57,13 +101,15 @@
             android:focusableInTouchMode="true" />
     </cx.ring.views.SlidingUpPanelLayout>
 
-    <FrameLayout
+    <android.support.design.widget.NavigationView
         android:id="@+id/left_drawer"
-        android:layout_width="300dp"
+        android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:layout_gravity="start"
-        android:choiceMode="singleChoice"
-        android:divider="@android:color/transparent"
-        android:dividerHeight="0dp" />
+        android:fitsSystemWindows="true"
+        android:theme="@style/AppThemeBase"
+        android:windowBackground="@color/white"
+        app:itemTextColor="?android:textColorPrimary"
+        app:menu="@menu/drawer" />
 
 </android.support.v4.widget.DrawerLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/frag_accounts_list.xml b/ring-android/app/src/main/res/layout/frag_accounts_list.xml
index c0fee12..22d71dc 100644
--- a/ring-android/app/src/main/res/layout/frag_accounts_list.xml
+++ b/ring-android/app/src/main/res/layout/frag_accounts_list.xml
@@ -1,75 +1,65 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:dslv="http://schemas.android.com/apk/res/cx.ring"
+    xmlns:dslv="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical" >
-
-    <TextView
-        android:id="@+id/normal_account_list"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/sfl_another_blue"
-        android:paddingLeft="5dp"
-        android:singleLine="true"
-        android:text="@string/preference_section1"
-        android:textAppearance="@android:style/TextAppearance.Holo.Medium.Inverse"
-        android:textColor="@color/white" />
-
-    <RelativeLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content" >
-
-        <cx.ring.views.dragsortlv.DragSortListView
-            android:id="@+id/accounts_list"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="@color/white"
-            android:choiceMode="multipleChoice"
-            android:dividerHeight="1px"
-            android:visibility="gone"
-            dslv:collapsed_height="1px"
-            dslv:drag_enabled="true"
-            dslv:drag_handle_id="@id/drag_handle"
-            dslv:drag_scroll_start="0.33"
-            dslv:drag_start_mode="onDown"
-            dslv:float_alpha="0.6"
-            dslv:float_background_color="@color/sfl_action_blue"
-            dslv:remove_enabled="false"
-            dslv:slide_shuffle_speed="0.3" />
-
-        <ProgressBar
-            android:id="@+id/loading_spinner"
-            style="?android:progressBarStyle"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_margin="15dp"
-            android:layout_centerInParent="true"
-            android:layout_gravity="center" />
+    android:orientation="vertical"
+    android:background="@color/white"
+    >
 
         <TextView
-            android:id="@+id/empty_account_list"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerInParent="true"
-            android:layout_gravity="center"
-            android:gravity="center"
-            android:text="@string/empty_account_list"
-            android:textSize="40sp"
-            android:visibility="gone" >
-        </TextView>
-    </RelativeLayout>
+            android:layout_width="match_parent"
+            android:layout_height="48dp"
+            android:paddingLeft="72dp"
+            android:text="Comptes"
+            style="@style/Subheader"
+            android:gravity="center_vertical" />
 
-    <TextView
-        android:id="@+id/ip2ip_account"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/sfl_another_blue"
-        android:paddingLeft="5dp"
-        android:singleLine="true"
-        android:text="@string/ip2ip_account"
-        android:textAppearance="@android:style/TextAppearance.Holo.Medium.Inverse"
-        android:textColor="@color/white" />
+       <RelativeLayout
+           android:layout_width="match_parent"
+           android:layout_height="wrap_content" >
+
+           <cx.ring.views.dragsortlv.DragSortListView
+               android:id="@+id/accounts_list"
+               android:layout_width="match_parent"
+               android:layout_height="wrap_content"
+               android:background="@color/white"
+               android:choiceMode="multipleChoice"
+               android:dividerHeight="1px"
+               android:visibility="gone"
+               dslv:collapsed_height="1px"
+               dslv:drag_enabled="true"
+               dslv:drag_handle_id="@id/drag_handle"
+               dslv:drag_scroll_start="0.33"
+               dslv:drag_start_mode="onDown"
+               dslv:float_alpha="0.6"
+               dslv:float_background_color="@color/sfl_action_blue"
+               dslv:remove_enabled="false"
+               dslv:slide_shuffle_speed="0.3" />
+
+           <ProgressBar
+               android:id="@+id/loading_spinner"
+               style="?android:progressBarStyle"
+               android:layout_width="wrap_content"
+               android:layout_height="wrap_content"
+               android:layout_margin="5dp"
+               android:layout_centerInParent="true"
+               android:layout_gravity="center"
+               android:indeterminate="false" />
+
+           <TextView
+               android:id="@+id/empty_account_list"
+               android:layout_width="wrap_content"
+               android:layout_height="wrap_content"
+               android:layout_centerInParent="true"
+               android:layout_gravity="center"
+               android:gravity="center"
+               android:text="@string/empty_account_list"
+               android:textAppearance="?android:attr/textAppearanceMedium"
+               android:visibility="gone">
+           </TextView>
+
+       </RelativeLayout>
 
     <ListView
         android:id="@+id/ip2ip"
diff --git a/ring-android/app/src/main/res/layout/frag_menu.xml b/ring-android/app/src/main/res/layout/frag_menu.xml
deleted file mode 100644
index c643ed9..0000000
--- a/ring-android/app/src/main/res/layout/frag_menu.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/light"
-    android:orientation="vertical"
-    android:paddingTop="?android:attr/actionBarSize" >
-
-    <RelativeLayout
-        android:layout_width="match_parent"
-        android:layout_height="100dp"
-        android:background="@color/sfl_blue_0"
-        android:padding="5dp" >
-
-        <ImageView
-            android:id="@+id/user_photo"
-            android:layout_width="70dp"
-            android:layout_height="70dp"
-            android:layout_alignParentLeft="true"
-            android:layout_centerVertical="true" />
-
-        <TextView
-            android:id="@+id/user_name"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentRight="true"
-            android:layout_marginLeft="15dp"
-            android:layout_toRightOf="@+id/user_photo"
-            android:singleLine="true"
-            android:textColor="@color/white"
-            android:textSize="20sp"
-            android:textStyle="bold" />
-
-        <RelativeLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_alignLeft="@+id/user_name"
-            android:layout_alignParentBottom="true"
-            android:layout_alignRight="@+id/user_name"
-            android:layout_below="@+id/user_name" >
-
-            <Spinner
-                android:id="@+id/account_selection"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:background="@color/sfl_blue_0" />
-
-            <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_alignParentRight="true"
-                android:layout_centerVertical="true"
-                android:clickable="false"
-                android:focusable="false"
-                android:src="@drawable/ic_action_expand_light" />
-        </RelativeLayout>
-    </RelativeLayout>
-
-    <ListView
-        android:id="@+id/listView"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:choiceMode="singleChoice"
-        android:listSelector="@drawable/navigation_selector" >
-    </ListView>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/frag_menu_header.xml b/ring-android/app/src/main/res/layout/frag_menu_header.xml
new file mode 100644
index 0000000..43686ad
--- /dev/null
+++ b/ring-android/app/src/main/res/layout/frag_menu_header.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@color/sfl_blue_0"
+    android:paddingBottom="8dp"
+    android:paddingRight="5dp"
+    android:paddingTop="40dp"
+    android:theme="@style/MenuHeader"
+    android:paddingLeft="16dp">
+
+    <ImageView
+        android:id="@+id/user_photo"
+        android:layout_width="70dp"
+        android:layout_height="70dp"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"
+        android:layout_alignParentTop="true"
+        android:layout_marginBottom="8dp" />
+
+    <TextView
+        android:id="@+id/user_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentStart="true"
+        android:layout_below="@+id/user_photo"
+        android:singleLine="true"
+        android:textSize="20sp"
+        android:textStyle="bold"
+        android:textColor="@color/white" />
+
+    <Spinner
+        android:id="@+id/account_selection"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"
+        android:layout_below="@+id/user_name"/>
+</RelativeLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/item_account.xml b/ring-android/app/src/main/res/layout/item_account.xml
index 3f08521..422d7ef 100644
--- a/ring-android/app/src/main/res/layout/item_account.xml
+++ b/ring-android/app/src/main/res/layout/item_account.xml
@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="@color/sfl_blue_0"
-    android:padding="4dp" >
+    android:layout_height="72dp"
+    android:padding="16dp">
 
     <TextView
         android:id="@+id/account_alias"
@@ -11,30 +10,24 @@
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_alignParentTop="true"
-        android:layout_marginBottom="4dp"
-        android:layout_marginLeft="4dp"
-        android:textAppearance="?android:attr/textAppearanceLargeInverse" />
-    
-        <TextView
+        android:textAppearance="@style/ListPrimary" />
+
+    <TextView
         android:id="@+id/account_host"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_below="@+id/account_alias"
-        android:layout_marginBottom="4dp"
-        android:layout_marginLeft="4dp"
-        android:textAppearance="?android:attr/textAppearanceSmallInverse" />
-
+        android:textAppearance="@style/ListSecondary" />
 
     <ImageView
-        android:id="@+id/account_selected"
+        android:id="@+id/error_indicator"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentRight="true"
         android:layout_centerVertical="true"
-        android:background="@null"
         android:clickable="false"
         android:focusable="false"
-        android:src="@drawable/ic_action_accept" />
+        android:src="@drawable/ic_error_white_24dp" />
 
 </RelativeLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/item_account_pref.xml b/ring-android/app/src/main/res/layout/item_account_pref.xml
index 8785b10..89193fe 100644
--- a/ring-android/app/src/main/res/layout/item_account_pref.xml
+++ b/ring-android/app/src/main/res/layout/item_account_pref.xml
@@ -12,7 +12,7 @@
             android:layout_centerVertical="true"
             android:layout_alignParentLeft="true"
             android:layout_marginLeft="16dp"
-            android:src="@drawable/handle"/>
+            android:src="@drawable/ic_reorder_black_24dp"/>
 
     <TextView
         android:id="@+id/account_alias"
diff --git a/ring-android/app/src/main/res/layout/item_account_selected.xml b/ring-android/app/src/main/res/layout/item_account_selected.xml
new file mode 100644
index 0000000..ba3b8c0
--- /dev/null
+++ b/ring-android/app/src/main/res/layout/item_account_selected.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="72dp"
+    android:paddingTop="16dp"
+    android:paddingRight="16dp"
+    android:minHeight="72dp"
+    android:paddingBottom="16dp">
+
+    <TextView
+        android:id="@+id/account_alias"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentTop="true"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textColor="@color/white" />
+
+    <TextView
+        android:id="@+id/account_host"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentLeft="true"
+        android:layout_below="@+id/account_alias"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textColor="@color/white" />
+
+    <ImageView
+        android:id="@+id/error_indicator"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true"
+        android:clickable="false"
+        android:focusable="false"
+        android:src="@drawable/ic_error_white_24dp" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/item_codec.xml b/ring-android/app/src/main/res/layout/item_codec.xml
index e91cb8a..a604aa1 100644
--- a/ring-android/app/src/main/res/layout/item_codec.xml
+++ b/ring-android/app/src/main/res/layout/item_codec.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@id/container"
+    android:id="@+id/codec_container"
     android:layout_width="match_parent"
     android:layout_height="?android:attr/listPreferredItemHeight" >
 
diff --git a/ring-android/app/src/main/res/layout/menuheader.xml b/ring-android/app/src/main/res/layout/menuheader.xml
index 3509b84..49dd54d 100644
--- a/ring-android/app/src/main/res/layout/menuheader.xml
+++ b/ring-android/app/src/main/res/layout/menuheader.xml
@@ -1,6 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:orientation="vertical" android:layout_width="match_parent"
     android:layout_height="match_parent">
 
+    <fragment
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:name="cx.ring.fragments.MenuFragment"
+        android:id="@+id/accountselector"
+        tools:layout="@layout/frag_menu_header" />
 </LinearLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/menu/drawer.xml b/ring-android/app/src/main/res/menu/drawer.xml
new file mode 100644
index 0000000..0c0a18b
--- /dev/null
+++ b/ring-android/app/src/main/res/menu/drawer.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <group android:checkableBehavior="single">
+        <item
+            android:id="@+id/menuitem_home"
+            android:checked="true"
+            android:icon="@drawable/ic_home_black_48dp"
+            android:title="@string/menu_item_home"/>
+        <item
+            android:id="@+id/menuitem_accounts"
+            android:icon="@drawable/ic_group_black_48dp"
+            android:title="@string/menu_item_accounts"/>
+        <item
+            android:id="@+id/menuitem_about"
+            android:icon="@drawable/ic_info_black_48dp"
+            android:title="@string/menu_item_about"/>
+    </group>
+</menu>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/values-fr/strings_account.xml b/ring-android/app/src/main/res/values-fr/strings_account.xml
index 23edba2..92971c3 100644
--- a/ring-android/app/src/main/res/values-fr/strings_account.xml
+++ b/ring-android/app/src/main/res/values-fr/strings_account.xml
@@ -36,7 +36,7 @@
     <string name="prompt_hostname">Nom du serveur</string>
     <string name="prompt_username">Nom d\'utilisateur</string>
     <string name="prompt_password">Mot de passe</string>
-    <string name="action_create"><b>Enregistrer le compte</b></string>
+    <string name="action_create">Ajouter le compte</string>
     <string name="action_create_short">Enregistrer</string>
     <string name="error_field_required">Ce champ est requis</string>
 
diff --git a/ring-android/app/src/main/res/values-v21/styles.xml b/ring-android/app/src/main/res/values-v21/styles.xml
index 00080de..cbf5228 100644
--- a/ring-android/app/src/main/res/values-v21/styles.xml
+++ b/ring-android/app/src/main/res/values-v21/styles.xml
@@ -1,38 +1,24 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <style name="AppThemeWithOverlay" parent="android:Theme.Material.Light.DarkActionBar">
+    <style name="AppThemeWithOverlay" parent="AppThemeBase">
         <item name="android:actionBarStyle">@style/MyActionBar</item>
-        <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item>
         <item name="android:windowActionBarOverlay">true</item>
+        <item name="windowActionBarOverlay">true</item>
         <item name="android:windowBackground">@drawable/bg_72</item>
-        <item name="android:activatedBackgroundIndicator">@drawable/navigation_selector</item>
+        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
+        <item name="android:windowTranslucentStatus">true</item>
     </style>
 
-    <style name="AccountFormContainer">
-        <item name="android:layout_width">match_parent</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:padding">16dp</item>
+    <style name="AppThemeWithoutOverlay" parent="@android:style/Theme.Material.Light.DarkActionBar">
+        <item name="android:actionBarStyle">@style/NativeActionBar</item>
     </style>
 
-    <style name="AppThemeWithoutOverlay" parent="android:Theme.Material.Light.DarkActionBar">
-        <item name="android:actionBarStyle">@style/MyActionBar</item>
-        <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item>
-        <item name="android:windowActionBarOverlay">false</item>
-    </style>
-
-    <style name="MyActionBar" parent="@android:style/Widget.ActionBar">
+    <style name="NativeActionBar" parent="@android:style/Widget.ActionBar">
         <item name="android:background">@color/sfl_dark_blue</item>
-        <item name="android:titleTextStyle">@style/MyActionBar.Text</item>
+        <item name="android:titleTextStyle">@style/NativeActionBar.Text</item>
     </style>
 
-    <style name="MyActionBar.Text" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title">
-        <item name="android:textColor">@color/white</item>
-        <item name="android:textSize">18sp</item>
+    <style name="NativeActionBar.Text" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title">
     </style>
-
-    <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Material.Widget.ActionBar.Menu">
-        <item name="android:textColor">#FF0</item>
-        <item name="android:textSize">20sp</item>
-    </style>
-
 </resources>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/values/strings_account.xml b/ring-android/app/src/main/res/values/strings_account.xml
index e769eb4..974290f 100644
--- a/ring-android/app/src/main/res/values/strings_account.xml
+++ b/ring-android/app/src/main/res/values/strings_account.xml
@@ -36,7 +36,7 @@
     <string name="prompt_hostname">Hostname</string>
     <string name="prompt_username">Username</string>
     <string name="prompt_password">Password</string>
-    <string name="action_create"><b>Register Account</b></string>
+    <string name="action_create">Add account</string>
     <string name="action_create_short">Register</string>
     <string name="error_field_required">This field is required</string>
 
diff --git a/ring-android/app/src/main/res/values/styles.xml b/ring-android/app/src/main/res/values/styles.xml
index baab018..89379e3 100644
--- a/ring-android/app/src/main/res/values/styles.xml
+++ b/ring-android/app/src/main/res/values/styles.xml
@@ -1,9 +1,15 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <style name="AppThemeWithOverlay" parent="android:Theme.Holo.Light.DarkActionBar">
+    <style name="AppThemeBase" parent="Theme.AppCompat.Light.NoActionBar">
+
+    </style>
+
+    <style name="AppThemeWithOverlay" parent="AppThemeBase">
+
         <item name="android:actionBarStyle">@style/MyActionBar</item>
-        <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item>
+
         <item name="android:windowActionBarOverlay">true</item>
+        <item name="windowActionBarOverlay">true</item>
         <item name="android:windowBackground">@drawable/bg_72</item>
         <item name="android:activatedBackgroundIndicator">@drawable/navigation_selector</item>
     </style>
@@ -14,25 +20,47 @@
         <item name="android:padding">16dp</item>
     </style>
 
-    <style name="AppThemeWithoutOverlay" parent="android:Theme.Holo.Light.DarkActionBar">
-        <item name="android:actionBarStyle">@style/MyActionBar</item>
-        <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item>
-        <item name="android:windowActionBarOverlay">false</item>
+    <style name="AppThemeWithoutOverlay" parent="@android:style/Theme.Holo.Light.DarkActionBar">
+        <item name="android:actionBarStyle">@style/NativeActionBar</item>
     </style>
 
-    <style name="MyActionBar" parent="@android:style/Widget.ActionBar">
+    <style name="NativeActionBar" parent="@android:style/Widget.ActionBar">
         <item name="android:background">@color/sfl_dark_blue</item>
-        <item name="android:titleTextStyle">@style/MyActionBar.Text</item>
+        <item name="titleTextStyle">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item>
+
     </style>
 
-    <style name="MyActionBar.Text" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
-        <item name="android:textColor">@color/white</item>
-        <item name="android:textSize">18sp</item>
+    <style name="NativeActionBar.Text" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
     </style>
 
-    <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Menu">
-        <item name="android:textColor">#FF0</item>
-        <item name="android:textSize">20sp</item>
+    <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
+        <item name="android:textColorPrimary">@android:color/primary_text_dark</item>
+        <item name="android:textColorSecondary">@android:color/secondary_text_dark</item>
+        <item name="selectableItemBackground">?android:selectableItemBackground</item>
+        <item name="selectableItemBackgroundBorderless">?android:selectableItemBackground</item>
+        <item name="actionMenuTextColor">@color/abc_primary_text_material_light</item>
+    </style>
+    <style name="MenuHeader" parent="Theme.AppCompat.Light.NoActionBar">
+        <item name="android:textColorPrimary">@android:color/primary_text_dark</item>
+        <item name="android:textColorSecondary">@android:color/secondary_text_dark</item>
+    </style>
+
+    <style name="Subheader">
+        <item name="android:textSize">14sp</item>
+        <item name="android:typeface">normal</item>
+        <item name="android:textColor">@android:color/tertiary_text_light</item>
+    </style>
+
+    <style name="ListPrimary">
+        <item name="android:textSize">16sp</item>
+        <item name="android:typeface">normal</item>
+        <item name="android:textColor">@android:color/primary_text_light</item>
+    </style>
+
+    <style name="ListSecondary">
+        <item name="android:textSize">14sp</item>
+        <item name="android:typeface">normal</item>
+        <item name="android:textColor">@android:color/tertiary_text_light</item>
     </style>
 
 </resources>
\ No newline at end of file