From b954708e3ac3c3294e08b38e34302327e32c69e4 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 6 Jun 2025 14:52:00 +0200 Subject: [PATCH] Fix issue #1238 - Improve language picker when filtered with some languages --- .../mastodon/ui/drawer/ComposeAdapter.java | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java index c620dfa8..d3629592 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java @@ -25,6 +25,7 @@ import android.Manifest; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; @@ -1915,7 +1916,6 @@ public class ComposeAdapter extends RecyclerView.Adapter languages = Languages.get(context); if (languages != null) { codesArr = new String[languages.size()]; @@ -1936,23 +1936,34 @@ public class ComposeAdapter extends RecyclerView.Adapter { - int selectedPosition = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); - editor.putString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, finalCodesArr[selectedPosition]); - editor.apply(); - statusDraft.language = finalCodesArr[selectedPosition]; - notifyItemChanged(holder.getLayoutPosition()); - dialog.dismiss(); - }); - builder.setNegativeButton(R.string.reset, (dialog, which) -> { - editor.putString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, null); - editor.apply(); - statusDraft.language = null; - notifyItemChanged(holder.getLayoutPosition()); - dialog.dismiss(); - }); + if (storedLanguages == null || storedLanguages.isEmpty()) { + builder.setSingleChoiceItems(languagesArr, selection, null); + builder.setPositiveButton(R.string.validate, (dialog, which) -> { + int selectedPosition = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); + editor.putString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, finalCodesArr[selectedPosition]); + editor.apply(); + statusDraft.language = finalCodesArr[selectedPosition]; + notifyItemChanged(holder.getLayoutPosition()); + dialog.dismiss(); + }); + builder.setNegativeButton(R.string.reset, (dialog, which) -> { + editor.putString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, null); + editor.apply(); + statusDraft.language = null; + notifyItemChanged(holder.getLayoutPosition()); + dialog.dismiss(); + }); + } else { + builder.setSingleChoiceItems(languagesArr, selection, (dialog, which) -> { + int selectedPosition = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); + editor.putString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, finalCodesArr[selectedPosition]); + editor.apply(); + statusDraft.language = finalCodesArr[selectedPosition]; + notifyItemChanged(holder.getLayoutPosition()); + dialog.dismiss(); + }); + } builder.create().show(); }); } @@ -1988,6 +1999,7 @@ public class ComposeAdapter extends RecyclerView.Adapter