From 7c5b96a03470d27aacf8b49ea53ee9e6881d3694 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Mon, 1 Jan 2024 19:20:28 +0100 Subject: [PATCH] remove more unused code, solve some warnings, ... --- app/src/main/AndroidManifest.xml | 4 -- .../compat/InputMethodSubtypeCompatUtils.kt | 2 +- .../keyboard/KeyboardSwitcher.java | 2 +- .../openboard/inputmethod/latin/LatinIME.java | 2 +- .../latin/RichInputMethodManager.java | 2 +- .../latin/UserBinaryDictionary.java | 14 +---- .../inputmethod/latin/WordListInfo.java | 21 ------- .../inputmethod/latin/define/JniLibName.kt | 13 ---- .../latin/define/ProductionFlags.kt | 5 -- .../AdditionalFeaturesSettingUtils.java | 47 -------------- .../settings/AdvancedSettingsFragment.kt | 5 +- .../settings/AppearanceSettingsFragment.kt | 2 +- .../latin/settings/DebugSettingsFragment.java | 7 +-- .../settings/GestureSettingsFragment.java | 13 ++-- .../latin/settings/LanguageFilterList.kt | 4 ++ .../latin/settings/LanguageSettingsDialog.kt | 19 +++--- .../settings/LanguageSettingsFragment.kt | 4 ++ .../settings/PreferencesSettingsFragment.java | 1 + .../inputmethod/latin/settings/Settings.java | 1 + .../latin/settings/SettingsActivity.java | 8 +-- .../latin/settings/SettingsFragment.java | 48 +------------- .../latin/settings/SettingsValues.java | 1 + .../settings/SpacingAndPunctuations.java | 62 ++++++------------- .../latin/settings/SubScreenFragment.java | 29 --------- .../latin/settings/TestFragmentActivity.java | 45 -------------- .../AndroidWordLevelSpellCheckerSession.java | 2 +- .../suggestions/SuggestionStripView.java | 4 +- .../latin/utils/CustomLayoutUtils.kt | 1 - .../latin/utils/DebugLogUtils.java | 54 +--------------- .../inputmethod/latin/utils/DialogUtils.java | 25 -------- .../Utils.kt => utils/DialogUtils.kt} | 11 +++- .../latin/utils/DictionaryUtils.kt | 2 - .../latin/utils/FeedbackUtils.java | 28 --------- .../latin/utils/FragmentUtils.java | 48 -------------- .../latin/utils/InputMethodPicker.kt | 2 +- .../inputmethod/latin/utils/JniUtils.java | 18 +++--- .../{settings => utils}/SubtypeSettings.kt | 9 +-- .../latin/utils/ViewLayoutUtils.java | 9 +-- .../latin/utils/XmlParseUtils.java | 12 ---- app/src/main/res/xml/method.xml | 8 +-- 40 files changed, 94 insertions(+), 500 deletions(-) delete mode 100644 app/src/main/java/org/dslul/openboard/inputmethod/latin/WordListInfo.java delete mode 100644 app/src/main/java/org/dslul/openboard/inputmethod/latin/define/JniLibName.kt delete mode 100644 app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java delete mode 100644 app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/TestFragmentActivity.java delete mode 100644 app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DialogUtils.java rename app/src/main/java/org/dslul/openboard/inputmethod/latin/{settings/Utils.kt => utils/DialogUtils.kt} (61%) delete mode 100644 app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/FeedbackUtils.java delete mode 100644 app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/FragmentUtils.java rename app/src/main/java/org/dslul/openboard/inputmethod/latin/{settings => utils}/SubtypeSettings.kt (96%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5acbd2444..2f52ac847 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -125,10 +125,6 @@ - - - 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 --> - + - -