package com.wevey.selector.dialog;
import android.app.Dialog;
import android.content.Context;
import android.support.annotation.ColorRes;
import android.support.v4.content.ContextCompat;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import com.weavey.utils.ScreenSizeUtils;
/**
* Created by Weavey on 2016/9/4.
*/
public class MDAlertDialog implements View.OnClickListener {
private Dialog mDialog;
private View mDialogView;
private TextView mTitle;
private TextView mContent;
private TextView mLeftBtn;
private TextView mRightBtn;
private static Context mContext;
private Builder mBuilder;
public MDAlertDialog(Builder builder) {
mBuilder = builder;
mDialog = new Dialog(mContext, R.style.MyDialogStyle);
mDialogView = View.inflate(mContext, R.layout.widget_md_dialog, null);
mTitle = (TextView) mDialogView.findViewById(R.id.md_dialog_title);
mContent = (TextView) mDialogView.findViewById(R.id.md_dialog_content);
mLeftBtn = (TextView) mDialogView.findViewById(R.id.md_dialog_leftbtn);
mRightBtn = (TextView) mDialogView.findViewById(R.id.md_dialog_rightbtn);
mDialogView.setMinimumHeight((int) (ScreenSizeUtils.getInstance(mContext).getScreenHeight
() * builder.getHeight()));
mDialog.setContentView(mDialogView);
Window dialogWindow = mDialog.getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
lp.width = (int) (ScreenSizeUtils.getInstance(mContext).getScreenWidth() * builder.getWidth());
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
lp.gravity = Gravity.CENTER;
dialogWindow.setAttributes(lp);
initDialog();
}
private void initDialog() {
mDialog.setCanceledOnTouchOutside(mBuilder.isTouchOutside());
if (mBuilder.getTitleVisible()) {
mTitle.setVisibility(View.VISIBLE);
} else {
mTitle.setVisibility(View.GONE);
}
mTitle.setText(mBuilder.getTitleText());
mTitle.setTextColor(mBuilder.getTitleTextColor());
mTitle.setTextSize(mBuilder.getTitleTextSize());
mContent.setText(mBuilder.getContentText());
mContent.setTextColor(mBuilder.getContentTextColor());
mContent.setTextSize(mBuilder.getContentTextSize());
mLeftBtn.setText(mBuilder.getLeftButtonText());
mLeftBtn.setTextColor(mBuilder.getLeftButtonTextColor());
mLeftBtn.setTextSize(mBuilder.getButtonTextSize());
mRightBtn.setText(mBuilder.getRightButtonText());
mRightBtn.setTextColor(mBuilder.getRightButtonTextColor());
mRightBtn.setTextSize(mBuilder.getButtonTextSize());
mLeftBtn.setOnClickListener(this);
mRightBtn.setOnClickListener(this);
}
public void show() {
mDialog.show();
}
public void dismiss() {
mDialog.dismiss();
}
@Override
public void onClick(View view) {
int i = view.getId();
if (i == R.id.md_dialog_leftbtn && mBuilder.getListener() != null) {
mBuilder.getListener().clickLeftButton(mLeftBtn);
return;
}
if (i == R.id.md_dialog_rightbtn && mBuilder.getListener() != null) {
mBuilder.getListener().clickRightButton(mRightBtn);
return;
}
}
public static class Builder {
private String titleText;
private int titleTextColor;
private int titleTextSize;
private String contentText;
private int contentTextColor;
private int contentTextSize;
private String leftButtonText;
private int leftButtonTextColor;
private String rightButtonText;
private int rightButtonTextColor;
private int buttonTextSize;
private boolean isTitleVisible;
private boolean isTouchOutside;
private float height;
private float width;
private DialogOnClickListener listener;
public Builder(Context context) {
mContext = context;
titleText = "提示";
titleTextColor = ContextCompat.getColor(mContext, R.color.black_light);
contentText = "";
contentTextColor = ContextCompat.getColor(mContext, R.color.black_light);
leftButtonText = "取消";
leftButtonTextColor = ContextCompat.getColor(mContext, R.color.black_light);
rightButtonText = "确定";
rightButtonTextColor = ContextCompat.getColor(mContext, R.color.black_light);
listener = null;
isTitleVisible = true;
isTouchOutside = true;
height = 0.21f;
width = 0.73f;
titleTextSize = 16;
contentTextSize = 14;
buttonTextSize = 14;
}
public String getTitleText() {
return titleText;
}
public Builder setTitleText(String titleText) {
this.titleText = titleText;
return this;
}
public int getTitleTextColor() {
return titleTextColor;
}
public Builder setTitleTextColor(@ColorRes int titleTextColor) {
this.titleTextColor = ContextCompat.getColor(mContext, titleTextColor);
return this;
}
public String getContentText() {
return contentText;
}
public Builder setContentText(String contentText) {
this.contentText = contentText;
return this;
}
public int getContentTextColor() {
return contentTextColor;
}
public Builder setContentTextColor(@ColorRes int contentTextColor) {
this.contentTextColor = ContextCompat.getColor(mContext, contentTextColor);
return this;
}
public String getLeftButtonText() {
return leftButtonText;
}
public Builder setLeftButtonText(String leftButtonText) {
this.leftButtonText = leftButtonText;
return this;
}
public int getLeftButtonTextColor() {
return leftButtonTextColor;
}
public Builder setLeftButtonTextColor(@ColorRes int leftButtonTextColor) {
this.leftButtonTextColor = ContextCompat.getColor(mContext, leftButtonTextColor);
return this;
}
public String getRightButtonText() {
return rightButtonText;
}
public Builder setRightButtonText(String rightButtonText) {
this.rightButtonText = rightButtonText;
return this;
}
public int getRightButtonTextColor() {
return rightButtonTextColor;
}
public Builder setRightButtonTextColor(@ColorRes int rightButtonTextColor) {
this.rightButtonTextColor = ContextCompat.getColor(mContext, rightButtonTextColor);
return this;
}
public boolean getTitleVisible() {
return isTitleVisible;
}
public Builder setTitleVisible(boolean titleVisible) {
isTitleVisible = titleVisible;
return this;
}
public boolean isTouchOutside() {
return isTouchOutside;
}
public Builder setCanceledOnTouchOutside(boolean touchOutside) {
isTouchOutside = touchOutside;
return this;
}
public float getHeight() {
return height;
}
public Builder setHeight(float height) {
this.height = height;
return this;
}
public float getWidth() {
return width;
}
public Builder setWidth(float width) {
this.width = width;
return this;
}
public int getContentTextSize() {
return contentTextSize;
}
public Builder setContentTextSize(int contentTextSize) {
this.contentTextSize = contentTextSize;
return this;
}
public int getTitleTextSize() {
return titleTextSize;
}
public Builder setTitleTextSize(int titleTextSize) {
this.titleTextSize = titleTextSize;
return this;
}
public int getButtonTextSize() {
return buttonTextSize;
}
public Builder setButtonTextSize(int buttonTextSize) {
this.buttonTextSize = buttonTextSize;
return this;
}
public DialogOnClickListener getListener() {
return listener;
}
public Builder setOnclickListener(DialogOnClickListener listener) {
this.listener = listener;
return this;
}
public MDAlertDialog build() {
return new MDAlertDialog(this);
}
}
}