diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/compat/InputMethodSubtypeCompatUtils.kt b/app/src/main/java/org/dslul/openboard/inputmethod/compat/InputMethodSubtypeCompatUtils.kt
index d7b3bc715..58ce0fcc3 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/compat/InputMethodSubtypeCompatUtils.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/compat/InputMethodSubtypeCompatUtils.kt
@@ -10,7 +10,7 @@ import android.os.Build
import android.os.Build.VERSION_CODES
import android.view.inputmethod.InputMethodSubtype
import org.dslul.openboard.inputmethod.latin.common.LocaleUtils
-import org.dslul.openboard.inputmethod.latin.settings.locale
+import org.dslul.openboard.inputmethod.latin.utils.locale
import java.util.*
object InputMethodSubtypeCompatUtils {
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java
index d0c092173..cce3eb13a 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java
@@ -131,7 +131,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
.setNumberRowEnabled(settingsValues.mShowsNumberRow)
.setLanguageSwitchKeyEnabled(settingsValues.isLanguageSwitchKeyEnabled())
.setEmojiKeyEnabled(settingsValues.mShowsEmojiKey)
- .setSplitLayoutEnabled(ProductionFlags.IS_SPLIT_KEYBOARD_SUPPORTED && settingsValues.mIsSplitKeyboardEnabled)
+ .setSplitLayoutEnabled(settingsValues.mIsSplitKeyboardEnabled)
.setOneHandedModeEnabled(oneHandedModeEnabled)
.build();
try {
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java
index f4015f345..340ed59b7 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java
@@ -69,7 +69,6 @@ import org.dslul.openboard.inputmethod.latin.permissions.PermissionsManager;
import org.dslul.openboard.inputmethod.latin.personalization.PersonalizationHelper;
import org.dslul.openboard.inputmethod.latin.settings.Settings;
import org.dslul.openboard.inputmethod.latin.settings.SettingsActivity;
-import org.dslul.openboard.inputmethod.latin.settings.SubtypeSettingsKt;
import org.dslul.openboard.inputmethod.latin.settings.SettingsValues;
import org.dslul.openboard.inputmethod.latin.suggestions.SuggestionStripView;
import org.dslul.openboard.inputmethod.latin.suggestions.SuggestionStripViewAccessor;
@@ -84,6 +83,7 @@ import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.latin.utils.StatsUtils;
import org.dslul.openboard.inputmethod.latin.utils.StatsUtilsManager;
import org.dslul.openboard.inputmethod.latin.utils.SubtypeLocaleUtils;
+import org.dslul.openboard.inputmethod.latin.utils.SubtypeSettingsKt;
import org.dslul.openboard.inputmethod.latin.utils.ViewLayoutUtils;
import java.io.FileDescriptor;
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/RichInputMethodManager.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/RichInputMethodManager.java
index db3526f71..050906714 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/RichInputMethodManager.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/RichInputMethodManager.java
@@ -19,11 +19,11 @@ import android.view.inputmethod.InputMethodSubtype;
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
import org.dslul.openboard.inputmethod.compat.InputMethodSubtypeCompatUtils;
import org.dslul.openboard.inputmethod.latin.settings.Settings;
-import org.dslul.openboard.inputmethod.latin.settings.SubtypeSettingsKt;
import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils;
import org.dslul.openboard.inputmethod.latin.utils.LanguageOnSpacebarUtils;
import org.dslul.openboard.inputmethod.latin.utils.ScriptUtils;
import org.dslul.openboard.inputmethod.latin.utils.SubtypeLocaleUtils;
+import org.dslul.openboard.inputmethod.latin.utils.SubtypeSettingsKt;
import java.util.Collections;
import java.util.HashMap;
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/UserBinaryDictionary.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/UserBinaryDictionary.java
index 1d1afae15..571123640 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/UserBinaryDictionary.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/UserBinaryDictionary.java
@@ -74,16 +74,6 @@ public class UserBinaryDictionary extends ExpandableBinaryDictionary {
ContentResolver cres = context.getContentResolver();
mObserver = new ContentObserver(null) {
- @Override
- public void onChange(final boolean self) {
- // This hook is deprecated as of API level 16 (Build.VERSION_CODES.JELLY_BEAN),
- // but should still be supported for cases where the IME is running on an older
- // version of the platform.
- onChange(self, null);
- }
- // The following hook is only available as of API level 16
- // (Build.VERSION_CODES.JELLY_BEAN), and as such it will only work on JellyBean+
- // devices. On older versions of the platform, the hook above will be called instead.
@Override
public void onChange(final boolean self, final Uri uri) {
setNeedsToRecreate();
@@ -98,9 +88,7 @@ public class UserBinaryDictionary extends ExpandableBinaryDictionary {
public static UserBinaryDictionary getDictionary(
final Context context, final Locale locale, final File dictFile,
final String dictNamePrefix, @Nullable final String account) {
- return new UserBinaryDictionary(
- context, locale, false /* alsoUseMoreRestrictiveLocales */,
- dictFile, dictNamePrefix + NAME);
+ return new UserBinaryDictionary(context, locale, false, dictFile, dictNamePrefix + NAME);
}
@Override
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/WordListInfo.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/WordListInfo.java
deleted file mode 100644
index fa8752423..000000000
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/WordListInfo.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- * modified
- * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
- */
-
-package org.dslul.openboard.inputmethod.latin;
-
-/**
- * Information container for a word list.
- */
-public final class WordListInfo {
- public final String mId;
- public final String mLocale;
- public final String mRawChecksum;
- public WordListInfo(final String id, final String locale, final String rawChecksum) {
- mId = id;
- mLocale = locale;
- mRawChecksum = rawChecksum;
- }
-}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/define/JniLibName.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/define/JniLibName.kt
deleted file mode 100644
index 214f530ca..000000000
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/define/JniLibName.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- * modified
- * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
- */
-
-package org.dslul.openboard.inputmethod.latin.define
-
-object JniLibName {
- const val JNI_LIB_NAME = "jni_latinime"
- const val JNI_LIB_NAME_GOOGLE = "jni_latinimegoogle"
- const val JNI_LIB_IMPORT_FILE_NAME = "libjni_latinime.so"
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/define/ProductionFlags.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/define/ProductionFlags.kt
index 44e365e36..46dfbf1eb 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/define/ProductionFlags.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/define/ProductionFlags.kt
@@ -16,9 +16,4 @@ object ProductionFlags {
* [org.dslul.openboard.inputmethod.latin.SuggestedWords.mRawSuggestions].
*/
const val INCLUDE_RAW_SUGGESTIONS = false
-
- /**
- * When `false`, the split keyboard is not yet ready to be enabled.
- */
- const val IS_SPLIT_KEYBOARD_SUPPORTED = true
}
\ No newline at end of file
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java
deleted file mode 100644
index c2a971462..000000000
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * modified
- * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
- */
-
-package org.dslul.openboard.inputmethod.latin.settings;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.preference.PreferenceFragment;
-import android.view.inputmethod.InputMethodSubtype;
-
-import androidx.annotation.NonNull;
-
-import org.dslul.openboard.inputmethod.latin.RichInputMethodManager;
-import org.dslul.openboard.inputmethod.latin.RichInputMethodSubtype;
-
-/**
- * Utility class for managing additional features settings.
- */
-@SuppressWarnings("unused")
-public class AdditionalFeaturesSettingUtils {
- public static final int ADDITIONAL_FEATURES_SETTINGS_SIZE = 0;
-
- private AdditionalFeaturesSettingUtils() {
- // This utility class is not publicly instantiable.
- }
-
- public static void addAdditionalFeaturesPreferences(
- final Context context, final PreferenceFragment settingsFragment) {
- // do nothing.
- }
-
- public static void readAdditionalFeaturesPreferencesIntoArray(final Context context,
- final SharedPreferences prefs, final int[] additionalFeaturesPreferences) {
- // do nothing.
- }
-
- @NonNull
- public static RichInputMethodSubtype createRichInputMethodSubtype(
- @NonNull final RichInputMethodManager imm,
- @NonNull final InputMethodSubtype subtype,
- final Context context) {
- return new RichInputMethodSubtype(subtype);
- }
-}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdvancedSettingsFragment.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdvancedSettingsFragment.kt
index 81ac24aaa..b4c037057 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdvancedSettingsFragment.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdvancedSettingsFragment.kt
@@ -25,8 +25,9 @@ import org.dslul.openboard.inputmethod.latin.BuildConfig
import org.dslul.openboard.inputmethod.latin.R
import org.dslul.openboard.inputmethod.latin.SystemBroadcastReceiver
import org.dslul.openboard.inputmethod.latin.common.FileUtils
-import org.dslul.openboard.inputmethod.latin.define.JniLibName
import org.dslul.openboard.inputmethod.latin.settings.SeekBarDialogPreference.ValueProxy
+import org.dslul.openboard.inputmethod.latin.utils.JniUtils
+import org.dslul.openboard.inputmethod.latin.utils.infoDialog
import java.io.File
import java.io.FileInputStream
import java.io.IOException
@@ -118,7 +119,7 @@ class AdvancedSettingsFragment : SubScreenFragment() {
libraryFilePicker.launch(intent)
}
.setNegativeButton(android.R.string.cancel, null)
- libfile = File(requireContext().filesDir.absolutePath + File.separator + JniLibName.JNI_LIB_IMPORT_FILE_NAME)
+ libfile = File(requireContext().filesDir.absolutePath + File.separator + JniUtils.JNI_LIB_IMPORT_FILE_NAME)
if (libfile?.exists() == true) {
builder.setNeutralButton(R.string.load_gesture_library_button_delete) { _, _ ->
libfile?.delete()
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AppearanceSettingsFragment.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AppearanceSettingsFragment.kt
index 12b665248..62c0f6883 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AppearanceSettingsFragment.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AppearanceSettingsFragment.kt
@@ -86,7 +86,7 @@ class AppearanceSettingsFragment : SubScreenFragment() {
val metrics = requireContext().resources.displayMetrics
val widthDp = metrics.widthPixels / metrics.density
val heightDp = metrics.heightPixels / metrics.density
- if (!ProductionFlags.IS_SPLIT_KEYBOARD_SUPPORTED || (min(widthDp, heightDp) < 600 && max(widthDp, heightDp) < 720)) {
+ if ((min(widthDp, heightDp) < 600 && max(widthDp, heightDp) < 720)) {
removePreference(Settings.PREF_ENABLE_SPLIT_KEYBOARD)
removePreference(Settings.PREF_SPLIT_SPACER_SCALE)
}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/DebugSettingsFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/DebugSettingsFragment.java
index 566deb3dd..bddbedb8a 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/DebugSettingsFragment.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/DebugSettingsFragment.java
@@ -25,7 +25,7 @@ import org.dslul.openboard.inputmethod.latin.utils.ApplicationUtils;
/**
* "Debug mode" settings sub screen.
- *
+ *
* This settings sub screen handles a several preference options for debugging.
*/
public final class DebugSettingsFragment extends SubScreenFragment
@@ -73,8 +73,7 @@ public final class DebugSettingsFragment extends SubScreenFragment
@Override
public boolean onPreferenceClick(@NonNull final Preference pref) {
- if (pref instanceof DictDumpPreference) {
- final DictDumpPreference dictDumpPref = (DictDumpPreference)pref;
+ if (pref instanceof final DictDumpPreference dictDumpPref) {
final String dictName = dictDumpPref.mDictName;
final Intent intent = new Intent(
DictionaryDumpBroadcastReceiver.DICTIONARY_DUMP_INTENT_ACTION);
@@ -95,7 +94,7 @@ public final class DebugSettingsFragment extends SubScreenFragment
@Override
public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) {
- if (key.equals(DebugSettings.PREF_DEBUG_MODE) && mDebugMode != null) {
+ if (DebugSettings.PREF_DEBUG_MODE.equals(key) && mDebugMode != null) {
final boolean enabled = prefs.getBoolean(DebugSettings.PREF_DEBUG_MODE, false);
mDebugMode.setChecked(enabled);
findPreference(DebugSettings.PREF_SHOW_SUGGESTION_INFOS).setVisible(enabled);
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/GestureSettingsFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/GestureSettingsFragment.java
index 4c71bbd91..3da9c6680 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/GestureSettingsFragment.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/GestureSettingsFragment.java
@@ -7,14 +7,13 @@
package org.dslul.openboard.inputmethod.latin.settings;
import android.content.SharedPreferences;
-import android.content.res.Resources;
import android.os.Bundle;
import org.dslul.openboard.inputmethod.latin.R;
/**
* "Gesture typing preferences" settings sub screen.
- *
+ *
* This settings sub screen handles the following gesture typing preferences.
* - Enable gesture typing
* - Dynamic floating preview
@@ -36,12 +35,8 @@ public final class GestureSettingsFragment extends SubScreenFragment {
private void refreshSettingsEnablement() {
final SharedPreferences prefs = getSharedPreferences();
- final Resources res = getResources();
- setPreferenceVisible(Settings.PREF_GESTURE_PREVIEW_TRAIL,
- Settings.readGestureInputEnabled(prefs));
- setPreferenceVisible(Settings.PREF_GESTURE_FLOATING_PREVIEW_TEXT,
- Settings.readGestureInputEnabled(prefs));
- setPreferenceVisible(Settings.PREF_GESTURE_SPACE_AWARE,
- Settings.readGestureInputEnabled(prefs));
+ setPreferenceVisible(Settings.PREF_GESTURE_PREVIEW_TRAIL, Settings.readGestureInputEnabled(prefs));
+ setPreferenceVisible(Settings.PREF_GESTURE_FLOATING_PREVIEW_TEXT, Settings.readGestureInputEnabled(prefs));
+ setPreferenceVisible(Settings.PREF_GESTURE_SPACE_AWARE, Settings.readGestureInputEnabled(prefs));
}
}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageFilterList.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageFilterList.kt
index fa43ad3b6..d3ab04712 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageFilterList.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageFilterList.kt
@@ -23,6 +23,10 @@ import org.dslul.openboard.inputmethod.latin.R
import org.dslul.openboard.inputmethod.latin.common.LocaleUtils
import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils
import org.dslul.openboard.inputmethod.latin.utils.SubtypeLocaleUtils
+import org.dslul.openboard.inputmethod.latin.utils.addEnabledSubtype
+import org.dslul.openboard.inputmethod.latin.utils.isAdditionalSubtype
+import org.dslul.openboard.inputmethod.latin.utils.locale
+import org.dslul.openboard.inputmethod.latin.utils.removeEnabledSubtype
import org.dslul.openboard.inputmethod.latin.utils.showMissingDictionaryDialog
import org.dslul.openboard.inputmethod.latin.utils.toLocale
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageSettingsDialog.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageSettingsDialog.kt
index 58106408e..2e6981ccd 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageSettingsDialog.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageSettingsDialog.kt
@@ -4,12 +4,11 @@ package org.dslul.openboard.inputmethod.latin.settings
import android.content.Context
import android.content.Intent
import android.net.Uri
-import android.text.InputType
+import android.os.Build
import android.text.method.LinkMovementMethod
import android.util.TypedValue
import android.view.LayoutInflater
import android.view.View
-import android.widget.EditText
import android.widget.ImageView
import android.widget.ScrollView
import android.widget.TextView
@@ -19,7 +18,6 @@ import androidx.core.view.get
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.core.view.size
-import androidx.core.widget.doAfterTextChanged
import org.dslul.openboard.inputmethod.dictionarypack.DictionaryPackConstants
import org.dslul.openboard.inputmethod.keyboard.KeyboardLayoutSet
import org.dslul.openboard.inputmethod.keyboard.KeyboardSwitcher
@@ -45,7 +43,7 @@ class LanguageSettingsDialog(
private val mainLocaleString = infos.first().subtype.locale()
private val mainLocale = mainLocaleString.toLocale()
private var hasInternalDictForLanguage = false
- private lateinit var userDicts: MutableSet
+ private val userDicts = mutableSetOf()
init {
setTitle(infos.first().displayName)
@@ -282,9 +280,9 @@ class LanguageSettingsDialog(
dialog.show()
(dialog.findViewById(android.R.id.message) as? TextView)?.movementMethod = LinkMovementMethod.getInstance()
}
- val (_userDicts, _hasInternalDictForLanguage) = getUserAndInternalDictionaries(context, mainLocaleString)
- userDicts = _userDicts.toMutableSet()
- hasInternalDictForLanguage = _hasInternalDictForLanguage
+ val userDictsAndHasInternal = getUserAndInternalDictionaries(context, mainLocaleString)
+ hasInternalDictForLanguage = userDictsAndHasInternal.second
+ userDicts.addAll(userDictsAndHasInternal.first)
if (hasInternalDictForLanguage) {
binding.dictionaries.addView(TextView(context, null, R.style.PreferenceCategoryTitleText).apply {
setText(R.string.internal_dictionary_summary)
@@ -332,8 +330,13 @@ class LanguageSettingsDialog(
}
rowBinding.languageText.setOnClickListener {
if (header == null) return@setOnClickListener
+ val locale = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ context.resources.configuration.locales[0]
+ } else {
+ @Suppress("Deprecation") context.resources.configuration.locale
+ }
Builder(context)
- .setMessage(header.info(context.resources.configuration.locale))
+ .setMessage(header.info(locale))
.setPositiveButton(android.R.string.ok, null)
.show()
}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageSettingsFragment.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageSettingsFragment.kt
index 1000a8e04..c10775c2f 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageSettingsFragment.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/LanguageSettingsFragment.kt
@@ -22,7 +22,11 @@ import org.dslul.openboard.inputmethod.latin.common.LocaleUtils
import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils
import org.dslul.openboard.inputmethod.latin.utils.DictionaryInfoUtils
import org.dslul.openboard.inputmethod.latin.utils.SubtypeLocaleUtils
+import org.dslul.openboard.inputmethod.latin.utils.getAllAvailableSubtypes
import org.dslul.openboard.inputmethod.latin.utils.getDictionaryLocales
+import org.dslul.openboard.inputmethod.latin.utils.getEnabledSubtypes
+import org.dslul.openboard.inputmethod.latin.utils.getSystemLocales
+import org.dslul.openboard.inputmethod.latin.utils.locale
import java.util.*
// not a SettingsFragment, because with androidx.preferences it's very complicated or
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/PreferencesSettingsFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/PreferencesSettingsFragment.java
index 7b9bbef69..249de528c 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/PreferencesSettingsFragment.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/PreferencesSettingsFragment.java
@@ -25,6 +25,7 @@ import org.dslul.openboard.inputmethod.latin.AudioAndHapticFeedbackManager;
import org.dslul.openboard.inputmethod.latin.R;
import org.dslul.openboard.inputmethod.latin.RichInputMethodManager;
import org.dslul.openboard.inputmethod.latin.utils.MoreKeysUtilsKt;
+import org.dslul.openboard.inputmethod.latin.utils.SubtypeSettingsKt;
import org.dslul.openboard.inputmethod.latin.utils.ToolbarUtilsKt;
import kotlin.collections.ArraysKt;
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java
index ae8758aef..b733091db 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java
@@ -37,6 +37,7 @@ import org.dslul.openboard.inputmethod.latin.utils.JniUtils;
import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils;
import org.dslul.openboard.inputmethod.latin.utils.RunInLocale;
import org.dslul.openboard.inputmethod.latin.utils.StatsUtils;
+import org.dslul.openboard.inputmethod.latin.utils.SubtypeSettingsKt;
import org.dslul.openboard.inputmethod.latin.utils.ToolbarKey;
import org.dslul.openboard.inputmethod.latin.utils.ToolbarUtilsKt;
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsActivity.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsActivity.java
index a4f89de05..cdbc05522 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsActivity.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsActivity.java
@@ -15,6 +15,7 @@ import android.os.Bundle;
import org.dslul.openboard.inputmethod.latin.permissions.PermissionsManager;
import org.dslul.openboard.inputmethod.latin.utils.NewDictionaryAdder;
+import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
@@ -24,12 +25,7 @@ public final class SettingsActivity extends AppCompatActivity
private static final String DEFAULT_FRAGMENT = SettingsFragment.class.getName();
public static final String EXTRA_ENTRY_KEY = "entry";
- public static final String EXTRA_ENTRY_VALUE_LONG_PRESS_COMMA = "long_press_comma";
public static final String EXTRA_ENTRY_VALUE_APP_ICON = "app_icon";
- public static final String EXTRA_ENTRY_VALUE_NOTICE_DIALOG = "important_notice";
- public static final String EXTRA_ENTRY_VALUE_SYSTEM_SETTINGS = "system_settings";
-
- private boolean mShowHomeAsUp;
@Override
protected void onCreate(final Bundle savedState) {
@@ -68,7 +64,7 @@ public final class SettingsActivity extends AppCompatActivity
}
@Override
- public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
PermissionsManager.get(this).onRequestPermissionsResult(requestCode, permissions, grantResults);
}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsFragment.java
index ed83222eb..3469daec9 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsFragment.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsFragment.java
@@ -12,14 +12,10 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings.Secure;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
import android.view.inputmethod.InputMethodSubtype;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
@@ -36,8 +32,8 @@ import org.dslul.openboard.inputmethod.latin.utils.ApplicationUtils;
import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils;
import org.dslul.openboard.inputmethod.latin.utils.DictionaryUtilsKt;
import org.dslul.openboard.inputmethod.latin.utils.ExecutorUtils;
-import org.dslul.openboard.inputmethod.latin.utils.FeedbackUtils;
import org.dslul.openboard.inputmethod.latin.utils.JniUtils;
+import org.dslul.openboard.inputmethod.latin.utils.SubtypeSettingsKt;
import java.util.List;
import java.io.BufferedOutputStream;
@@ -50,13 +46,6 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public final class SettingsFragment extends PreferenceFragmentCompat {
- // We don't care about menu grouping.
- private static final int NO_MENU_GROUP = Menu.NONE;
- // The first menu item id and order.
- private static final int MENU_ABOUT = Menu.FIRST;
- // The second menu item id and order.
- private static final int MENU_HELP_AND_FEEDBACK = Menu.FIRST + 1;
- // for storing crash report files, so onActivityResult can actually use them
private final ArrayList crashReportFiles = new ArrayList<>();
@Override
@@ -100,41 +89,6 @@ public final class SettingsFragment extends PreferenceFragmentCompat {
askAboutCrashReports();
}
- @Override
- public void onCreateOptionsMenu(@NonNull final Menu menu, @NonNull final MenuInflater inflater) {
- if (FeedbackUtils.isHelpAndFeedbackFormSupported()) {
- menu.add(NO_MENU_GROUP, MENU_HELP_AND_FEEDBACK /* itemId */,
- MENU_HELP_AND_FEEDBACK /* order */, R.string.help_and_feedback);
- }
- final int aboutResId = FeedbackUtils.getAboutKeyboardTitleResId();
- if (aboutResId != 0) {
- menu.add(NO_MENU_GROUP, MENU_ABOUT /* itemId */, MENU_ABOUT /* order */, aboutResId);
- }
- }
-
- @Override
- public boolean onOptionsItemSelected(@NonNull final MenuItem item) {
- final Activity activity = getActivity();
- if (!isUserSetupComplete(activity)) {
- // If setup is not complete, it's not safe to launch Help or other activities
- // because they might go to the Play Store. See b/19866981.
- return true;
- }
- final int itemId = item.getItemId();
- if (itemId == MENU_HELP_AND_FEEDBACK) {
- FeedbackUtils.showHelpAndFeedbackForm(activity);
- return true;
- }
- if (itemId == MENU_ABOUT) {
- final Intent aboutIntent = FeedbackUtils.getAboutKeyboardIntent(activity);
- if (aboutIntent != null) {
- startActivity(aboutIntent);
- return true;
- }
- }
- return super.onOptionsItemSelected(item);
- }
-
private static boolean isUserSetupComplete(final Activity activity) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
return true;
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java
index 9466a413a..5dfb37b5b 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java
@@ -28,6 +28,7 @@ import org.dslul.openboard.inputmethod.latin.spellcheck.AndroidSpellCheckerServi
import org.dslul.openboard.inputmethod.latin.utils.AsyncResultHolder;
import org.dslul.openboard.inputmethod.latin.utils.MoreKeysUtilsKt;
import org.dslul.openboard.inputmethod.latin.utils.ScriptUtils;
+import org.dslul.openboard.inputmethod.latin.utils.SubtypeSettingsKt;
import org.dslul.openboard.inputmethod.latin.utils.TargetPackageInfoGetterTask;
import java.util.Arrays;
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SpacingAndPunctuations.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SpacingAndPunctuations.java
index dc0781962..7b3534c1e 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SpacingAndPunctuations.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SpacingAndPunctuations.java
@@ -8,7 +8,6 @@ package org.dslul.openboard.inputmethod.latin.settings;
import android.content.res.Resources;
-import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
import org.dslul.openboard.inputmethod.keyboard.internal.MoreKeySpec;
import org.dslul.openboard.inputmethod.latin.PunctuationSuggestions;
import org.dslul.openboard.inputmethod.latin.R;
@@ -61,25 +60,6 @@ public final class SpacingAndPunctuations {
mSuggestPuncList = PunctuationSuggestions.newPunctuationSuggestions(suggestPuncsSpec);
}
- @UsedForTesting
- public SpacingAndPunctuations(final SpacingAndPunctuations model,
- final int[] overrideSortedWordSeparators) {
- mSortedSymbolsPrecededBySpace = model.mSortedSymbolsPrecededBySpace;
- mSortedSymbolsFollowedBySpace = model.mSortedSymbolsFollowedBySpace;
- mSortedSymbolsClusteringTogether = model.mSortedSymbolsClusteringTogether;
- mSortedWordConnectors = model.mSortedWordConnectors;
- mSortedSometimesWordConnectors = model.mSortedSometimesWordConnectors;
- mSortedWordSeparators = overrideSortedWordSeparators;
- mSortedSentenceTerminators = model.mSortedSentenceTerminators;
- mSuggestPuncList = model.mSuggestPuncList;
- mSentenceSeparator = model.mSentenceSeparator;
- mAbbreviationMarker = model.mAbbreviationMarker;
- mSentenceSeparatorAndSpace = model.mSentenceSeparatorAndSpace;
- mCurrentLanguageHasSpaces = model.mCurrentLanguageHasSpaces;
- mUsesAmericanTypography = model.mUsesAmericanTypography;
- mUsesGermanRules = model.mUsesGermanRules;
- }
-
public boolean isWordSeparator(final int code) {
return Arrays.binarySearch(mSortedWordSeparators, code) >= 0;
}
@@ -130,27 +110,25 @@ public final class SpacingAndPunctuations {
}
public String dump() {
- final StringBuilder sb = new StringBuilder();
- sb.append("mSortedSymbolsPrecededBySpace = ");
- sb.append("" + Arrays.toString(mSortedSymbolsPrecededBySpace));
- sb.append("\n mSortedSymbolsFollowedBySpace = ");
- sb.append("" + Arrays.toString(mSortedSymbolsFollowedBySpace));
- sb.append("\n mSortedWordConnectors = ");
- sb.append("" + Arrays.toString(mSortedWordConnectors));
- sb.append("\n mSortedWordSeparators = ");
- sb.append("" + Arrays.toString(mSortedWordSeparators));
- sb.append("\n mSuggestPuncList = ");
- sb.append("" + mSuggestPuncList);
- sb.append("\n mSentenceSeparator = ");
- sb.append("" + mSentenceSeparator);
- sb.append("\n mSentenceSeparatorAndSpace = ");
- sb.append("" + mSentenceSeparatorAndSpace);
- sb.append("\n mCurrentLanguageHasSpaces = ");
- sb.append("" + mCurrentLanguageHasSpaces);
- sb.append("\n mUsesAmericanTypography = ");
- sb.append("" + mUsesAmericanTypography);
- sb.append("\n mUsesGermanRules = ");
- sb.append("" + mUsesGermanRules);
- return sb.toString();
+ return "mSortedSymbolsPrecededBySpace = " +
+ "" + Arrays.toString(mSortedSymbolsPrecededBySpace) +
+ "\n mSortedSymbolsFollowedBySpace = " +
+ "" + Arrays.toString(mSortedSymbolsFollowedBySpace) +
+ "\n mSortedWordConnectors = " +
+ "" + Arrays.toString(mSortedWordConnectors) +
+ "\n mSortedWordSeparators = " +
+ "" + Arrays.toString(mSortedWordSeparators) +
+ "\n mSuggestPuncList = " +
+ "" + mSuggestPuncList +
+ "\n mSentenceSeparator = " +
+ "" + mSentenceSeparator +
+ "\n mSentenceSeparatorAndSpace = " +
+ "" + mSentenceSeparatorAndSpace +
+ "\n mCurrentLanguageHasSpaces = " +
+ "" + mCurrentLanguageHasSpaces +
+ "\n mUsesAmericanTypography = " +
+ "" + mUsesAmericanTypography +
+ "\n mUsesGermanRules = " +
+ "" + mUsesGermanRules;
}
}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SubScreenFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SubScreenFragment.java
index 2fa0f543f..4a311596d 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SubScreenFragment.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SubScreenFragment.java
@@ -11,14 +11,12 @@ import android.app.backup.BackupManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
-import android.content.res.Resources;
import android.os.Build;
import android.os.Bundle;
import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceFragmentCompat;
@@ -53,19 +51,6 @@ public abstract class SubScreenFragment extends PreferenceFragmentCompat
}
}
- static void updateListPreferenceSummaryToCurrentValue(final String prefKey,
- final PreferenceScreen screen) {
- // Because the "%s" summary trick of {@link ListPreference} doesn't work properly before
- // KitKat, we need to update the summary programmatically.
- final ListPreference listPreference = (ListPreference)screen.findPreference(prefKey);
- if (listPreference == null) {
- return;
- }
- final CharSequence[] entries = listPreference.getEntries();
- final int entryIndex = listPreference.findIndexOfValue(listPreference.getValue());
- listPreference.setSummary(entryIndex < 0 ? null : entries[entryIndex]);
- }
-
final void setPreferenceVisible(final String prefKey, final boolean visible) {
setPreferenceVisible(prefKey, visible, getPreferenceScreen());
}
@@ -74,24 +59,10 @@ public abstract class SubScreenFragment extends PreferenceFragmentCompat
removePreference(prefKey, getPreferenceScreen());
}
- final void updateListPreferenceSummaryToCurrentValue(final String prefKey) {
- updateListPreferenceSummaryToCurrentValue(prefKey, getPreferenceScreen());
- }
-
final SharedPreferences getSharedPreferences() {
return getPreferenceManager().getSharedPreferences();
}
- /**
- * Gets the application name to display on the UI.
- */
- final String getApplicationName() {
- final Context context = getActivity();
- final Resources res = getResources();
- final int applicationLabelRes = context.getApplicationInfo().labelRes;
- return res.getString(applicationLabelRes);
- }
-
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String s) {
// this must be overridden, but is useless, because it's called during onCreate
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/TestFragmentActivity.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/TestFragmentActivity.java
deleted file mode 100644
index e5cc326c0..000000000
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/TestFragmentActivity.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * modified
- * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
- */
-
-package org.dslul.openboard.inputmethod.latin.settings;
-
-import android.app.Activity;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.content.Intent;
-import android.os.Bundle;
-
-/**
- * Test activity to use when testing preference fragments.
- * Usage:
- * Create an ActivityInstrumentationTestCase2 for this activity
- * and call setIntent() with an intent that specifies the fragment to load in the activity.
- * The fragment can then be obtained from this activity and used for testing/verification.
- */
-public final class TestFragmentActivity extends Activity {
- /**
- * The fragment name that should be loaded when starting this activity.
- * This must be specified when starting this activity, as this activity is only
- * meant to test fragments from instrumentation tests.
- */
- public static final String EXTRA_SHOW_FRAGMENT = "show_fragment";
-
- public Fragment mFragment;
-
- @Override
- protected void onCreate(final Bundle savedState) {
- super.onCreate(savedState);
- final Intent intent = getIntent();
- final String fragmentName = intent.getStringExtra(EXTRA_SHOW_FRAGMENT);
- if (fragmentName == null) {
- throw new IllegalArgumentException("No fragment name specified for testing");
- }
-
- mFragment = Fragment.instantiate(this, fragmentName);
- FragmentManager fragmentManager = getFragmentManager();
- fragmentManager.beginTransaction().add(mFragment, fragmentName).commit();
- }
-}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
index 84db0c81d..0fb2ecc37 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
@@ -30,10 +30,10 @@ import org.dslul.openboard.inputmethod.latin.common.StringUtils;
import org.dslul.openboard.inputmethod.latin.define.DebugFlags;
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
-import org.dslul.openboard.inputmethod.latin.settings.SubtypeSettingsKt;
import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils;
import org.dslul.openboard.inputmethod.latin.utils.ScriptUtils;
import org.dslul.openboard.inputmethod.latin.utils.StatsUtils;
+import org.dslul.openboard.inputmethod.latin.utils.SubtypeSettingsKt;
import org.dslul.openboard.inputmethod.latin.utils.SuggestionResults;
import java.util.ArrayList;
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java
index 6e2103a8a..bacf6d54d 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java
@@ -58,7 +58,7 @@ import org.dslul.openboard.inputmethod.latin.settings.Settings;
import org.dslul.openboard.inputmethod.latin.settings.SettingsValues;
import org.dslul.openboard.inputmethod.latin.suggestions.MoreSuggestionsView.MoreSuggestionsListener;
import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils;
-import org.dslul.openboard.inputmethod.latin.utils.DialogUtils;
+import org.dslul.openboard.inputmethod.latin.utils.DialogUtilsKt;
import org.dslul.openboard.inputmethod.latin.utils.ToolbarKey;
import org.dslul.openboard.inputmethod.latin.utils.ToolbarUtilsKt;
@@ -439,7 +439,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
// apparently toast is not working on some Android versions, probably
// Android 13 with the notification permission
// Toast.makeText(getContext(), text, Toast.LENGTH_LONG).show();
- final PopupMenu uglyWorkaround = new PopupMenu(DialogUtils.getPlatformDialogThemeContext(getContext()), wordView);
+ final PopupMenu uglyWorkaround = new PopupMenu(DialogUtilsKt.getPlatformDialogThemeContext(getContext()), wordView);
uglyWorkaround.getMenu().add(Menu.NONE, 1, Menu.NONE, text);
uglyWorkaround.show();
}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/CustomLayoutUtils.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/CustomLayoutUtils.kt
index 6a8960029..5a1faa255 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/CustomLayoutUtils.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/CustomLayoutUtils.kt
@@ -18,7 +18,6 @@ import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.MORE_KE
import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.SimpleKeyboardParser
import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.addLocaleKeyTextsToParams
import org.dslul.openboard.inputmethod.latin.R
-import org.dslul.openboard.inputmethod.latin.settings.infoDialog
import java.io.File
import java.io.IOException
import java.math.BigInteger
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DebugLogUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DebugLogUtils.java
index 64f6fc5d5..ee1ece9d0 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DebugLogUtils.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DebugLogUtils.java
@@ -6,26 +6,10 @@
package org.dslul.openboard.inputmethod.latin.utils;
-import org.dslul.openboard.inputmethod.latin.utils.Log;
-
-import org.dslul.openboard.inputmethod.latin.define.DebugFlags;
-
/**
* A class for logging and debugging utility methods.
*/
public final class DebugLogUtils {
- private final static String TAG = DebugLogUtils.class.getSimpleName();
- private final static boolean sDBG = DebugFlags.DEBUG_ENABLED;
-
- /**
- * Calls .toString() on its non-null argument or returns "null"
- * @param o the object to convert to a string
- * @return the result of .toString() or null
- */
- public static String s(final Object o) {
- return null == o ? "null" : o.toString();
- }
-
/**
* Get the string representation of the current stack trace, for debugging purposes.
* @return a readable, carriage-return-separated string for the current stack trace.
@@ -47,7 +31,7 @@ public final class DebugLogUtils {
final StackTraceElement[] frames = e.getStackTrace();
// Start at 1 because the first frame is here and we don't care about it
for (int j = 1; j < frames.length && j < limit + 1; ++j) {
- sb.append(frames[j].toString() + "\n");
+ sb.append(frames[j].toString()).append("\n");
}
}
return sb.toString();
@@ -66,40 +50,4 @@ public final class DebugLogUtils {
}
return sb.toString();
}
-
- /**
- * Helper log method to ease null-checks and adding spaces.
- *
- * This sends all arguments to the log, separated by spaces. Any null argument is converted
- * to the "null" string. It uses a very visible tag and log level for debugging purposes.
- *
- * @param args the stuff to send to the log
- */
- public static void l(final Object... args) {
- if (!sDBG) return;
- final StringBuilder sb = new StringBuilder();
- for (final Object o : args) {
- sb.append(s(o));
- sb.append(" ");
- }
- Log.e(TAG, sb.toString());
- }
-
- /**
- * Helper log method to put stuff in red.
- *
- * This does the same as #l but prints in red
- *
- * @param args the stuff to send to the log
- */
- public static void r(final Object... args) {
- if (!sDBG) return;
- final StringBuilder sb = new StringBuilder("\u001B[31m");
- for (final Object o : args) {
- sb.append(s(o));
- sb.append(" ");
- }
- sb.append("\u001B[0m");
- Log.e(TAG, sb.toString());
- }
}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DialogUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DialogUtils.java
deleted file mode 100644
index 4560ead8a..000000000
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DialogUtils.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * modified
- * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
- */
-
-package org.dslul.openboard.inputmethod.latin.utils;
-
-import android.content.Context;
-import android.view.ContextThemeWrapper;
-
-import org.dslul.openboard.inputmethod.latin.R;
-
-public final class DialogUtils {
- private DialogUtils() {
- // This utility class is not publicly instantiable.
- }
-
- // this is necessary for dialogs and popup menus created outside an activity
- public static Context getPlatformDialogThemeContext(final Context context) {
- // Because {@link AlertDialog.Builder.create()} doesn't honor the specified theme with
- // createThemeContextWrapper=false, the result dialog box has unneeded paddings around it.
- return new ContextThemeWrapper(context, R.style.platformActivityTheme);
- }
-}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Utils.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DialogUtils.kt
similarity index 61%
rename from app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Utils.kt
rename to app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DialogUtils.kt
index acced73d4..cae96f777 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Utils.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DialogUtils.kt
@@ -1,9 +1,15 @@
-package org.dslul.openboard.inputmethod.latin.settings
+package org.dslul.openboard.inputmethod.latin.utils
import android.content.Context
import androidx.appcompat.app.AlertDialog
+import androidx.appcompat.view.ContextThemeWrapper
+import org.dslul.openboard.inputmethod.latin.R
-// maybe rather put to DialogUtils (and convert that to kotlin)
+fun getPlatformDialogThemeContext(context: Context): Context {
+ // Because {@link AlertDialog.Builder.create()} doesn't honor the specified theme with
+ // createThemeContextWrapper=false, the result dialog box has unneeded paddings around it.
+ return ContextThemeWrapper(context, R.style.platformActivityTheme)
+}
fun confirmDialog(context: Context, message: String, confirmButton: String, onConfirmed: (() -> Unit)) {
AlertDialog.Builder(context)
@@ -19,6 +25,7 @@ fun infoDialog(context: Context, messageId: Int) {
.setNegativeButton(android.R.string.ok, null)
.show()
}
+
fun infoDialog(context: Context, message: String) {
AlertDialog.Builder(context)
.setMessage(message)
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DictionaryUtils.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DictionaryUtils.kt
index dddb00e8d..60a1c3fe1 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DictionaryUtils.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DictionaryUtils.kt
@@ -11,8 +11,6 @@ import androidx.core.content.edit
import org.dslul.openboard.inputmethod.latin.BinaryDictionaryGetter
import org.dslul.openboard.inputmethod.latin.R
import org.dslul.openboard.inputmethod.latin.settings.Settings
-import org.dslul.openboard.inputmethod.latin.settings.getEnabledSubtypes
-import org.dslul.openboard.inputmethod.latin.settings.locale
import java.io.File
import java.util.*
import kotlin.collections.HashSet
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/FeedbackUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/FeedbackUtils.java
deleted file mode 100644
index f6d9f5c86..000000000
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/FeedbackUtils.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * modified
- * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
- */
-
-package org.dslul.openboard.inputmethod.latin.utils;
-
-import android.content.Context;
-import android.content.Intent;
-
-@SuppressWarnings("unused")
-public class FeedbackUtils {
- public static boolean isHelpAndFeedbackFormSupported() {
- return false;
- }
-
- public static void showHelpAndFeedbackForm(Context context) {
- }
-
- public static int getAboutKeyboardTitleResId() {
- return 0;
- }
-
- public static Intent getAboutKeyboardIntent(Context context) {
- return null;
- }
-}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/FragmentUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/FragmentUtils.java
deleted file mode 100644
index e8b0fa91c..000000000
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/FragmentUtils.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * modified
- * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
- */
-
-package org.dslul.openboard.inputmethod.latin.utils;
-
-import org.dslul.openboard.inputmethod.latin.settings.AdvancedSettingsFragment;
-import org.dslul.openboard.inputmethod.latin.settings.AppearanceSettingsFragment;
-import org.dslul.openboard.inputmethod.latin.settings.CorrectionSettingsFragment;
-import org.dslul.openboard.inputmethod.latin.settings.DebugSettingsFragment;
-import org.dslul.openboard.inputmethod.latin.settings.GestureSettingsFragment;
-import org.dslul.openboard.inputmethod.latin.settings.LanguageSettingsFragment;
-import org.dslul.openboard.inputmethod.latin.settings.PreferencesSettingsFragment;
-import org.dslul.openboard.inputmethod.latin.settings.SettingsFragment;
-import org.dslul.openboard.inputmethod.latin.settings.AboutFragment;
-import org.dslul.openboard.inputmethod.latin.spellcheck.SpellCheckerSettingsFragment;
-import org.dslul.openboard.inputmethod.latin.userdictionary.UserDictionaryAddWordFragment;
-import org.dslul.openboard.inputmethod.latin.userdictionary.UserDictionaryList;
-import org.dslul.openboard.inputmethod.latin.userdictionary.UserDictionaryLocalePicker;
-import org.dslul.openboard.inputmethod.latin.userdictionary.UserDictionarySettings;
-
-import java.util.HashSet;
-
-public class FragmentUtils {
- private static final HashSet sLatinImeFragments = new HashSet<>();
- static {
- sLatinImeFragments.add(PreferencesSettingsFragment.class.getName());
- sLatinImeFragments.add(AppearanceSettingsFragment.class.getName());
- sLatinImeFragments.add(GestureSettingsFragment.class.getName());
- sLatinImeFragments.add(CorrectionSettingsFragment.class.getName());
- sLatinImeFragments.add(AdvancedSettingsFragment.class.getName());
- sLatinImeFragments.add(DebugSettingsFragment.class.getName());
- sLatinImeFragments.add(SettingsFragment.class.getName());
- sLatinImeFragments.add(AboutFragment.class.getName());
- sLatinImeFragments.add(SpellCheckerSettingsFragment.class.getName());
- sLatinImeFragments.add(UserDictionaryAddWordFragment.class.getName());
- sLatinImeFragments.add(UserDictionaryList.class.getName());
- sLatinImeFragments.add(UserDictionaryLocalePicker.class.getName());
- sLatinImeFragments.add(UserDictionarySettings.class.getName());
- sLatinImeFragments.add(LanguageSettingsFragment.class.getName());
- }
-
- public static boolean isValidFragment(String fragmentName) {
- return sLatinImeFragments.contains(fragmentName);
- }
-}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InputMethodPicker.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InputMethodPicker.kt
index f1266bc88..080af3d47 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InputMethodPicker.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InputMethodPicker.kt
@@ -58,7 +58,7 @@ fun createInputMethodPickerDialog(latinIme: LatinIME, richImm: RichInputMethodMa
items.add(SpannableStringBuilder().append(title).append(subtitle))
}
- val dialog = AlertDialog.Builder(DialogUtils.getPlatformDialogThemeContext(latinIme))
+ val dialog = AlertDialog.Builder(getPlatformDialogThemeContext(latinIme))
.setTitle(R.string.select_input_method)
.setSingleChoiceItems(items.toTypedArray(), currentSubtypeIndex) { di, i ->
di.dismiss()
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/JniUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/JniUtils.java
index 75f189f11..f976f8b18 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/JniUtils.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/JniUtils.java
@@ -7,14 +7,16 @@
package org.dslul.openboard.inputmethod.latin.utils;
import android.app.Application;
-import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.latin.BuildConfig;
-import org.dslul.openboard.inputmethod.latin.define.JniLibName;
import java.io.File;
public final class JniUtils {
private static final String TAG = JniUtils.class.getSimpleName();
+ public static final String JNI_LIB_NAME = "jni_latinime";
+ public static final String JNI_LIB_NAME_GOOGLE = "jni_latinimegoogle";
+ public static final String JNI_LIB_IMPORT_FILE_NAME = "libjni_latinime.so";
+
public static boolean sHaveGestureLib = false;
static {
@@ -28,10 +30,10 @@ public final class JniUtils {
// fall back to hardcoded default path, may not work on all phones
filesDir = "/data/data/" + BuildConfig.APPLICATION_ID + "/files";
}
- final File userSuppliedLibrary = new File(filesDir + File.separator + JniLibName.JNI_LIB_IMPORT_FILE_NAME);
+ final File userSuppliedLibrary = new File(filesDir + File.separator + JNI_LIB_IMPORT_FILE_NAME);
if (userSuppliedLibrary.exists()) {
try {
- System.load(filesDir + File.separator + JniLibName.JNI_LIB_IMPORT_FILE_NAME);
+ System.load(filesDir + File.separator + JNI_LIB_IMPORT_FILE_NAME);
sHaveGestureLib = true; // this is an assumption, any way to actually check?
} catch (Throwable t) { // catch everything, maybe provided library simply doesn't work
Log.w(TAG, "Could not load user-supplied library", t);
@@ -41,18 +43,18 @@ public final class JniUtils {
if (!sHaveGestureLib) {
// try loading google library, will fail unless it's in system and this is a system app
try {
- System.loadLibrary(JniLibName.JNI_LIB_NAME_GOOGLE);
+ System.loadLibrary(JNI_LIB_NAME_GOOGLE);
sHaveGestureLib = true;
} catch (UnsatisfiedLinkError ul) {
- Log.w(TAG, "Could not load system glide typing library " + JniLibName.JNI_LIB_NAME_GOOGLE, ul);
+ Log.w(TAG, "Could not load system glide typing library " + JNI_LIB_NAME_GOOGLE, ul);
}
}
if (!sHaveGestureLib) {
// try loading built-in library
try {
- System.loadLibrary(JniLibName.JNI_LIB_NAME);
+ System.loadLibrary(JNI_LIB_NAME);
} catch (UnsatisfiedLinkError ul) {
- Log.w(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME, ul);
+ Log.w(TAG, "Could not load native library " + JNI_LIB_NAME, ul);
}
}
}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SubtypeSettings.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/SubtypeSettings.kt
similarity index 96%
rename from app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SubtypeSettings.kt
rename to app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/SubtypeSettings.kt
index 15b59f226..53bb68f2b 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SubtypeSettings.kt
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/SubtypeSettings.kt
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
-package org.dslul.openboard.inputmethod.latin.settings
+package org.dslul.openboard.inputmethod.latin.utils
import android.content.Context
import android.content.SharedPreferences
@@ -11,15 +11,10 @@ import android.widget.Toast
import androidx.core.app.LocaleManagerCompat
import androidx.core.content.edit
import org.dslul.openboard.inputmethod.keyboard.KeyboardSwitcher
-import org.dslul.openboard.inputmethod.latin.BuildConfig
import org.dslul.openboard.inputmethod.latin.R
import org.dslul.openboard.inputmethod.latin.RichInputMethodManager
import org.dslul.openboard.inputmethod.latin.define.DebugFlags
-import org.dslul.openboard.inputmethod.latin.utils.AdditionalSubtypeUtils
-import org.dslul.openboard.inputmethod.latin.utils.CUSTOM_LAYOUT_PREFIX
-import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils
-import org.dslul.openboard.inputmethod.latin.utils.Log
-import org.dslul.openboard.inputmethod.latin.utils.SubtypeLocaleUtils
+import org.dslul.openboard.inputmethod.latin.settings.Settings
import org.xmlpull.v1.XmlPullParser
import java.io.File
import java.util.*
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ViewLayoutUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ViewLayoutUtils.java
index 4aedf36d2..e96cfa629 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ViewLayoutUtils.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ViewLayoutUtils.java
@@ -37,8 +37,7 @@ public final class ViewLayoutUtils {
public static void placeViewAt(final View view, final int x, final int y, final int w,
final int h) {
final ViewGroup.LayoutParams lp = view.getLayoutParams();
- if (lp instanceof MarginLayoutParams) {
- final MarginLayoutParams marginLayoutParams = (MarginLayoutParams)lp;
+ if (lp instanceof final MarginLayoutParams marginLayoutParams) {
marginLayoutParams.width = w;
marginLayoutParams.height = h;
marginLayoutParams.setMargins(x, y, 0, 0);
@@ -63,14 +62,12 @@ public final class ViewLayoutUtils {
public static void updateLayoutGravityOf(final View view, final int layoutGravity) {
final ViewGroup.LayoutParams lp = view.getLayoutParams();
- if (lp instanceof LinearLayout.LayoutParams) {
- final LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)lp;
+ if (lp instanceof final LinearLayout.LayoutParams params) {
if (params.gravity != layoutGravity) {
params.gravity = layoutGravity;
view.setLayoutParams(params);
}
- } else if (lp instanceof FrameLayout.LayoutParams) {
- final FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)lp;
+ } else if (lp instanceof final FrameLayout.LayoutParams params) {
if (params.gravity != layoutGravity) {
params.gravity = layoutGravity;
view.setLayoutParams(params);
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/XmlParseUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/XmlParseUtils.java
index f5916b688..8c90c52a1 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/XmlParseUtils.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/XmlParseUtils.java
@@ -18,36 +18,24 @@ public final class XmlParseUtils {
// This utility class is not publicly instantiable.
}
- @SuppressWarnings("serial")
public static class ParseException extends XmlPullParserException {
public ParseException(final String msg, final XmlPullParser parser) {
super(msg + " at " + parser.getPositionDescription());
}
}
- @SuppressWarnings("serial")
public static final class IllegalStartTag extends ParseException {
public IllegalStartTag(final XmlPullParser parser, final String tag, final String parent) {
super("Illegal start tag " + tag + " in " + parent, parser);
}
}
- @SuppressWarnings("serial")
public static final class IllegalEndTag extends ParseException {
public IllegalEndTag(final XmlPullParser parser, final String tag, final String parent) {
super("Illegal end tag " + tag + " in " + parent, parser);
}
}
- @SuppressWarnings("serial")
- public static final class IllegalAttribute extends ParseException {
- public IllegalAttribute(final XmlPullParser parser, final String tag,
- final String attribute) {
- super("Tag " + tag + " has illegal attribute " + attribute, parser);
- }
- }
-
- @SuppressWarnings("serial")
public static final class NonEmptyTag extends ParseException{
public NonEmptyTag(final XmlPullParser parser, final String tag) {
super(tag + " must be empty tag", parser);
diff --git a/app/src/main/res/xml/method.xml b/app/src/main/res/xml/method.xml
index ba1f046cb..1824d41e8 100644
--- a/app/src/main/res/xml/method.xml
+++ b/app/src/main/res/xml/method.xml
@@ -101,7 +101,7 @@
zz: QWERTY/qwerty
-->
-
+
-
-