Browse Source

Fixed allowInputEmpty not disabling input dialogs when empty. Stopped working when max length feature was added. Resolves #525.

Aidan Follestad 10 years ago
parent
commit
99248e265b

+ 2 - 1
library/src/main/java/com/afollestad/materialdialogs/DialogInit.java

@@ -378,7 +378,8 @@ class DialogInit {
 
         dialog.inputMinMax = (TextView) dialog.view.findViewById(R.id.minMax);
         if (builder.inputMaxLength > -1) {
-            dialog.invalidateInputMinMaxIndicator(dialog.input.getText().toString().length());
+            dialog.invalidateInputMinMaxIndicator(dialog.input.getText().toString().length(),
+                    !builder.inputAllowEmpty);
         } else {
             dialog.inputMinMax.setVisibility(View.GONE);
             dialog.inputMinMax = null;

+ 9 - 7
library/src/main/java/com/afollestad/materialdialogs/MaterialDialog.java

@@ -1417,11 +1417,13 @@ public class MaterialDialog extends DialogBase implements
                 if (mBuilder.alwaysCallInputCallback)
                     mBuilder.inputCallback.onInput(MaterialDialog.this, s);
                 final int length = s.toString().length();
+                boolean emptyDisabled = false;
                 if (!mBuilder.inputAllowEmpty) {
+                    emptyDisabled = length == 0;
                     final View positiveAb = getActionButton(DialogAction.POSITIVE);
-                    positiveAb.setEnabled(length > 0);
+                    positiveAb.setEnabled(!emptyDisabled);
                 }
-                invalidateInputMinMaxIndicator(length);
+                invalidateInputMinMaxIndicator(length, emptyDisabled);
             }
 
             @Override
@@ -1430,16 +1432,16 @@ public class MaterialDialog extends DialogBase implements
         });
     }
 
-    protected void invalidateInputMinMaxIndicator(int currentLength) {
+    protected void invalidateInputMinMaxIndicator(int currentLength, boolean emptyDisabled) {
         if (inputMinMax != null) {
             inputMinMax.setText(currentLength + "/" + mBuilder.inputMaxLength);
-            final boolean overMax = currentLength > mBuilder.inputMaxLength;
-            final int colorText = overMax ? mBuilder.inputMaxLengthErrorColor : mBuilder.contentColor;
-            final int colorWidget = overMax ? mBuilder.inputMaxLengthErrorColor : mBuilder.widgetColor;
+            final boolean isDisabled = emptyDisabled || currentLength > mBuilder.inputMaxLength;
+            final int colorText = isDisabled ? mBuilder.inputMaxLengthErrorColor : mBuilder.contentColor;
+            final int colorWidget = isDisabled ? mBuilder.inputMaxLengthErrorColor : mBuilder.widgetColor;
             inputMinMax.setTextColor(colorText);
             MDTintHelper.setTint(input, colorWidget);
             final View positiveAb = getActionButton(DialogAction.POSITIVE);
-            positiveAb.setEnabled(!overMax);
+            positiveAb.setEnabled(!isDisabled);
         }
     }