/*
* This file is part of FYReader.
* FYReader is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* FYReader is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with FYReader. If not, see .
*
* Copyright (C) 2020 - 2022 fengyuecanzhu
*/
package com.kongzue.dialogx.dialogs;
import android.content.res.Configuration;
import android.view.View;
import androidx.annotation.ColorInt;
import androidx.annotation.ColorRes;
import com.kongzue.dialogx.DialogX;
import com.kongzue.dialogx.R;
import com.kongzue.dialogx.interfaces.OnBackPressedListener;
import com.kongzue.dialogx.interfaces.OnBindView;
import com.kongzue.dialogx.interfaces.OnInputDialogButtonClickListener;
import com.kongzue.dialogx.interfaces.OnInputDialogButtonClickListener;
import com.kongzue.dialogx.util.InputInfo;
import com.kongzue.dialogx.util.TextInfo;
/**
* @author: Kongzue
* @github: https://github.com/kongzue/
* @homepage: http://kongzue.com/
* @mail: myzcxhh@live.cn
* @createTime: 2020/9/24 13:53
*/
public class InputDialog extends MessageDialog {
protected InputDialog() {
super();
}
public static InputDialog build() {
return new InputDialog();
}
public InputDialog(CharSequence title, CharSequence message, CharSequence okText) {
cancelable = DialogX.cancelable;
this.title = title;
this.message = message;
this.okText = okText;
}
public InputDialog(int titleResId, int messageResId, int okTextResId) {
cancelable = DialogX.cancelable;
this.title = getString(titleResId);
this.message = getString(messageResId);
this.okText = getString(okTextResId);
}
public static InputDialog show(CharSequence title, CharSequence message, CharSequence okText) {
InputDialog inputDialog = new InputDialog(title, message, okText);
inputDialog.show();
return inputDialog;
}
public static InputDialog show(int titleResId, int messageResId, int okTextResId) {
InputDialog inputDialog = new InputDialog(titleResId, messageResId, okTextResId);
inputDialog.show();
return inputDialog;
}
public InputDialog(CharSequence title, CharSequence message, CharSequence okText, CharSequence cancelText) {
cancelable = DialogX.cancelable;
this.title = title;
this.message = message;
this.okText = okText;
this.cancelText = cancelText;
}
public InputDialog(int titleResId, int messageResId, int okTextResId, int cancelTextResId) {
cancelable = DialogX.cancelable;
this.title = getString(titleResId);
this.message = getString(messageResId);
this.okText = getString(okTextResId);
this.cancelText = getString(cancelTextResId);
}
public static InputDialog show(CharSequence title, CharSequence message, CharSequence okText, CharSequence cancelText) {
InputDialog inputDialog = new InputDialog(title, message, okText, cancelText);
inputDialog.show();
return inputDialog;
}
public static InputDialog show(int titleResId, int messageResId, int okTextResId, int cancelTextResId) {
InputDialog inputDialog = new InputDialog(titleResId, messageResId, okTextResId, cancelTextResId);
inputDialog.show();
return inputDialog;
}
public InputDialog(CharSequence title, CharSequence message, CharSequence okText, CharSequence cancelText, String inputText) {
cancelable = DialogX.cancelable;
this.title = title;
this.message = message;
this.okText = okText;
this.cancelText = cancelText;
this.inputText = inputText;
}
public static InputDialog show(CharSequence title, CharSequence message, CharSequence okText, CharSequence cancelText, String inputText) {
InputDialog inputDialog = new InputDialog(title, message, okText, cancelText, inputText);
inputDialog.show();
return inputDialog;
}
public InputDialog(CharSequence title, CharSequence message, CharSequence okText, CharSequence cancelText, CharSequence otherText) {
cancelable = DialogX.cancelable;
this.title = title;
this.message = message;
this.okText = okText;
this.cancelText = cancelText;
this.otherText = otherText;
}
public InputDialog(int titleResId, int messageResId, int okTextResId, int cancelTextResId, int otherTextResId) {
cancelable = DialogX.cancelable;
this.title = getString(titleResId);
this.message = getString(messageResId);
this.okText = getString(okTextResId);
this.cancelText = getString(cancelTextResId);
this.otherText = getString(otherTextResId);
}
public static InputDialog show(CharSequence title, CharSequence message, CharSequence okText, CharSequence cancelText, CharSequence otherText) {
InputDialog inputDialog = new InputDialog(title, message, okText, cancelText, otherText);
inputDialog.show();
return inputDialog;
}
public static InputDialog show(int titleResId, int messageResId, int okTextResId, int cancelTextResId, int otherTextResId) {
InputDialog inputDialog = new InputDialog(titleResId, messageResId, okTextResId, cancelTextResId, otherTextResId);
inputDialog.show();
return inputDialog;
}
public InputDialog(CharSequence title, CharSequence message, CharSequence okText, CharSequence cancelText, CharSequence otherText, String inputText) {
cancelable = DialogX.cancelable;
this.title = title;
this.message = message;
this.okText = okText;
this.cancelText = cancelText;
this.otherText = otherText;
this.inputText = inputText;
}
public InputDialog(int titleResId, int messageResId, int okTextResId, int cancelTextResId, int otherTextResId, int inputTextResId) {
cancelable = DialogX.cancelable;
this.title = getString(titleResId);
this.message = getString(messageResId);
this.okText = getString(okTextResId);
this.cancelText = getString(cancelTextResId);
this.otherText = getString(otherTextResId);
this.inputText = getString(inputTextResId);
}
public static InputDialog show(CharSequence title, CharSequence message, CharSequence okText, CharSequence cancelText, CharSequence otherText, String inputText) {
InputDialog inputDialog = new InputDialog(title, message, okText, cancelText, otherText, inputText);
inputDialog.show();
return inputDialog;
}
public static InputDialog show(int titleResId, int messageResId, int okTextResId, int cancelTextResId, int otherTextResId, int inputTextResId) {
InputDialog inputDialog = new InputDialog(titleResId, messageResId, okTextResId, cancelTextResId, otherTextResId, inputTextResId);
inputDialog.show();
return inputDialog;
}
@Override
public String dialogKey() {
return getClass().getSimpleName() + "(" + Integer.toHexString(hashCode()) + ")";
}
public CharSequence getOkButton() {
return okText;
}
public InputDialog setOkButton(CharSequence okText) {
this.okText = okText;
refreshUI();
return this;
}
public InputDialog setOkButton(int okTextResId) {
this.okText = getString(okTextResId);
refreshUI();
return this;
}
public InputDialog setOkButton(OnInputDialogButtonClickListener okButtonClickListener) {
this.okButtonClickListener = okButtonClickListener;
return this;
}
public InputDialog setOkButton(CharSequence okText, OnInputDialogButtonClickListener okButtonClickListener) {
this.okText = okText;
this.okButtonClickListener = okButtonClickListener;
refreshUI();
return this;
}
public InputDialog setOkButton(int okTextResId, OnInputDialogButtonClickListener okButtonClickListener) {
this.okText = getString(okTextResId);
this.okButtonClickListener = okButtonClickListener;
refreshUI();
return this;
}
public CharSequence getCancelButton() {
return cancelText;
}
public InputDialog setCancelButton(CharSequence cancelText) {
this.cancelText = cancelText;
refreshUI();
return this;
}
public InputDialog setCancelButton(int cancelTextResId) {
this.cancelText = getString(cancelTextResId);
refreshUI();
return this;
}
public InputDialog setCancelButton(OnInputDialogButtonClickListener cancelButtonClickListener) {
this.cancelButtonClickListener = cancelButtonClickListener;
return this;
}
public InputDialog setCancelButton(CharSequence cancelText, OnInputDialogButtonClickListener cancelButtonClickListener) {
this.cancelText = cancelText;
this.cancelButtonClickListener = cancelButtonClickListener;
refreshUI();
return this;
}
public InputDialog setCancelButton(int cancelTextResId, OnInputDialogButtonClickListener cancelButtonClickListener) {
this.cancelText = getString(cancelTextResId);
this.cancelButtonClickListener = cancelButtonClickListener;
refreshUI();
return this;
}
public CharSequence getOtherButton() {
return otherText;
}
public InputDialog setOtherButton(CharSequence otherText) {
this.otherText = otherText;
refreshUI();
return this;
}
public InputDialog setOtherButton(int otherTextResId) {
this.otherText = getString(otherTextResId);
refreshUI();
return this;
}
public InputDialog setOtherButton(OnInputDialogButtonClickListener otherButtonClickListener) {
this.otherButtonClickListener = otherButtonClickListener;
return this;
}
public InputDialog setOtherButton(CharSequence otherText, OnInputDialogButtonClickListener otherButtonClickListener) {
this.otherText = otherText;
this.otherButtonClickListener = otherButtonClickListener;
refreshUI();
return this;
}
public InputDialog setOtherButton(int otherTextResId, OnInputDialogButtonClickListener otherButtonClickListener) {
this.otherText = getString(otherTextResId);
this.otherButtonClickListener = otherButtonClickListener;
refreshUI();
return this;
}
public OnInputDialogButtonClickListener getInputOkButtonClickListener() {
return (OnInputDialogButtonClickListener) okButtonClickListener;
}
public InputDialog setOkButtonClickListener(OnInputDialogButtonClickListener okButtonClickListener) {
this.okButtonClickListener = okButtonClickListener;
return this;
}
public OnInputDialogButtonClickListener getInputCancelButtonClickListener() {
return (OnInputDialogButtonClickListener) cancelButtonClickListener;
}
public InputDialog setCancelButtonClickListener(OnInputDialogButtonClickListener cancelButtonClickListener) {
this.cancelButtonClickListener = cancelButtonClickListener;
return this;
}
public OnInputDialogButtonClickListener getInputOtherButtonClickListener() {
return (OnInputDialogButtonClickListener) otherButtonClickListener;
}
public InputDialog setOtherButtonClickListener(OnInputDialogButtonClickListener otherButtonClickListener) {
this.otherButtonClickListener = otherButtonClickListener;
return this;
}
public CharSequence getTitle() {
return title;
}
public InputDialog setTitle(CharSequence title) {
this.title = title;
refreshUI();
return this;
}
public InputDialog setTitle(int titleResId) {
this.title = getString(titleResId);
refreshUI();
return this;
}
public CharSequence getMessage() {
return message;
}
public InputDialog setMessage(CharSequence message) {
this.message = message;
refreshUI();
return this;
}
public InputDialog setMessage(int messageResId) {
this.message = getString(messageResId);
refreshUI();
return this;
}
public String getInputText() {
if (getDialogImpl() != null && getDialogImpl().txtInput != null) {
return getDialogImpl().txtInput.getText().toString();
}
return inputText;
}
public InputDialog setInputText(String inputText) {
this.inputText = inputText;
refreshUI();
return this;
}
public InputDialog setInputText(int inputTextResId) {
this.inputText = getString(inputTextResId);
refreshUI();
return this;
}
public String getInputHintText() {
return inputHintText;
}
public InputDialog setInputHintText(String inputHintText) {
this.inputHintText = inputHintText;
refreshUI();
return this;
}
public InputDialog setInputHintText(int inputHintTextResId) {
this.inputHintText = getString(inputHintTextResId);
refreshUI();
return this;
}
public TextInfo getTitleTextInfo() {
return titleTextInfo;
}
public InputDialog setTitleTextInfo(TextInfo titleTextInfo) {
this.titleTextInfo = titleTextInfo;
refreshUI();
return this;
}
public TextInfo getMessageTextInfo() {
return messageTextInfo;
}
public InputDialog setMessageTextInfo(TextInfo messageTextInfo) {
this.messageTextInfo = messageTextInfo;
refreshUI();
return this;
}
public TextInfo getOkTextInfo() {
return okTextInfo;
}
public InputDialog setOkTextInfo(TextInfo okTextInfo) {
this.okTextInfo = okTextInfo;
refreshUI();
return this;
}
public TextInfo getCancelTextInfo() {
return cancelTextInfo;
}
public InputDialog setCancelTextInfo(TextInfo cancelTextInfo) {
this.cancelTextInfo = cancelTextInfo;
refreshUI();
return this;
}
public TextInfo getOtherTextInfo() {
return otherTextInfo;
}
public InputDialog setOtherTextInfo(TextInfo otherTextInfo) {
this.otherTextInfo = otherTextInfo;
refreshUI();
return this;
}
public InputInfo getInputInfo() {
return inputInfo;
}
public InputDialog setInputInfo(InputInfo inputInfo) {
this.inputInfo = inputInfo;
refreshUI();
return this;
}
public int getButtonOrientation() {
return buttonOrientation;
}
public InputDialog setButtonOrientation(int buttonOrientation) {
this.buttonOrientation = buttonOrientation;
refreshUI();
return this;
}
public boolean isCancelable() {
if (privateCancelable != null) {
return privateCancelable == BOOLEAN.TRUE;
}
if (overrideCancelable != null) {
return overrideCancelable == BOOLEAN.TRUE;
}
return cancelable;
}
public InputDialog setCancelable(boolean cancelable) {
this.privateCancelable = cancelable ? BOOLEAN.TRUE : BOOLEAN.FALSE;
refreshUI();
return this;
}
public OnBackPressedListener getOnBackPressedListener() {
return onBackPressedListener;
}
public InputDialog setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
this.onBackPressedListener = onBackPressedListener;
return this;
}
public boolean isAutoShowInputKeyboard() {
return autoShowInputKeyboard;
}
public InputDialog setAutoShowInputKeyboard(boolean autoShowInputKeyboard) {
this.autoShowInputKeyboard = autoShowInputKeyboard;
return this;
}
public InputDialog setCustomView(OnBindView onBindView) {
this.onBindView = onBindView;
refreshUI();
return this;
}
public View getCustomView() {
if (onBindView == null) return null;
return onBindView.getCustomView();
}
public InputDialog removeCustomView() {
this.onBindView.clean();
refreshUI();
return this;
}
public int getBackgroundColor() {
return backgroundColor;
}
public InputDialog setBackgroundColor(@ColorInt int backgroundColor) {
this.backgroundColor = backgroundColor;
refreshUI();
return this;
}
public InputDialog setBackgroundColorRes(@ColorRes int backgroundColorResId) {
this.backgroundColor = getColor(backgroundColorResId);
refreshUI();
return this;
}
public InputDialog setMaskColor(@ColorInt int maskColor) {
this.maskColor = maskColor;
refreshUI();
return this;
}
public long getEnterAnimDuration() {
return enterAnimDuration;
}
public InputDialog setEnterAnimDuration(long enterAnimDuration) {
this.enterAnimDuration = enterAnimDuration;
return this;
}
public long getExitAnimDuration() {
return exitAnimDuration;
}
public InputDialog setExitAnimDuration(long exitAnimDuration) {
this.exitAnimDuration = exitAnimDuration;
return this;
}
@Override
public void onUIModeChange(Configuration newConfig) {
if (dialogView != null) {
dismiss(dialogView);
}
if (getDialogImpl().boxCustom!=null){
getDialogImpl().boxCustom.removeAllViews();
}
int layoutId = style.layout(isLightTheme());
layoutId = layoutId == 0 ? (isLightTheme() ? R.layout.layout_dialogx_material : R.layout.layout_dialogx_material_dark) : layoutId;
String inputText = getInputText();
enterAnimDuration = 0;
dialogView = createView(layoutId);
dialogImpl = new DialogImpl(dialogView);
dialogView.setTag(me);
show(dialogView);
setInputText(inputText);
}
}