|
@@ -1,13 +1,20 @@
|
|
package com.afollestad.materialdialogs.prefs;
|
|
package com.afollestad.materialdialogs.prefs;
|
|
|
|
|
|
import android.content.Context;
|
|
import android.content.Context;
|
|
|
|
+import android.content.res.TypedArray;
|
|
|
|
+import android.graphics.PorterDuff;
|
|
|
|
+import android.os.Build;
|
|
|
|
+import android.os.Build.VERSION;
|
|
|
|
+import android.os.Build.VERSION_CODES;
|
|
import android.os.Bundle;
|
|
import android.os.Bundle;
|
|
import android.preference.EditTextPreference;
|
|
import android.preference.EditTextPreference;
|
|
import android.util.AttributeSet;
|
|
import android.util.AttributeSet;
|
|
-import android.view.ViewGroup;
|
|
|
|
|
|
+import android.util.TypedValue;
|
|
import android.widget.EditText;
|
|
import android.widget.EditText;
|
|
|
|
+import android.widget.FrameLayout;
|
|
|
|
|
|
import com.afollestad.materialdialogs.MaterialDialog;
|
|
import com.afollestad.materialdialogs.MaterialDialog;
|
|
|
|
+import com.afollestad.materialdialogs.MaterialDialog.ButtonCallback;
|
|
import com.afollestad.materialdialogs.R;
|
|
import com.afollestad.materialdialogs.R;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -15,46 +22,59 @@ import com.afollestad.materialdialogs.R;
|
|
*/
|
|
*/
|
|
public class MaterialEditTextPreference extends EditTextPreference {
|
|
public class MaterialEditTextPreference extends EditTextPreference {
|
|
|
|
|
|
- private EditText editText;
|
|
|
|
-
|
|
|
|
- public MaterialEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
|
|
|
- super(context, attrs, defStyleAttr);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public MaterialEditTextPreference(Context context, AttributeSet attrs) {
|
|
|
|
- super(context, attrs);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public MaterialEditTextPreference(Context context) {
|
|
|
|
- super(context);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- protected void showDialog(Bundle state) {
|
|
|
|
- MaterialDialog.Builder mBuilder = new MaterialDialog.Builder(getContext())
|
|
|
|
- .title(getTitle())
|
|
|
|
- .icon(getDialogIcon())
|
|
|
|
- .positiveText(getPositiveButtonText())
|
|
|
|
- .negativeText(getNegativeButtonText())
|
|
|
|
- .customView(R.layout.md_input_dialog, false)
|
|
|
|
- .callback(new MaterialDialog.ButtonCallback() {
|
|
|
|
- @Override
|
|
|
|
- public void onPositive(MaterialDialog dialog) {
|
|
|
|
- super.onPositive(dialog);
|
|
|
|
- String value = editText.getText().toString();
|
|
|
|
- if (callChangeListener(value) && isPersistent())
|
|
|
|
- setText(value);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- mBuilder.content(getDialogMessage());
|
|
|
|
- MaterialDialog dialog = mBuilder.build();
|
|
|
|
- editText = (EditText) ((ViewGroup) dialog.getCustomView()).getChildAt(0);
|
|
|
|
- editText.setText(getText());
|
|
|
|
- dialog.show();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public final EditText getEditText() {
|
|
|
|
- return editText;
|
|
|
|
- }
|
|
|
|
|
|
+ public MaterialEditTextPreference(Context context, AttributeSet attrs) {
|
|
|
|
+ super(context, attrs);
|
|
|
|
+ TypedValue value = new TypedValue();
|
|
|
|
+ context.getTheme().resolveAttribute(R.attr.colorAccent, value, true);
|
|
|
|
+ color = value.data;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public MaterialEditTextPreference(Context context) {
|
|
|
|
+ this(context, null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private MaterialDialog dialog;
|
|
|
|
+ private int color = 0;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected void showDialog(Bundle state) {
|
|
|
|
+
|
|
|
|
+ // Build our dialog for the first time
|
|
|
|
+ if (dialog == null)
|
|
|
|
+ {
|
|
|
|
+ if (VERSION.SDK_INT < VERSION_CODES.LOLLIPOP)
|
|
|
|
+ getEditText().getBackground().setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
|
|
|
|
+
|
|
|
|
+ dialog = new MaterialDialog.Builder(getContext())
|
|
|
|
+ .title(getTitle())
|
|
|
|
+ .icon(getDialogIcon())
|
|
|
|
+ .positiveText(getPositiveButtonText())
|
|
|
|
+ .negativeText(getNegativeButtonText())
|
|
|
|
+ .customView(R.layout.md_input_dialog, false)
|
|
|
|
+ .callback(callback)
|
|
|
|
+ .content(getDialogMessage()).build();
|
|
|
|
+
|
|
|
|
+ // So we maintain margins
|
|
|
|
+ FrameLayout layout = (FrameLayout) dialog.getCustomView();
|
|
|
|
+ if (layout != null)
|
|
|
|
+ {
|
|
|
|
+ layout.removeAllViews();
|
|
|
|
+ layout.addView(getEditText());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Built it, now show it
|
|
|
|
+ dialog.show();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private final ButtonCallback callback = new ButtonCallback()
|
|
|
|
+ {
|
|
|
|
+ @Override
|
|
|
|
+ public void onPositive(MaterialDialog dialog)
|
|
|
|
+ {
|
|
|
|
+ String value = getEditText().getText().toString();
|
|
|
|
+ if (callChangeListener(value) && isPersistent())
|
|
|
|
+ setText(value);
|
|
|
|
+ }
|
|
|
|
+ };
|
|
}
|
|
}
|