Files
Daniel Elliott f9d20bb3fc Add decompiled APK source code (JADX)
- 28,932 files
- Full Java source code
- Smali files
- Resources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-18 14:52:23 -08:00

124 lines
4.1 KiB
Java

package androidx.emoji2.viewsintegration;
import android.text.Editable;
import android.text.Selection;
import android.text.Spannable;
import android.text.TextWatcher;
import android.widget.EditText;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.emoji2.text.EmojiCompat;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
@RequiresApi(19)
@RestrictTo({RestrictTo.Scope.LIBRARY})
/* loaded from: classes.dex */
final class EmojiTextWatcher implements TextWatcher {
private final EditText mEditText;
private final boolean mExpectInitializedEmojiCompat;
private EmojiCompat.InitCallback mInitCallback;
private int mMaxEmojiCount = Integer.MAX_VALUE;
private int mEmojiReplaceStrategy = 0;
private boolean mEnabled = true;
@Override // android.text.TextWatcher
public void afterTextChanged(Editable editable) {
}
@Override // android.text.TextWatcher
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
public int getEmojiReplaceStrategy() {
return this.mEmojiReplaceStrategy;
}
public int getMaxEmojiCount() {
return this.mMaxEmojiCount;
}
public boolean isEnabled() {
return this.mEnabled;
}
public void setEmojiReplaceStrategy(int i) {
this.mEmojiReplaceStrategy = i;
}
public void setMaxEmojiCount(int i) {
this.mMaxEmojiCount = i;
}
public EmojiTextWatcher(EditText editText, boolean z) {
this.mEditText = editText;
this.mExpectInitializedEmojiCompat = z;
}
@Override // android.text.TextWatcher
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if (this.mEditText.isInEditMode() || shouldSkipForDisabledOrNotConfigured() || i2 > i3 || !(charSequence instanceof Spannable)) {
return;
}
int loadState = EmojiCompat.get().getLoadState();
if (loadState != 0) {
if (loadState == 1) {
EmojiCompat.get().process((Spannable) charSequence, i, i + i3, this.mMaxEmojiCount, this.mEmojiReplaceStrategy);
return;
} else if (loadState != 3) {
return;
}
}
EmojiCompat.get().registerInitCallback(getInitCallback());
}
private boolean shouldSkipForDisabledOrNotConfigured() {
return (this.mEnabled && (this.mExpectInitializedEmojiCompat || EmojiCompat.isConfigured())) ? false : true;
}
private EmojiCompat.InitCallback getInitCallback() {
if (this.mInitCallback == null) {
this.mInitCallback = new InitCallbackImpl(this.mEditText);
}
return this.mInitCallback;
}
public void setEnabled(boolean z) {
if (this.mEnabled != z) {
if (this.mInitCallback != null) {
EmojiCompat.get().unregisterInitCallback(this.mInitCallback);
}
this.mEnabled = z;
if (z) {
processTextOnEnablingEvent(this.mEditText, EmojiCompat.get().getLoadState());
}
}
}
@RequiresApi(19)
public static class InitCallbackImpl extends EmojiCompat.InitCallback {
private final Reference<EditText> mViewRef;
public InitCallbackImpl(EditText editText) {
this.mViewRef = new WeakReference(editText);
}
@Override // androidx.emoji2.text.EmojiCompat.InitCallback
public void onInitialized() {
super.onInitialized();
EmojiTextWatcher.processTextOnEnablingEvent(this.mViewRef.get(), 1);
}
}
public static void processTextOnEnablingEvent(@Nullable EditText editText, int i) {
if (i == 1 && editText != null && editText.isAttachedToWindow()) {
Editable editableText = editText.getEditableText();
int selectionStart = Selection.getSelectionStart(editableText);
int selectionEnd = Selection.getSelectionEnd(editableText);
EmojiCompat.get().process(editableText);
EmojiInputFilter.updateSelection(editableText, selectionStart, selectionEnd);
}
}
}