238 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			238 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.emoji2.viewsintegration;
 | |
| 
 | |
| import android.text.InputFilter;
 | |
| import android.text.method.PasswordTransformationMethod;
 | |
| import android.text.method.TransformationMethod;
 | |
| import android.util.SparseArray;
 | |
| import android.widget.TextView;
 | |
| import androidx.core.util.Preconditions;
 | |
| import androidx.emoji2.text.EmojiCompat;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public final class EmojiTextViewHelper {
 | |
|     private final HelperInternal mHelper;
 | |
| 
 | |
|     public EmojiTextViewHelper(TextView textView) {
 | |
|         this(textView, true);
 | |
|     }
 | |
| 
 | |
|     public EmojiTextViewHelper(TextView textView, boolean z) {
 | |
|         Preconditions.checkNotNull(textView, "textView cannot be null");
 | |
|         if (!z) {
 | |
|             this.mHelper = new SkippingHelper19(textView);
 | |
|         } else {
 | |
|             this.mHelper = new HelperInternal19(textView);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void updateTransformationMethod() {
 | |
|         this.mHelper.updateTransformationMethod();
 | |
|     }
 | |
| 
 | |
|     public InputFilter[] getFilters(InputFilter[] inputFilterArr) {
 | |
|         return this.mHelper.getFilters(inputFilterArr);
 | |
|     }
 | |
| 
 | |
|     public TransformationMethod wrapTransformationMethod(TransformationMethod transformationMethod) {
 | |
|         return this.mHelper.wrapTransformationMethod(transformationMethod);
 | |
|     }
 | |
| 
 | |
|     public void setEnabled(boolean z) {
 | |
|         this.mHelper.setEnabled(z);
 | |
|     }
 | |
| 
 | |
|     public void setAllCaps(boolean z) {
 | |
|         this.mHelper.setAllCaps(z);
 | |
|     }
 | |
| 
 | |
|     public boolean isEnabled() {
 | |
|         return this.mHelper.isEnabled();
 | |
|     }
 | |
| 
 | |
|     static class HelperInternal {
 | |
|         InputFilter[] getFilters(InputFilter[] inputFilterArr) {
 | |
|             return inputFilterArr;
 | |
|         }
 | |
| 
 | |
|         public boolean isEnabled() {
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         void setAllCaps(boolean z) {
 | |
|         }
 | |
| 
 | |
|         void setEnabled(boolean z) {
 | |
|         }
 | |
| 
 | |
|         void updateTransformationMethod() {
 | |
|         }
 | |
| 
 | |
|         TransformationMethod wrapTransformationMethod(TransformationMethod transformationMethod) {
 | |
|             return transformationMethod;
 | |
|         }
 | |
| 
 | |
|         HelperInternal() {
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private static class SkippingHelper19 extends HelperInternal {
 | |
|         private final HelperInternal19 mHelperDelegate;
 | |
| 
 | |
|         SkippingHelper19(TextView textView) {
 | |
|             this.mHelperDelegate = new HelperInternal19(textView);
 | |
|         }
 | |
| 
 | |
|         private boolean skipBecauseEmojiCompatNotInitialized() {
 | |
|             return !EmojiCompat.isConfigured();
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         void updateTransformationMethod() {
 | |
|             if (skipBecauseEmojiCompatNotInitialized()) {
 | |
|                 return;
 | |
|             }
 | |
|             this.mHelperDelegate.updateTransformationMethod();
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         InputFilter[] getFilters(InputFilter[] inputFilterArr) {
 | |
|             return skipBecauseEmojiCompatNotInitialized() ? inputFilterArr : this.mHelperDelegate.getFilters(inputFilterArr);
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         TransformationMethod wrapTransformationMethod(TransformationMethod transformationMethod) {
 | |
|             return skipBecauseEmojiCompatNotInitialized() ? transformationMethod : this.mHelperDelegate.wrapTransformationMethod(transformationMethod);
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         void setAllCaps(boolean z) {
 | |
|             if (skipBecauseEmojiCompatNotInitialized()) {
 | |
|                 return;
 | |
|             }
 | |
|             this.mHelperDelegate.setAllCaps(z);
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         void setEnabled(boolean z) {
 | |
|             if (skipBecauseEmojiCompatNotInitialized()) {
 | |
|                 this.mHelperDelegate.setEnabledUnsafe(z);
 | |
|             } else {
 | |
|                 this.mHelperDelegate.setEnabled(z);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         public boolean isEnabled() {
 | |
|             return this.mHelperDelegate.isEnabled();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private static class HelperInternal19 extends HelperInternal {
 | |
|         private final EmojiInputFilter mEmojiInputFilter;
 | |
|         private boolean mEnabled = true;
 | |
|         private final TextView mTextView;
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         public boolean isEnabled() {
 | |
|             return this.mEnabled;
 | |
|         }
 | |
| 
 | |
|         void setEnabledUnsafe(boolean z) {
 | |
|             this.mEnabled = z;
 | |
|         }
 | |
| 
 | |
|         HelperInternal19(TextView textView) {
 | |
|             this.mTextView = textView;
 | |
|             this.mEmojiInputFilter = new EmojiInputFilter(textView);
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         void updateTransformationMethod() {
 | |
|             this.mTextView.setTransformationMethod(wrapTransformationMethod(this.mTextView.getTransformationMethod()));
 | |
|         }
 | |
| 
 | |
|         private void updateFilters() {
 | |
|             this.mTextView.setFilters(getFilters(this.mTextView.getFilters()));
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         InputFilter[] getFilters(InputFilter[] inputFilterArr) {
 | |
|             if (!this.mEnabled) {
 | |
|                 return removeEmojiInputFilterIfPresent(inputFilterArr);
 | |
|             }
 | |
|             return addEmojiInputFilterIfMissing(inputFilterArr);
 | |
|         }
 | |
| 
 | |
|         private InputFilter[] addEmojiInputFilterIfMissing(InputFilter[] inputFilterArr) {
 | |
|             int length = inputFilterArr.length;
 | |
|             for (InputFilter inputFilter : inputFilterArr) {
 | |
|                 if (inputFilter == this.mEmojiInputFilter) {
 | |
|                     return inputFilterArr;
 | |
|                 }
 | |
|             }
 | |
|             InputFilter[] inputFilterArr2 = new InputFilter[inputFilterArr.length + 1];
 | |
|             System.arraycopy(inputFilterArr, 0, inputFilterArr2, 0, length);
 | |
|             inputFilterArr2[length] = this.mEmojiInputFilter;
 | |
|             return inputFilterArr2;
 | |
|         }
 | |
| 
 | |
|         private InputFilter[] removeEmojiInputFilterIfPresent(InputFilter[] inputFilterArr) {
 | |
|             SparseArray<InputFilter> emojiInputFilterPositionArray = getEmojiInputFilterPositionArray(inputFilterArr);
 | |
|             if (emojiInputFilterPositionArray.size() == 0) {
 | |
|                 return inputFilterArr;
 | |
|             }
 | |
|             int length = inputFilterArr.length;
 | |
|             InputFilter[] inputFilterArr2 = new InputFilter[inputFilterArr.length - emojiInputFilterPositionArray.size()];
 | |
|             int i = 0;
 | |
|             for (int i2 = 0; i2 < length; i2++) {
 | |
|                 if (emojiInputFilterPositionArray.indexOfKey(i2) < 0) {
 | |
|                     inputFilterArr2[i] = inputFilterArr[i2];
 | |
|                     i++;
 | |
|                 }
 | |
|             }
 | |
|             return inputFilterArr2;
 | |
|         }
 | |
| 
 | |
|         private SparseArray<InputFilter> getEmojiInputFilterPositionArray(InputFilter[] inputFilterArr) {
 | |
|             SparseArray<InputFilter> sparseArray = new SparseArray<>(1);
 | |
|             for (int i = 0; i < inputFilterArr.length; i++) {
 | |
|                 InputFilter inputFilter = inputFilterArr[i];
 | |
|                 if (inputFilter instanceof EmojiInputFilter) {
 | |
|                     sparseArray.put(i, inputFilter);
 | |
|                 }
 | |
|             }
 | |
|             return sparseArray;
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         TransformationMethod wrapTransformationMethod(TransformationMethod transformationMethod) {
 | |
|             if (this.mEnabled) {
 | |
|                 return wrapForEnabled(transformationMethod);
 | |
|             }
 | |
|             return unwrapForDisabled(transformationMethod);
 | |
|         }
 | |
| 
 | |
|         private TransformationMethod unwrapForDisabled(TransformationMethod transformationMethod) {
 | |
|             return transformationMethod instanceof EmojiTransformationMethod ? ((EmojiTransformationMethod) transformationMethod).getOriginalTransformationMethod() : transformationMethod;
 | |
|         }
 | |
| 
 | |
|         private TransformationMethod wrapForEnabled(TransformationMethod transformationMethod) {
 | |
|             return ((transformationMethod instanceof EmojiTransformationMethod) || (transformationMethod instanceof PasswordTransformationMethod)) ? transformationMethod : new EmojiTransformationMethod(transformationMethod);
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         void setAllCaps(boolean z) {
 | |
|             if (z) {
 | |
|                 updateTransformationMethod();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal
 | |
|         void setEnabled(boolean z) {
 | |
|             this.mEnabled = z;
 | |
|             updateTransformationMethod();
 | |
|             updateFilters();
 | |
|         }
 | |
|     }
 | |
| }
 |