package com.softwinner.launcher.ui; import com.softwinner.launcher.R; import android.app.Dialog; import android.content.Context; import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.Adapter; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; public class OptionMenu extends Dialog { protected ImageView mIcon; protected TextView mTitle; protected ListView mContentList; protected Adapter mAdapter; protected View mView; protected LayoutInflater mInflater; static public class IconAdapter extends BaseAdapter{ ArrayList<Integer> mImageIds = new ArrayList<Integer>(); ArrayList<Integer> mTextIds = new ArrayList<Integer>(); protected LayoutInflater mInflater; public IconAdapter(Context context){ mInflater = LayoutInflater.from(context); } @Override public int getCount() { return mTextIds.size(); } @Override public Object getItem(int id) { return mTextIds.get(id); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convert, ViewGroup parent) { if(convert == null){ convert = mInflater.inflate(R.layout.option_menu_item_by_icon, parent ,false); } ImageView ic = (ImageView) convert.findViewById(R.id.item_icon); TextView content = (TextView) convert.findViewById(R.id.item_content); ic.setImageResource(mImageIds.get(position)); content.setText(mTextIds.get(position)); return convert; } } static public class TextAdapter extends BaseAdapter{ ArrayList<Integer> mTextIds = new ArrayList<Integer>(); protected LayoutInflater mInflater; public TextAdapter(Context context){ mInflater = LayoutInflater.from(context); } @Override public int getCount() { return mTextIds.size(); } @Override public Object getItem(int id) { return mTextIds.get(id); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convert, ViewGroup parent) { if(convert == null){ convert = mInflater.inflate(R.layout.option_menu_item_by_text, parent ,false); } TextView content=(TextView)convert.findViewById(R.id.item_text_content); content.setText(mTextIds.get(position)); return convert; } } public OptionMenu(Context context) { this(context,R.style.optionMenuDialog); LayoutInflater inflater = getLayoutInflater(); mView = inflater.inflate(R.layout.option_menu, null); mIcon = (ImageView)mView.findViewById(R.id.icon); mTitle = (TextView)mView.findViewById(R.id.title); mContentList = (ListView)mView.findViewById(R.id.content_list); } public OptionMenu(Context context, int theme) { super(context, theme); } public OptionMenu(Context context, boolean cancelable, OnCancelListener cancelListener) { super(context, cancelable, cancelListener); } @Override public void dismiss() { super.dismiss(); } public void show(int x, int y, int width ,int height, boolean isLeft) { Window window = getWindow(); WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.x = x; params.y = y; window.setAttributes(params); setContentView(mView); super.show(); window.setLayout(width, height); int animId = isLeft?R.style.optionMenuZoomInLeft:R.style.optionMenuZoomInRight; window.setWindowAnimations(animId); } public void setContentView(Adapter adapterView , Adapter adapter){ } public void setTitle(String title){ mTitle.setText(title); } public void setTitle(int resId){ mTitle.setText(resId); } public void setIcon(Bitmap icon){ mIcon.setImageBitmap(icon); } public void setIcon(int resId){ mIcon.setImageResource(resId); } public void setClickCallback(AdapterView.OnItemClickListener callback){ mContentList.setOnItemClickListener(callback); } public void setSelectedCallback(AdapterView.OnItemSelectedListener callback){ mContentList.setOnItemSelectedListener(callback); } static public ListAdapter createIconAdapter(Context context){ return new IconAdapter(context); } static public ListAdapter createTextAdapter(Context context){ return new TextAdapter(context); } public void setAdapter(ListAdapter adapter){ mAdapter = adapter; mContentList.setAdapter(adapter); } }