package com.flyco.dialog.widget.internal;
import android.content.Context;
import android.graphics.Color;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.flyco.dialog.listener.OnBtnClickL;
import com.flyco.dialog.widget.base.BaseDialog;
public abstract class BaseAlertDialog<T extends BaseAlertDialog<T>> extends BaseDialog<T> {
/** container */
protected LinearLayout mLlContainer;
//title
/** title */
protected TextView mTvTitle;
/** title content(标题) */
protected String mTitle;
/** title textcolor(标题颜色) */
protected int mTitleTextColor;
/** title textsize(标题字体大小,单位sp) */
protected float mTitleTextSize;
/** enable title show(是否显示标题) */
protected boolean mIsTitleShow = true;
//content
/** content */
protected TextView mTvContent;
/** content text */
protected String mContent;
/** show gravity of content(正文内容显示位置) */
protected int mContentGravity = Gravity.CENTER_VERTICAL;
/** content textcolor(正文字体颜色) */
protected int mContentTextColor;
/** content textsize(正文字体大小) */
protected float mContentTextSize;
//btns
/** num of btns, [1,3] */
protected int mBtnNum = 2;
/** btn container */
protected LinearLayout mLlBtns;
/** btns */
protected TextView mTvBtnLeft;
protected TextView mTvBtnRight;
protected TextView mTvBtnMiddle;
/** btn text(按钮内容) */
protected String mBtnLeftText = "取消";
protected String mBtnRightText = "确定";
protected String mBtnMiddleText = "继续";
/** btn textcolor(按钮字体颜色) */
protected int mLeftBtnTextColor;
protected int mRightBtnTextColor;
protected int mMiddleBtnTextColor;
/** btn textsize(按钮字体大小) */
protected float mLeftBtnTextSize = 15f;
protected float mRightBtnTextSize = 15f;
protected float mMiddleBtnTextSize = 15f;
/** btn press color(按钮点击颜色) */
protected int mBtnPressColor = Color.parseColor("#E3E3E3");// #85D3EF,#ffcccccc,#E3E3E3
/** left btn click listener(左按钮接口) */
protected OnBtnClickL mOnBtnLeftClickL;
/** right btn click listener(右按钮接口) */
protected OnBtnClickL mOnBtnRightClickL;
/** middle btn click listener(右按钮接口) */
protected OnBtnClickL mOnBtnMiddleClickL;
/** corner radius,dp(圆角程度,单位dp) */
protected float mCornerRadius = 3;
/** background color(背景颜色) */
protected int mBgColor = Color.parseColor("#ffffff");
/**
* method execute order:
* show:constrouctor---show---oncreate---onStart---onAttachToWindow
* dismiss:dismiss---onDetachedFromWindow---onStop
*
* @param context
*/
public BaseAlertDialog(Context context) {
super(context);
widthScale(0.88f);
mLlContainer = new LinearLayout(context);
mLlContainer.setOrientation(LinearLayout.VERTICAL);
/** title */
mTvTitle = new TextView(context);
/** content */
mTvContent = new TextView(context);
/**btns*/
mLlBtns = new LinearLayout(context);
mLlBtns.setOrientation(LinearLayout.HORIZONTAL);
mTvBtnLeft = new TextView(context);
mTvBtnLeft.setGravity(Gravity.CENTER);
mTvBtnMiddle = new TextView(context);
mTvBtnMiddle.setGravity(Gravity.CENTER);
mTvBtnRight = new TextView(context);
mTvBtnRight.setGravity(Gravity.CENTER);
}
@Override
public void setUiBeforShow() {
/** title */
mTvTitle.setVisibility(mIsTitleShow ? View.VISIBLE : View.GONE);
mTvTitle.setText(TextUtils.isEmpty(mTitle) ? "温馨提示" : mTitle);
mTvTitle.setTextColor(mTitleTextColor);
mTvTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, mTitleTextSize);
/** content */
mTvContent.setGravity(mContentGravity);
mTvContent.setText(mContent);
mTvContent.setTextColor(mContentTextColor);
mTvContent.setTextSize(TypedValue.COMPLEX_UNIT_SP, mContentTextSize);
mTvContent.setLineSpacing(0, 1.3f);
/**btns*/
mTvBtnLeft.setText(mBtnLeftText);
mTvBtnRight.setText(mBtnRightText);
mTvBtnMiddle.setText(mBtnMiddleText);
mTvBtnLeft.setTextColor(mLeftBtnTextColor);
mTvBtnRight.setTextColor(mRightBtnTextColor);
mTvBtnMiddle.setTextColor(mMiddleBtnTextColor);
mTvBtnLeft.setTextSize(TypedValue.COMPLEX_UNIT_SP, mLeftBtnTextSize);
mTvBtnRight.setTextSize(TypedValue.COMPLEX_UNIT_SP, mRightBtnTextSize);
mTvBtnMiddle.setTextSize(TypedValue.COMPLEX_UNIT_SP, mMiddleBtnTextSize);
if (mBtnNum == 1) {
mTvBtnLeft.setVisibility(View.GONE);
mTvBtnRight.setVisibility(View.GONE);
} else if (mBtnNum == 2) {
mTvBtnMiddle.setVisibility(View.GONE);
}
mTvBtnLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnBtnLeftClickL != null) {
mOnBtnLeftClickL.onBtnClick();
} else {
dismiss();
}
}
});
mTvBtnRight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnBtnRightClickL != null) {
mOnBtnRightClickL.onBtnClick();
} else {
dismiss();
}
}
});
mTvBtnMiddle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnBtnMiddleClickL != null) {
mOnBtnMiddleClickL.onBtnClick();
} else {
dismiss();
}
}
});
}
/** set title text(设置标题内容) @return MaterialDialog */
public T title(String title) {
mTitle = title;
return (T) this;
}
/** set title textcolor(设置标题字体颜色) */
public T titleTextColor(int titleTextColor) {
mTitleTextColor = titleTextColor;
return (T) this;
}
/** set title textsize(设置标题字体大小) */
public T titleTextSize(float titleTextSize_SP) {
mTitleTextSize = titleTextSize_SP;
return (T) this;
}
/** enable title show(设置标题是否显示) */
public T isTitleShow(boolean isTitleShow) {
mIsTitleShow = isTitleShow;
return (T) this;
}
/** set content text(设置正文内容) */
public T content(String content) {
mContent = content;
return (T) this;
}
/** set content gravity(设置正文内容,显示位置) */
public T contentGravity(int contentGravity) {
mContentGravity = contentGravity;
return (T) this;
}
/** set content textcolor(设置正文字体颜色) */
public T contentTextColor(int contentTextColor) {
mContentTextColor = contentTextColor;
return (T) this;
}
/** set content textsize(设置正文字体大小,单位sp) */
public T contentTextSize(float contentTextSize_SP) {
mContentTextSize = contentTextSize_SP;
return (T) this;
}
/**
* set btn text(设置按钮文字内容)
* btnTexts size 1, middle
* btnTexts size 2, left right
* btnTexts size 3, left right middle
*/
public T btnNum(int btnNum) {
if (btnNum < 1 || btnNum > 3) {
throw new IllegalStateException("btnNum is [1,3]!");
}
mBtnNum = btnNum;
return (T) this;
}
/**
* set btn text(设置按钮文字内容)
* btnTexts size 1, middle
* btnTexts size 2, left right
* btnTexts size 3, left right middle
*/
public T btnText(String... btnTexts) {
if (btnTexts.length < 1 || btnTexts.length > 3) {
throw new IllegalStateException(" range of param btnTexts length is [1,3]!");
}
if (btnTexts.length == 1) {
mBtnMiddleText = btnTexts[0];
} else if (btnTexts.length == 2) {
mBtnLeftText = btnTexts[0];
mBtnRightText = btnTexts[1];
} else if (btnTexts.length == 3) {
mBtnLeftText = btnTexts[0];
mBtnRightText = btnTexts[1];
mBtnMiddleText = btnTexts[2];
}
return (T) this;
}
/**
* set btn textcolor(设置按钮字体颜色)
* btnTextColors size 1, middle
* btnTextColors size 2, left right
* btnTextColors size 3, left right middle
*/
public T btnTextColor(int... btnTextColors) {
if (btnTextColors.length < 1 || btnTextColors.length > 3) {
throw new IllegalStateException(" range of param textColors length is [1,3]!");
}
if (btnTextColors.length == 1) {
mMiddleBtnTextColor = btnTextColors[0];
} else if (btnTextColors.length == 2) {
mLeftBtnTextColor = btnTextColors[0];
mRightBtnTextColor = btnTextColors[1];
} else if (btnTextColors.length == 3) {
mLeftBtnTextColor = btnTextColors[0];
mRightBtnTextColor = btnTextColors[1];
mMiddleBtnTextColor = btnTextColors[2];
}
return (T) this;
}
/**
* set btn textsize(设置字体大小,单位sp)
* btnTextSizes size 1, middle
* btnTextSizes size 2, left right
* btnTextSizes size 3, left right middle
*/
public T btnTextSize(float... btnTextSizes) {
if (btnTextSizes.length < 1 || btnTextSizes.length > 3) {
throw new IllegalStateException(" range of param btnTextSizes length is [1,3]!");
}
if (btnTextSizes.length == 1) {
mMiddleBtnTextSize = btnTextSizes[0];
} else if (btnTextSizes.length == 2) {
mLeftBtnTextSize = btnTextSizes[0];
mRightBtnTextSize = btnTextSizes[1];
} else if (btnTextSizes.length == 3) {
mLeftBtnTextSize = btnTextSizes[0];
mRightBtnTextSize = btnTextSizes[1];
mMiddleBtnTextSize = btnTextSizes[2];
}
return (T) this;
}
/** set btn press color(设置按钮点击颜色) */
public T btnPressColor(int btnPressColor) {
mBtnPressColor = btnPressColor;
return (T) this;
}
/** set corner radius (设置圆角程度) */
public T cornerRadius(float cornerRadius_DP) {
mCornerRadius = cornerRadius_DP;
return (T) this;
}
/** set backgroud color(设置背景色) */
public T bgColor(int bgColor) {
mBgColor = bgColor;
return (T) this;
}
/**
* set btn click listener(设置按钮监听事件)
* onBtnClickLs size 1, middle
* onBtnClickLs size 2, left right
* onBtnClickLs size 3, left right middle
*/
public void setOnBtnClickL(OnBtnClickL... onBtnClickLs) {
if (onBtnClickLs.length < 1 || onBtnClickLs.length > 3) {
throw new IllegalStateException(" range of param onBtnClickLs length is [1,3]!");
}
if (onBtnClickLs.length == 1) {
mOnBtnMiddleClickL = onBtnClickLs[0];
} else if (onBtnClickLs.length == 2) {
mOnBtnLeftClickL = onBtnClickLs[0];
mOnBtnRightClickL = onBtnClickLs[1];
} else if (onBtnClickLs.length == 3) {
mOnBtnLeftClickL = onBtnClickLs[0];
mOnBtnRightClickL = onBtnClickLs[1];
mOnBtnMiddleClickL = onBtnClickLs[2];
}
}
}