package com.buddycloud.utils; import java.lang.reflect.Field; import android.annotation.SuppressLint; import android.app.ActionBar; import android.content.Context; import android.os.Build; import android.view.ViewConfiguration; import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.actionbarsherlock.app.SherlockPreferenceActivity; import com.buddycloud.R; /** * This class provides utility methods to set the * action bar. However, it also try to consistent * the look and feel w.r.t android Lollipop OS5. * * @author Adnan Urooj (Deminem) * */ public class ActionbarUtil { public static void setTitle(final SherlockPreferenceActivity activity, final String title) { if (activity == null || title == null) return; activity.getSupportActionBar().setTitle(title); activity.getSupportActionBar().setDisplayShowTitleEnabled(true); } public static void setTitle(final SherlockActivity activity, final String title) { if (activity == null || title == null) return; activity.getSupportActionBar().setTitle(title); activity.getSupportActionBar().setDisplayShowTitleEnabled(true); } public static void setTitle(final SherlockFragmentActivity activity, final String title) { if (activity == null || title == null) return; activity.getSupportActionBar().setTitle(title); activity.getSupportActionBar().setDisplayShowTitleEnabled(true); } public static void setIcon(final SherlockActivity activity, final int iconResc) { if (activity == null) return; activity.getSupportActionBar().setIcon(iconResc); activity.getSupportActionBar().setDisplayShowHomeEnabled(true); activity.getSupportActionBar().setDisplayUseLogoEnabled(true); activity.getSupportActionBar().setHomeButtonEnabled(true); } public static void setIcon(final SherlockFragmentActivity activity, final int iconResc) { if (activity == null) return; activity.getSupportActionBar().setIcon(iconResc); activity.getSupportActionBar().setDisplayShowHomeEnabled(true); activity.getSupportActionBar().setDisplayUseLogoEnabled(true); activity.getSupportActionBar().setHomeButtonEnabled(true); } public static void setLogo(final SherlockActivity activity, final int logoResc) { if (activity == null) return; activity.getSupportActionBar().setLogo(logoResc); activity.getSupportActionBar().setDisplayShowHomeEnabled(true); activity.getSupportActionBar().setDisplayUseLogoEnabled(true); activity.getSupportActionBar().setHomeButtonEnabled(true); } public static void setLogo(final SherlockFragmentActivity activity, final int logoResc) { if (activity == null) return; activity.getSupportActionBar().setLogo(logoResc); activity.getSupportActionBar().setDisplayShowHomeEnabled(true); activity.getSupportActionBar().setDisplayUseLogoEnabled(true); activity.getSupportActionBar().setHomeButtonEnabled(true); } /** * Show the actionbar with given attributes * * @param activity * @param title * @param isShowDrawerMenu */ public static void showActionBar(final SherlockActivity activity, final String title, final boolean isShowDrawerMenu) { if (activity == null) return; setTitle(activity, title); if (isShowDrawerMenu) { setActionBar(activity.getActionBar(), activity.getSupportActionBar(), R.drawable.ic_drawer); } makeOverflowMenuShow(activity.getApplicationContext()); } /** * Show the actionbar with given attributes * * @param activity * @param title * @param isShowDrawerMenu */ public static void showActionBar(final SherlockFragmentActivity activity, final String title, final boolean isShowDrawerMenu) { if (activity == null) return; setTitle(activity, title); if (isShowDrawerMenu) { setActionBar(activity.getActionBar(), activity.getSupportActionBar(), R.drawable.ic_drawer); } makeOverflowMenuShow(activity.getApplicationContext()); } /** * Show the actionbar with backstack icon * * @param activity * @param title */ public static void showActionBarwithBack(final SherlockPreferenceActivity activity, final String title) { if (activity == null) return; setTitle(activity, title); makeOverflowMenuShow(activity.getApplicationContext()); setActionBar(activity.getActionBar(), activity.getSupportActionBar(), R.drawable.ic_ab_up_compat); } /** * Show the actionbar with backstack icon * * @param activity * @param title */ public static void showActionBarwithBack(final SherlockActivity activity, final String title) { if (activity == null) return; setTitle(activity, title); makeOverflowMenuShow(activity.getApplicationContext()); setActionBar(activity.getActionBar(), activity.getSupportActionBar(), R.drawable.ic_ab_up_compat); } /** * Show the actionbar with backstack icon * * @param activity * @param title */ public static void showActionBarwithBack(final SherlockFragmentActivity activity, final String title) { if (activity == null) return; setTitle(activity, title); makeOverflowMenuShow(activity.getApplicationContext()); setActionBar(activity.getActionBar(), activity.getSupportActionBar(), R.drawable.ic_ab_up_compat); } /** * To enforce the overflow menu icon show for every android device. * * @param context */ private static void makeOverflowMenuShow(final Context context) { try { ViewConfiguration config = ViewConfiguration.get(context); Field menuKeyField = ViewConfiguration.class .getDeclaredField("sHasPermanentMenuKey"); if (menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception e) { e.printStackTrace(); } } @SuppressLint("NewApi") private static void setActionBar(final ActionBar actionBar, final com.actionbarsherlock.app.ActionBar sherlockActionBar, final int iconResc) { if (actionBar == null || sherlockActionBar == null) return; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { actionBar.setHomeAsUpIndicator(iconResc); sherlockActionBar.setDisplayHomeAsUpEnabled(true); sherlockActionBar.setHomeButtonEnabled(true); } else { sherlockActionBar.setLogo(iconResc); sherlockActionBar.setDisplayUseLogoEnabled(true); sherlockActionBar.setDisplayHomeAsUpEnabled(true); sherlockActionBar.setHomeButtonEnabled(true); } } }