package com.dvd.android.xposed.enableambientdisplay.utils;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
public class RegexValidatorPreference extends EditTextPreference implements TextWatcher {
public RegexValidatorPreference(Context context) {
this(context, null);
}
public RegexValidatorPreference(Context context, AttributeSet attrs) {
super(context, attrs);
getEditText().setSingleLine(true);
getEditText().setMaxLines(1);
getEditText().setLines(1);
}
@Override
protected void showDialog(Bundle state) {
super.showDialog(state);
getEditText().removeTextChangedListener(this);
getEditText().addTextChangedListener(this);
onEditTextChanged();
}
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
onEditTextChanged();
}
private void onEditTextChanged() {
try {
boolean matches = getEditText().getText().toString().matches("^\\d+s(,\\d+s)*$");
Dialog dlg = getDialog();
if (dlg instanceof AlertDialog) {
((AlertDialog) dlg).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(matches);
}
} catch (NullPointerException ignore) {
}
}
@Override
protected boolean persistString(String value) {
setSummary(value);
return super.persistString(value);
}
}