small refactor / remove unused code

This commit is contained in:
Helium314 2024-05-11 15:51:55 +02:00
parent 34d8bd16f0
commit 0b7f0adc56

View file

@ -8,7 +8,6 @@ package helium314.keyboard.keyboard;
import android.app.KeyguardManager; import android.app.KeyguardManager;
import android.content.Context; import android.content.Context;
import android.content.res.Resources;
import android.os.Build; import android.os.Build;
import android.text.InputType; import android.text.InputType;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
@ -40,8 +39,6 @@ public final class KeyboardLayoutSet {
private static final String TAG = KeyboardLayoutSet.class.getSimpleName(); private static final String TAG = KeyboardLayoutSet.class.getSimpleName();
private static final boolean DEBUG_CACHE = false; private static final boolean DEBUG_CACHE = false;
private static final String KEYBOARD_LAYOUT_SET_RESOURCE_PREFIX = "keyboard_layout_set_";
private final Context mContext; private final Context mContext;
@NonNull @NonNull
private final Params mParams; private final Params mParams;
@ -55,8 +52,7 @@ public final class KeyboardLayoutSet {
// will stay in the cache. So we forcibly keep some references in an array to prevent // will stay in the cache. So we forcibly keep some references in an array to prevent
// them from disappearing from sKeyboardCache. // them from disappearing from sKeyboardCache.
private static final Keyboard[] sForcibleKeyboardCache = new Keyboard[FORCIBLE_CACHE_SIZE]; private static final Keyboard[] sForcibleKeyboardCache = new Keyboard[FORCIBLE_CACHE_SIZE];
private static final HashMap<KeyboardId, SoftReference<Keyboard>> sKeyboardCache = private static final HashMap<KeyboardId, SoftReference<Keyboard>> sKeyboardCache = new HashMap<>();
new HashMap<>();
@NonNull @NonNull
private static final UniqueKeysCache sUniqueKeysCache = UniqueKeysCache.newInstance(); private static final UniqueKeysCache sUniqueKeysCache = UniqueKeysCache.newInstance();
@ -70,7 +66,6 @@ public final class KeyboardLayoutSet {
} }
public static final class Params { public static final class Params {
String mKeyboardLayoutSetName; // this is only for xml, can be removed together with xmls
int mMode; int mMode;
boolean mDisableTouchPositionCorrectionDataForTest; // remove boolean mDisableTouchPositionCorrectionDataForTest; // remove
// TODO: Use {@link InputAttributes} instead of these variables. // TODO: Use {@link InputAttributes} instead of these variables.
@ -116,25 +111,17 @@ public final class KeyboardLayoutSet {
public Keyboard getKeyboard(final int baseKeyboardLayoutSetElementId) { public Keyboard getKeyboard(final int baseKeyboardLayoutSetElementId) {
final int keyboardLayoutSetElementId; final int keyboardLayoutSetElementId;
switch (mParams.mMode) { switch (mParams.mMode) {
case KeyboardId.MODE_PHONE: case KeyboardId.MODE_PHONE -> {
if (baseKeyboardLayoutSetElementId == KeyboardId.ELEMENT_SYMBOLS) { if (baseKeyboardLayoutSetElementId == KeyboardId.ELEMENT_SYMBOLS) {
keyboardLayoutSetElementId = KeyboardId.ELEMENT_PHONE_SYMBOLS; keyboardLayoutSetElementId = KeyboardId.ELEMENT_PHONE_SYMBOLS;
} else { } else {
keyboardLayoutSetElementId = KeyboardId.ELEMENT_PHONE; keyboardLayoutSetElementId = KeyboardId.ELEMENT_PHONE;
} }
break; }
case KeyboardId.MODE_NUMPAD: case KeyboardId.MODE_NUMPAD -> keyboardLayoutSetElementId = KeyboardId.ELEMENT_NUMPAD;
keyboardLayoutSetElementId = KeyboardId.ELEMENT_NUMPAD; case KeyboardId.MODE_NUMBER, KeyboardId.MODE_DATE, KeyboardId.MODE_TIME, KeyboardId.MODE_DATETIME ->
break;
case KeyboardId.MODE_NUMBER:
case KeyboardId.MODE_DATE:
case KeyboardId.MODE_TIME:
case KeyboardId.MODE_DATETIME:
keyboardLayoutSetElementId = KeyboardId.ELEMENT_NUMBER; keyboardLayoutSetElementId = KeyboardId.ELEMENT_NUMBER;
break; default -> keyboardLayoutSetElementId = baseKeyboardLayoutSetElementId;
default:
keyboardLayoutSetElementId = baseKeyboardLayoutSetElementId;
break;
} }
// Note: The keyboard for each shift state, and mode are represented as an elementName // Note: The keyboard for each shift state, and mode are represented as an elementName
@ -196,7 +183,6 @@ public final class KeyboardLayoutSet {
public static final class Builder { public static final class Builder {
private final Context mContext; private final Context mContext;
private final Resources mResources;
private final Params mParams = new Params(); private final Params mParams = new Params();
@ -204,7 +190,6 @@ public final class KeyboardLayoutSet {
public Builder(final Context context, @Nullable final EditorInfo ei) { public Builder(final Context context, @Nullable final EditorInfo ei) {
mContext = context; mContext = context;
mResources = context.getResources();
final Params params = mParams; final Params params = mParams;
final EditorInfo editorInfo = (ei != null) ? ei : EMPTY_EDITOR_INFO; final EditorInfo editorInfo = (ei != null) ? ei : EMPTY_EDITOR_INFO;
@ -232,12 +217,9 @@ public final class KeyboardLayoutSet {
public Builder setSubtype(@NonNull final RichInputMethodSubtype subtype) { public Builder setSubtype(@NonNull final RichInputMethodSubtype subtype) {
final boolean asciiCapable = subtype.getRawSubtype().isAsciiCapable(); final boolean asciiCapable = subtype.getRawSubtype().isAsciiCapable();
final boolean forceAscii = (mParams.mEditorInfo.imeOptions & EditorInfo.IME_FLAG_FORCE_ASCII) != 0; final boolean forceAscii = (mParams.mEditorInfo.imeOptions & EditorInfo.IME_FLAG_FORCE_ASCII) != 0;
final RichInputMethodSubtype keyboardSubtype = (forceAscii && !asciiCapable) mParams.mSubtype = (forceAscii && !asciiCapable)
? RichInputMethodSubtype.getNoLanguageSubtype() ? RichInputMethodSubtype.getNoLanguageSubtype()
: subtype; : subtype;
mParams.mSubtype = keyboardSubtype;
mParams.mKeyboardLayoutSetName = KEYBOARD_LAYOUT_SET_RESOURCE_PREFIX
+ keyboardSubtype.getKeyboardLayoutSetName();
return this; return this;
} }
@ -296,14 +278,11 @@ public final class KeyboardLayoutSet {
case InputType.TYPE_CLASS_NUMBER: case InputType.TYPE_CLASS_NUMBER:
return KeyboardId.MODE_NUMBER; return KeyboardId.MODE_NUMBER;
case InputType.TYPE_CLASS_DATETIME: case InputType.TYPE_CLASS_DATETIME:
switch (variation) { return switch (variation) {
case InputType.TYPE_DATETIME_VARIATION_DATE: case InputType.TYPE_DATETIME_VARIATION_DATE -> KeyboardId.MODE_DATE;
return KeyboardId.MODE_DATE; case InputType.TYPE_DATETIME_VARIATION_TIME -> KeyboardId.MODE_TIME;
case InputType.TYPE_DATETIME_VARIATION_TIME: default -> KeyboardId.MODE_DATETIME; // must be InputType.TYPE_DATETIME_VARIATION_NORMAL
return KeyboardId.MODE_TIME; };
default: // InputType.TYPE_DATETIME_VARIATION_NORMAL
return KeyboardId.MODE_DATETIME;
}
case InputType.TYPE_CLASS_PHONE: case InputType.TYPE_CLASS_PHONE:
return KeyboardId.MODE_PHONE; return KeyboardId.MODE_PHONE;
case InputType.TYPE_CLASS_TEXT: case InputType.TYPE_CLASS_TEXT: