/* Android IMSI-Catcher Detector | (c) AIMSICD Privacy Project * ----------------------------------------------------------- * LICENSE: http://git.io/vki47 | TERMS: http://git.io/vki4o * ----------------------------------------------------------- */ package com.secupwn.aimsicd.adapters; import android.annotation.SuppressLint; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import com.secupwn.aimsicd.R; import com.secupwn.aimsicd.constants.DrawerMenu; import com.secupwn.aimsicd.ui.drawer.DrawerMenuItem; import com.secupwn.aimsicd.ui.drawer.DrawerMenuSection; import com.secupwn.aimsicd.ui.drawer.NavDrawerItem; import com.secupwn.aimsicd.utils.Helpers; import java.util.List; public class DrawerMenuAdapter extends ArrayAdapter<NavDrawerItem> { private final LayoutInflater inflater; private final View.OnClickListener mInfoButtonListener; private final Animation mBounceHelpButtonAnimation; private static Context appContext; @SuppressLint("ShowToast") public DrawerMenuAdapter(Context context, int textViewResourceId, List<NavDrawerItem> objects) { super(context, textViewResourceId, objects); inflater = LayoutInflater.from(context); appContext = context.getApplicationContext(); mInfoButtonListener = new View.OnClickListener() { @Override public void onClick(View pView) { pView.startAnimation(mBounceHelpButtonAnimation); if (pView.getTag() != null && pView.getTag() instanceof Integer) { showHelpToast((Integer) pView.getTag()); } } }; mBounceHelpButtonAnimation = AnimationUtils.loadAnimation(appContext, R.anim.action_button_help); } private void showHelpToast(Integer pToastValueId) { Helpers.msgLong(appContext, appContext.getString(pToastValueId)); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view; NavDrawerItem menuItem = this.getItem(position); if (menuItem.getType() == DrawerMenuItem.ITEM_TYPE) { view = getItemView(convertView, parent, menuItem); } else { view = getSectionView(convertView, parent, menuItem); } return view; } View getItemView(View convertView, ViewGroup parentView, NavDrawerItem navDrawerItem) { DrawerMenuItem menuItem = (DrawerMenuItem) navDrawerItem; NavMenuItemHolder navMenuItemHolder = null; if (convertView == null) { convertView = inflater.inflate(R.layout.drawer_item, parentView, false); TextView labelView = (TextView) convertView .findViewById(R.id.drawer_menu_item_label); ImageView iconView = (ImageView) convertView .findViewById(R.id.drawer_menu_item_icon); ImageView lInfoButton = (ImageView) convertView.findViewById(R.id.drawer_menu_item_info_button); navMenuItemHolder = new NavMenuItemHolder(); navMenuItemHolder.itemName = labelView; navMenuItemHolder.itemIcon = iconView; navMenuItemHolder.itemInfoButton = lInfoButton; convertView.setTag(navMenuItemHolder); } if (navMenuItemHolder == null) { navMenuItemHolder = (NavMenuItemHolder) convertView.getTag(); } navMenuItemHolder.itemName.setText(menuItem.getLabel()); navMenuItemHolder.itemIcon.setImageResource(menuItem.getIconId()); if (menuItem.isShowInfoButton()) { navMenuItemHolder.itemInfoButton.setTag(menuItem.getHelpStringId()); navMenuItemHolder.itemInfoButton.setVisibility(View.VISIBLE); navMenuItemHolder.itemInfoButton.setOnClickListener(mInfoButtonListener); } else { navMenuItemHolder.itemInfoButton.setTag(menuItem.getHelpStringId()); navMenuItemHolder.itemInfoButton.setVisibility(View.INVISIBLE); navMenuItemHolder.itemInfoButton.setOnClickListener(null); } return convertView; } View getSectionView(View convertView, ViewGroup parentView, NavDrawerItem navDrawerItem) { DrawerMenuSection menuSection = (DrawerMenuSection) navDrawerItem; NavMenuSectionHolder navMenuItemHolder = null; if (convertView == null) { convertView = inflater.inflate(R.layout.drawer_section, parentView, false); TextView labelView = (TextView) convertView .findViewById(R.id.drawer_menu_section_label); navMenuItemHolder = new NavMenuSectionHolder(); navMenuItemHolder.itemName = labelView; convertView.setTag(navMenuItemHolder); } if (navMenuItemHolder == null) { navMenuItemHolder = (NavMenuSectionHolder) convertView.getTag(); } navMenuItemHolder.itemName.setText(menuSection.getLabel()); return convertView; } @Override public int getViewTypeCount() { return DrawerMenu.COUNT_OF_MENU_TYPE; } @Override public int getItemViewType(int position) { return this.getItem(position).getType(); } @Override public boolean isEnabled(int position) { return getItem(position).isEnabled(); } private static class NavMenuItemHolder { TextView itemName; ImageView itemIcon; ImageView itemInfoButton; } private class NavMenuSectionHolder { private TextView itemName; } }