package hillfly.wifichat.common; import hillfly.wifichat.R; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; public class BaseDialog extends Dialog implements android.view.View.OnClickListener { protected Context mContext;// 上下文 private LinearLayout mLayoutRoot;// 总体根布局 private LinearLayout mLayoutTop;// 头部根布局 private LinearLayout mLayoutTitle;// 标题根布局 private TextView mHtvTitle;// 标题 private View mViewTitleLine;// 标题分割线 private LinearLayout mLayoutContent;// 内容根布局 private TextView mHtvMessage;// 内容 private LinearLayout mLayoutBottom;// 底部根布局 private Button mBtnButton1;// 底部按钮1 private Button mBtnButton2;// 底部按钮2 private Button mBtnButton3;// 底部按钮3 private static BaseDialog mBaseDialog;// 当前的对话框 private OnClickListener mOnClickListener1;// 按钮1的单击监听事件 private OnClickListener mOnClickListener2;// 按钮2的单击监听事件 private OnClickListener mOnClickListener3;// 按钮3的单击监听事件 private int mID; // 附加属性 public BaseDialog(Context context) { super(context, R.style.Theme_Light_FullScreenDialogAct); mContext = context; setContentView(R.layout.common_dialog_generic); initViews(); initEvents(); setCancelable(true); setCanceledOnTouchOutside(true); } private void initViews() { mLayoutRoot = (LinearLayout) findViewById(R.id.dialog_generic_layout_root); mLayoutTop = (LinearLayout) findViewById(R.id.dialog_generic_layout_top); mLayoutTitle = (LinearLayout) findViewById(R.id.dialog_generic_layout_title); mHtvTitle = (TextView) findViewById(R.id.dialog_generic_htv_title); mViewTitleLine = findViewById(R.id.dialog_generic_view_titleline); mLayoutContent = (LinearLayout) findViewById(R.id.dialog_generic_layout_content); mHtvMessage = (TextView) findViewById(R.id.dialog_generic_htv_message); mLayoutBottom = (LinearLayout) findViewById(R.id.dialog_generic_layout_bottom); mBtnButton1 = (Button) findViewById(R.id.dialog_generic_btn_button1); mBtnButton2 = (Button) findViewById(R.id.dialog_generic_btn_button2); mBtnButton3 = (Button) findViewById(R.id.dialog_generic_btn_button3); mLayoutRoot.setVisibility(View.VISIBLE); setTitleLineVisibility(View.VISIBLE); } private void initEvents() { mBtnButton1.setOnClickListener(this); mBtnButton2.setOnClickListener(this); mBtnButton3.setOnClickListener(this); } /** * 填充新布局到内容布局 * * @param resource */ public void setDialogContentView(int resource) { View v = LayoutInflater.from(mContext).inflate(resource, null); if (mLayoutContent.getChildCount() > 0) { mLayoutContent.removeAllViews(); } mLayoutContent.addView(v); } /** * 填充新布局到内容布局 * * @param resource * @param params */ public void setDialogContentView(int resource, LinearLayout.LayoutParams params) { View v = LayoutInflater.from(mContext).inflate(resource, null); if (mLayoutContent.getChildCount() > 0) { mLayoutContent.removeAllViews(); } mLayoutContent.addView(v, params); } public static BaseDialog getDialog(Context context, int titleId, CharSequence message) { return getDialog(context, titleId, message, null, null, null, null, null, null); } public static BaseDialog getDialog(Context context, int titleId, CharSequence message, CharSequence button1, DialogInterface.OnClickListener listener1) { return getDialog(context, titleId, message, button1, listener1, null, null, null, null); } public static BaseDialog getDialog(Context context, int titleId, CharSequence message, CharSequence button1, DialogInterface.OnClickListener listener1, CharSequence button2, DialogInterface.OnClickListener listener2) { return getDialog(context, titleId, message, button1, listener1, button2, listener2, null, null); } public static BaseDialog getDialog(Context context, int titleId, CharSequence message, CharSequence button1, DialogInterface.OnClickListener listener1, CharSequence button2, DialogInterface.OnClickListener listener2, CharSequence button3, DialogInterface.OnClickListener listener3) { mBaseDialog = new BaseDialog(context); if (mBaseDialog.titleAndMessageIsExist(titleId, message)) { mBaseDialog.setTitle(titleId); mBaseDialog.setMessage(message); } if (mBaseDialog.buttonIsExist(button1, listener1, button2, listener2, button3, listener3)) { mBaseDialog.setButton1(button1, listener1); mBaseDialog.setButton2(button2, listener2); mBaseDialog.setButton3(button3, listener3); } mBaseDialog.setCancelable(true); mBaseDialog.setCanceledOnTouchOutside(true); return mBaseDialog; } public boolean titleAndMessageIsExist(int titleId, CharSequence message) { if (mContext.getString(titleId) == null && message == null) { mLayoutTop.setVisibility(View.GONE); return false; } else { mLayoutTop.setVisibility(View.VISIBLE); return true; } } public void setTitle(CharSequence text) { if (text != null) { mLayoutTitle.setVisibility(View.VISIBLE); mHtvTitle.setText(text); } else { mLayoutTitle.setVisibility(View.GONE); } } public void setMessage(CharSequence text) { if (text != null) { mLayoutContent.setVisibility(View.VISIBLE); mHtvMessage.setText(text); } else { mLayoutContent.setVisibility(View.GONE); } } public boolean buttonIsExist(CharSequence button1, DialogInterface.OnClickListener listener1, CharSequence button2, DialogInterface.OnClickListener listener2, CharSequence button3, DialogInterface.OnClickListener listener3) { if ((button1 != null && listener1 != null) || (button2 != null && listener2 != null) || (button3 != null && listener3 != null)) { mLayoutBottom.setVisibility(View.VISIBLE); return true; } else { mLayoutBottom.setVisibility(View.GONE); return false; } } public void setButton1(CharSequence text, DialogInterface.OnClickListener listener) { if (text != null && listener != null) { mLayoutBottom.setVisibility(View.VISIBLE); mBtnButton1.setVisibility(View.VISIBLE); mBtnButton1.setText(text); mOnClickListener1 = listener; } else { mBtnButton1.setVisibility(View.GONE); } } public void setButton2(CharSequence text, DialogInterface.OnClickListener listener) { if (text != null && listener != null) { mLayoutBottom.setVisibility(View.VISIBLE); mBtnButton2.setVisibility(View.VISIBLE); mBtnButton2.setText(text); mOnClickListener2 = listener; } else { mBtnButton2.setVisibility(View.GONE); } } public void setButton3(CharSequence text, DialogInterface.OnClickListener listener) { if (text != null && listener != null) { mLayoutBottom.setVisibility(View.VISIBLE); mBtnButton3.setVisibility(View.VISIBLE); mBtnButton3.setText(text); mOnClickListener3 = listener; } else { mBtnButton3.setVisibility(View.GONE); } } public void setButton1Background(int id) { mBtnButton1.setBackgroundResource(id); } public void setButton2Background(int id) { mBtnButton2.setBackgroundResource(id); } public void setButton3Background(int id) { mBtnButton3.setBackgroundResource(id); } public void setTitleLineVisibility(int visibility) { mViewTitleLine.setVisibility(visibility); } public void setButton1Clickable(boolean flag) { mBtnButton1.setClickable(flag); } public void setButton2Clickable(boolean flag) { mBtnButton2.setClickable(flag); } public void setButton3Clickable(boolean flag) { mBtnButton3.setClickable(flag); } public void setButton1Text(CharSequence chr) { mBtnButton1.setText(chr); } public void setButton2Text(CharSequence chr) { mBtnButton2.setText(chr); } public void setButton3Text(CharSequence chr) { mBtnButton3.setText(chr); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.dialog_generic_btn_button1: if (mOnClickListener1 != null) { mOnClickListener1.onClick(mBaseDialog, 0); } break; case R.id.dialog_generic_btn_button2: if (mOnClickListener2 != null) { mOnClickListener2.onClick(mBaseDialog, 1); } break; case R.id.dialog_generic_btn_button3: if (mOnClickListener3 != null) { mOnClickListener3.onClick(mBaseDialog, 2); } break; } } public void setID(int id) { this.mID = id; } public int getID() { return this.mID; } }