diff --git a/app/build.gradle b/app/build.gradle index 77508ba2..ee69a11a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ dependencies { implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.22' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.preference:preference-ktx:1.2.1' - implementation 'androidx.recyclerview:recyclerview:1.3.1' + implementation 'androidx.recyclerview:recyclerview:1.3.2' // implementation 'androidx.activity:activity:1.4.0' implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0' implementation 'com.google.android.material:material:1.10.0' @@ -27,8 +27,8 @@ android { applicationId 'ee.ioc.phon.android.speak' minSdkVersion 24 targetSdkVersion 34 - versionCode 1910 - versionName '1.9.10' + versionCode 1912 + versionName '1.9.12' vectorDrawables.useSupportLibrary = true // Keep only en and et resources resourceConfigurations += ['en', 'et'] diff --git a/app/src/main/java/ee/ioc/phon/android/speak/adapter/ComboButtonsAdapter.kt b/app/src/main/java/ee/ioc/phon/android/speak/adapter/ComboButtonsAdapter.kt index 131a4366..600e7fcd 100644 --- a/app/src/main/java/ee/ioc/phon/android/speak/adapter/ComboButtonsAdapter.kt +++ b/app/src/main/java/ee/ioc/phon/android/speak/adapter/ComboButtonsAdapter.kt @@ -52,11 +52,7 @@ class ComboButtonsAdapter( holder.mView.paintFlags = 0 holder.mView.isClickable = true } - var label = combo.localeAsStr - if (label.isEmpty() || label.equals("und")) { - label = combo.service.substring(0, 3) - } - holder.mView.text = label + holder.mView.text = combo.tinyLabel if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { holder.mView.tooltipText = combo.longLabel } diff --git a/app/src/main/java/ee/ioc/phon/android/speak/model/Combo.java b/app/src/main/java/ee/ioc/phon/android/speak/model/Combo.java index f38ee0f3..41c01dc5 100644 --- a/app/src/main/java/ee/ioc/phon/android/speak/model/Combo.java +++ b/app/src/main/java/ee/ioc/phon/android/speak/model/Combo.java @@ -21,6 +21,7 @@ public class Combo { private final ComponentName mComponentName; private final String mLocaleLongLabel; private final String mLocaleAsStr; + private final String mTinyLabel; private final String mShortLabel; private final String mLongLabel; private boolean mIsSelected; @@ -31,18 +32,22 @@ public Combo(Context context, String id) { mId = id; mComponentName = pair.first; mLocaleAsStr = pair.second; - mServiceLabel = RecognitionServiceManager.getServiceLabel(context, mComponentName); + String serviceLabel = RecognitionServiceManager.getServiceLabel(context, mComponentName); + // Present the service by its short class name, if it does not have a label. + mServiceLabel = serviceLabel.isEmpty() ? mComponentName.getShortClassName() : serviceLabel; if (mLocaleAsStr.isEmpty() || "und".equals(mLocaleAsStr)) { mLocaleLongLabel = ""; mAsString = String.format(context.getString(R.string.labelComboListItemWithoutLocale), mServiceLabel); mShortLabel = mServiceLabel; mLongLabel = mServiceLabel; + mTinyLabel = mServiceLabel.length() < 3 ? mServiceLabel : mServiceLabel.substring(0, 3); } else { mLocaleLongLabel = RecognitionServiceManager.makeLangLabel(mLocaleAsStr); mAsString = String.format(context.getString(R.string.labelComboListItem), mServiceLabel, mLocaleLongLabel); String mFormatLabelComboItem = context.getString(R.string.labelComboItem); mShortLabel = String.format(mFormatLabelComboItem, mServiceLabel, mLocaleAsStr); mLongLabel = String.format(mFormatLabelComboItem, mServiceLabel, mLocaleLongLabel); + mTinyLabel = mLocaleAsStr; } } @@ -66,6 +71,10 @@ public String getLanguage() { return mLocaleLongLabel; } + public String getTinyLabel() { + return mTinyLabel; + } + public String getShortLabel() { return mShortLabel; } diff --git a/app/src/main/java/ee/ioc/phon/android/speak/model/RecService.java b/app/src/main/java/ee/ioc/phon/android/speak/model/RecService.java index ac85ae06..b81a846e 100644 --- a/app/src/main/java/ee/ioc/phon/android/speak/model/RecService.java +++ b/app/src/main/java/ee/ioc/phon/android/speak/model/RecService.java @@ -28,7 +28,9 @@ public RecService(Context context, String id) { Pair pair = RecognitionServiceManager.unflattenFromString(id); mComponentName = pair.first; - mLabel = RecognitionServiceManager.getServiceLabel(context, mComponentName); + String label = RecognitionServiceManager.getServiceLabel(context, mComponentName); + // Present the service by its short class name, if it does not have a label. + mLabel = label.isEmpty() ? mComponentName.getShortClassName() : label; ServiceInfo si = RecognitionServiceManager.getServiceInfo(context, mComponentName); int resId = si.descriptionRes; if (resId != 0) {