Android Open Source - MP3QuranForAndriod Icon Context Menu






From Project

Back to project page MP3QuranForAndriod.

License

The source code is released under:

You Can use all this project files for free only if you plan to create any islamic application ... This project is for any Islamic purpose....

If you think the Android project MP3QuranForAndriod listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.mos7af.mp3quran;
//w  w w.  j  a  v a 2  s .  co  m
import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.content.res.Resources.Theme;
import android.graphics.drawable.Drawable;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.TextView;


public class IconContextMenu implements DialogInterface.OnCancelListener, 
                    DialogInterface.OnDismissListener{

  private static final int LIST_PREFERED_HEIGHT = 45;
  
  private IconMenuAdapter menuAdapter = null;
  private Activity parentActivity = null;
  private int dialogId = 0;
  
  private IconContextMenuOnClickListener clickHandler = null;
  
  /**
   * constructor
   * @param parent
   * @param id
   */
  public IconContextMenu(Activity parent, int id) {
    this.parentActivity = parent;
    this.dialogId = id;
    
    menuAdapter = new IconMenuAdapter(parentActivity);
  }
  
  /**
   * Add menu item
   * @param menuItem
   */
  public void addItem(Resources res, CharSequence title,
      int imageResourceId, int actionTag) {
    menuAdapter.addItem(new IconContextMenuItem(res, title, imageResourceId, actionTag));
  }
  
  public void addItem(Resources res, int textResourceId,
      int imageResourceId, int actionTag) {
    menuAdapter.addItem(new IconContextMenuItem(res, textResourceId, imageResourceId, actionTag));
  }
  
  /**
   * Set menu onclick listener
   * @param listener
   */
  public void setOnClickListener(IconContextMenuOnClickListener listener) {
    clickHandler = listener;
  }
  
  /**
   * Create menu
   * @return
   */
  public Dialog createMenu(String menuItitle) {
    final AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
        builder.setTitle(menuItitle);
        builder.setAdapter(menuAdapter, new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialoginterface, int i) {
        IconContextMenuItem item = (IconContextMenuItem) menuAdapter.getItem(i);
        
        if (clickHandler != null) {
          clickHandler.onClick(item.actionTag);
        }
      }
    });

        builder.setInverseBackgroundForced(true);

        AlertDialog dialog = builder.create();
        dialog.setOnCancelListener(this);
        dialog.setOnDismissListener(this);
        return dialog;
  }
  
  public void onCancel(DialogInterface dialog) {
        cleanup();
    }

    public void onDismiss(DialogInterface dialog) {
    }
   
    
  private void cleanup() {
      parentActivity.dismissDialog(dialogId);
    }
  
    /**
     * IconContextMenu On Click Listener interface
     */
    public interface IconContextMenuOnClickListener {
    public abstract void onClick(int menuId);
    }
    
  /**
   * Menu-like list adapter with icon
   */
    protected class IconMenuAdapter extends BaseAdapter {
    private Context context = null;
    
      private ArrayList<IconContextMenuItem> mItems = new ArrayList<IconContextMenuItem>();
    
      public IconMenuAdapter(Context context) {
        this.context = context;
      }
      
      /**
       * add item to adapter
       * @param menuItem
       */
      public void addItem(IconContextMenuItem menuItem) {
        mItems.add(menuItem);
      }
      
    @Override
    public int getCount() {
      return mItems.size();
    }

    @Override
    public Object getItem(int position) {
      return mItems.get(position);
    }

    @Override
    public long getItemId(int position) {
      IconContextMenuItem item = (IconContextMenuItem) getItem(position);
      return item.actionTag;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      IconContextMenuItem item = (IconContextMenuItem) getItem(position);
      
      Resources res = parentActivity.getResources();
      
      if (convertView == null) {
            TextView temp = new TextView(context);
            AbsListView.LayoutParams param = new AbsListView.LayoutParams(AbsListView.LayoutParams.FILL_PARENT, 
                                            AbsListView.LayoutParams.WRAP_CONTENT);
            temp.setLayoutParams(param);
            temp.setPadding((int)toPixel(res, 15), 0, (int)toPixel(res, 15), 0);
            temp.setGravity(android.view.Gravity.CENTER_VERTICAL);
            
            Theme th = context.getTheme();
        TypedValue tv = new TypedValue();
        
        if (th.resolveAttribute(android.R.attr.textAppearanceLargeInverse, tv, true)) {
          temp.setTextAppearance(context, tv.resourceId);
        }
            
            temp.setMinHeight(LIST_PREFERED_HEIGHT);
            temp.setCompoundDrawablePadding((int)toPixel(res, 14));
            convertView = temp;
      }
      
      TextView textView = (TextView) convertView;
      textView.setTag(item);
      textView.setText(item.text);
      textView.setCompoundDrawablesWithIntrinsicBounds(item.image, null, null, null);
          
          return textView;
    }
    
    private float toPixel(Resources res, int dip) {
      float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, res.getDisplayMetrics());
      return px;
    }
  }

  /**
   * menu-like list item with icon
   */
    protected class IconContextMenuItem {
    public final CharSequence text;
    public final Drawable image;
    public final int actionTag;

    /**
     * public constructor
     * 
     * @param res
     *            resource handler
     * @param textResourceId
     *            id of title in resource
     * @param imageResourceId
     *            id of icon in resource
     * @param actionTag
     *            indicate action of menu item
     */
    public IconContextMenuItem(Resources res, int textResourceId,
        int imageResourceId, int actionTag) {
      text = res.getString(textResourceId);
      if (imageResourceId != -1) {
        image = res.getDrawable(imageResourceId);
      } else {
        image = null;
      }
      this.actionTag = actionTag;
    }

    /**
     * public constructor
     * @param res
     *       resource handler
     * @param title
     *       menu item title
     * @param imageResourceId
     *       id of icon in resource
     * @param actionTag
     *       indicate action of menu item
     */
    public IconContextMenuItem(Resources res, CharSequence title,
        int imageResourceId, int actionTag) {
      text = title;
      if (imageResourceId != -1) {
        image = res.getDrawable(imageResourceId);
      } else {
        image = null;
      }
      this.actionTag = actionTag;
    }
  }
}




Java Source Code List

com.mos7af.mp3quran.DatabaseHandler.java
com.mos7af.mp3quran.FileCache.java
com.mos7af.mp3quran.IconContextMenu.java
com.mos7af.mp3quran.ImageLoader.java
com.mos7af.mp3quran.MP3Quran.java
com.mos7af.mp3quran.MemoryCache.java
com.mos7af.mp3quran.PlayListSurasActivity.java
com.mos7af.mp3quran.PlayerActivity.java
com.mos7af.mp3quran.PlayerPlayListActivity.java
com.mos7af.mp3quran.PlayerPlaylistItemAdapter.java
com.mos7af.mp3quran.PlaylistActivity.java
com.mos7af.mp3quran.PlaylistItemAdapter.java
com.mos7af.mp3quran.ReciterItemAdapter.java
com.mos7af.mp3quran.RecitersActivity.java
com.mos7af.mp3quran.SuraItemAdapter.java
com.mos7af.mp3quran.SurasActivity.java
com.mos7af.mp3quran.SuraslistManager.java
com.mos7af.mp3quran.Utilities.java
com.mos7af.mp3quran.Utils.java
com.mos7af.mp3quran.XMLParser.java