diff options
| -rw-r--r-- | ProtoLibraries.bp | 2 | ||||
| -rw-r--r-- | packages/SystemUI/res/values/strings.xml | 5 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialog.java | 45 | 
3 files changed, 51 insertions, 1 deletions
diff --git a/ProtoLibraries.bp b/ProtoLibraries.bp index c12f5b4395ec..a0944d40a5e3 100644 --- a/ProtoLibraries.bp +++ b/ProtoLibraries.bp @@ -100,6 +100,8 @@ java_library_host {          ],          type: "full",      }, +    // b/267831518: Pin tradefed and dependencies to Java 11. +    java_version: "11",      // Protos have lots of MissingOverride and similar.      errorprone: {          enabled: false, diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 53f1227383b7..422b04973d35 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -2348,7 +2348,10 @@      <string name="media_output_broadcast_update_error">Can\u2019t save. Try again.</string>      <!-- The error message when Broadcast name/code update failed and can't change again[CHAR LIMIT=60] -->      <string name="media_output_broadcast_last_update_error">Can\u2019t save.</string> - +    <!-- The hint message when Broadcast code is less than 4 characters [CHAR LIMIT=60] --> +    <string name="media_output_broadcast_code_hint_no_less_than_min">Use at least 4 characters</string> +    <!-- The hint message when Broadcast code is more than 16 characters [CHAR LIMIT=60] --> +    <string name="media_output_broadcast_code_hint_no_more_than_max">Use fewer than 16 characters</string>      <!-- Label for clip data when copying the build number off QS [CHAR LIMIT=NONE]-->      <string name="build_number_clip_data_label">Build number</string> diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialog.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialog.java index 35baf0131b9d..12d6b7ccf5cd 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialog.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialog.java @@ -20,6 +20,8 @@ import android.app.AlertDialog;  import android.content.Context;  import android.graphics.Bitmap;  import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher;  import android.text.method.HideReturnsTransformationMethod;  import android.text.method.PasswordTransformationMethod;  import android.util.Log; @@ -64,11 +66,51 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog {      private String mCurrentBroadcastName;      private String mCurrentBroadcastCode;      private boolean mIsStopbyUpdateBroadcastCode = false; +    private TextWatcher mTextWatcher = new TextWatcher() { +        @Override +        public void beforeTextChanged(CharSequence s, int start, int count, int after) { +            // Do nothing +        } + +        @Override +        public void onTextChanged(CharSequence s, int start, int before, int count) { +            // Do nothing +        } + +        @Override +        public void afterTextChanged(Editable s) { +            if (mAlertDialog == null || mBroadcastErrorMessage == null) { +                return; +            } +            boolean breakBroadcastCodeRuleTextLengthLessThanMin = +                    s.length() > 0 && s.length() < BROADCAST_CODE_MIN_LENGTH; +            boolean breakBroadcastCodeRuleTextLengthMoreThanMax = +                    s.length() > BROADCAST_CODE_MAX_LENGTH; +            boolean breakRule = breakBroadcastCodeRuleTextLengthLessThanMin +                    || breakBroadcastCodeRuleTextLengthMoreThanMax; + +            if (breakBroadcastCodeRuleTextLengthLessThanMin) { +                mBroadcastErrorMessage.setText( +                        R.string.media_output_broadcast_code_hint_no_less_than_min); +            } else if (breakBroadcastCodeRuleTextLengthMoreThanMax) { +                mBroadcastErrorMessage.setText( +                        R.string.media_output_broadcast_code_hint_no_more_than_max); +            } + +            mBroadcastErrorMessage.setVisibility(breakRule ? View.VISIBLE : View.INVISIBLE); +            Button positiveBtn = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); +            if (positiveBtn != null) { +                positiveBtn.setEnabled(breakRule ? false : true); +            } +        } +    };      static final int METADATA_BROADCAST_NAME = 0;      static final int METADATA_BROADCAST_CODE = 1;      private static final int MAX_BROADCAST_INFO_UPDATE = 3; +    private static final int BROADCAST_CODE_MAX_LENGTH = 16; +    private static final int BROADCAST_CODE_MIN_LENGTH = 4;      MediaOutputBroadcastDialog(Context context, boolean aboveStatusbar,              BroadcastSender broadcastSender, MediaOutputController mediaOutputController) { @@ -219,6 +261,9 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog {                  R.layout.media_output_broadcast_update_dialog, null);          final EditText editText = layout.requireViewById(R.id.broadcast_edit_text);          editText.setText(editString); +        if (isBroadcastCode) { +            editText.addTextChangedListener(mTextWatcher); +        }          mBroadcastErrorMessage = layout.requireViewById(R.id.broadcast_error_message);          mAlertDialog = new Builder(mContext)                  .setTitle(isBroadcastCode ? R.string.media_output_broadcast_code  |