package com.minggo.pluto.dialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.view.WindowManager;
import android.widget.*;
import com.minggo.pluto.R;
import com.minggo.pluto.util.*;
/**
* 通过对话框
* Created by minggo on 2017/1/23.
*/
public class PlutoDialog {
private Context context;
private int type;
public static final int DEFAULT = 0;//系统默认对话框
public static final int LOADING = 1;//请稍等提示
public static final int TEXT_ONLIY = 2;// 提示信息确认
public static final int DEFAULT_EXIT = 3;//默认退出提醒对话
private AlertDialog.Builder builder;
private AlertDialog alertDialog;
private View mainView;
private int screenWidthPixels;
private float _20Pixels;
private String content;
private String title;
private String leftText;
private String rightText;
private PlutoDialogListener listener;
public PlutoDialog(Context context,int type){
this.context = context;
this.type = type;
calcWidth();
}
public PlutoDialog(Context context,int type,String content){
this.context = context;
this.type = type;
this.content = content;
calcWidth();
}
public PlutoDialog(Context context,int type,PlutoDialogListener listener){
this.context = context;
this.type = type;
this.listener = listener;
calcWidth();
}
public PlutoDialog(Context context,int type,String content,PlutoDialogListener listener){
this.context = context;
this.type = type;
this.content = content;
this.listener = listener;
calcWidth();
}
public PlutoDialog(Context context,int type,String title,String content,String leftText,String rightText,PlutoDialogListener listener){
this.context = context;
this.type = type;
this.title = title;
this.content = content;
this.leftText = leftText;
this.rightText = rightText;
this.listener = listener;
calcWidth();
}
public void show(){
creatDialog();
if (type!=DEFAULT&&DEFAULT_EXIT!=type){
alertDialog = builder.create();
alertDialog.show();
WindowManager.LayoutParams params = alertDialog.getWindow().getAttributes();
params.width = (int) (screenWidthPixels-_20Pixels*2);
alertDialog.getWindow().setAttributes(params);
}
}
private void creatDialog(){
builder = new AlertDialog.Builder(context);
switch (type){
case DEFAULT:
alertDialog = new AlertDialog.Builder(context).setTitle(title).setMessage(content)
.setNegativeButton(leftText, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listener.cancel();
}
})
.setPositiveButton(rightText, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listener.confirm();
alertDialog.dismiss();
alertDialog.cancel();
}
}).show();
break;
case DEFAULT_EXIT:
alertDialog = new AlertDialog.Builder(context).setTitle(R.string.exit_title).setMessage(R.string.exit_content)
.setNegativeButton(R.string.exit_cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listener.cancel();
}
})
.setPositiveButton(R.string.exit_confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listener.confirm();
alertDialog.dismiss();
alertDialog.cancel();
}
}).show();
break;
case LOADING:
mainView = View.inflate(context, R.layout.dialog_progress,null);
break;
case TEXT_ONLIY:
mainView = View.inflate(context, R.layout.dialog_text,null);
break;
default:
break;
}
initUI();
}
private void initUI(){
if (type==LOADING){
builder.setView(mainView);
}else if (type==TEXT_ONLIY){
builder.setView(mainView);
((TextView) mainView.findViewById(R.id.tv_dialog_tips)).setText(content);
}
}
private void calcWidth() {
screenWidthPixels = DisplayUtil.getScreenWidthPixels(context);
_20Pixels = DisplayUtil.dip2pxByFloat(context, 20);
}
public boolean isShowing() {
return alertDialog != null && alertDialog.isShowing();
}
public void dismiss() {
if (alertDialog != null) {
alertDialog.dismiss();
}
}
public void cancel() {
if (alertDialog != null) {
alertDialog.cancel();
}
}
public void setCancelable(boolean b) {
if (alertDialog != null) {
alertDialog.setCancelable(b);
} else if (builder != null) {
builder.setCancelable(b);
}
}
public interface PlutoDialogListener{
void confirm();
void cancel();
}
}