Fix issue #1238 - Improve language picker when filtered with some languages

This commit is contained in:
Thomas 2025-06-06 14:52:00 +02:00
parent 0fcd1c6d4b
commit b954708e3a

View file

@ -25,6 +25,7 @@ import android.Manifest;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@ -1915,7 +1916,6 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
i++; i++;
} }
} else { } else {
List<Languages.Language> languages = Languages.get(context); List<Languages.Language> languages = Languages.get(context);
if (languages != null) { if (languages != null) {
codesArr = new String[languages.size()]; codesArr = new String[languages.size()];
@ -1936,23 +1936,34 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(context); AlertDialog.Builder builder = new MaterialAlertDialogBuilder(context);
builder.setTitle(context.getString(R.string.message_language)); builder.setTitle(context.getString(R.string.message_language));
builder.setSingleChoiceItems(languagesArr, selection, null);
String[] finalCodesArr = codesArr; String[] finalCodesArr = codesArr;
builder.setPositiveButton(R.string.validate, (dialog, which) -> { if (storedLanguages == null || storedLanguages.isEmpty()) {
int selectedPosition = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); builder.setSingleChoiceItems(languagesArr, selection, null);
editor.putString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, finalCodesArr[selectedPosition]); builder.setPositiveButton(R.string.validate, (dialog, which) -> {
editor.apply(); int selectedPosition = ((AlertDialog) dialog).getListView().getCheckedItemPosition();
statusDraft.language = finalCodesArr[selectedPosition]; editor.putString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, finalCodesArr[selectedPosition]);
notifyItemChanged(holder.getLayoutPosition()); editor.apply();
dialog.dismiss(); statusDraft.language = finalCodesArr[selectedPosition];
}); notifyItemChanged(holder.getLayoutPosition());
builder.setNegativeButton(R.string.reset, (dialog, which) -> { dialog.dismiss();
editor.putString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, null); });
editor.apply(); builder.setNegativeButton(R.string.reset, (dialog, which) -> {
statusDraft.language = null; editor.putString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, null);
notifyItemChanged(holder.getLayoutPosition()); editor.apply();
dialog.dismiss(); 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(); builder.create().show();
}); });
} }
@ -1988,6 +1999,7 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
composePollBinding.option1.textLayout.setHint(context.getString(R.string.poll_choice_s, 1)); composePollBinding.option1.textLayout.setHint(context.getString(R.string.poll_choice_s, 1));
composePollBinding.option2.text.setFilters(fArray); composePollBinding.option2.text.setFilters(fArray);
composePollBinding.option2.textLayout.setHint(context.getString(R.string.poll_choice_s, 2)); composePollBinding.option2.textLayout.setHint(context.getString(R.string.poll_choice_s, 2));
composePollBinding.option2.textLayout.setHint(context.getString(R.string.poll_choice_s, 2));
composePollBinding.option1.buttonRemove.setVisibility(View.GONE); composePollBinding.option1.buttonRemove.setVisibility(View.GONE);
composePollBinding.option2.buttonRemove.setVisibility(View.GONE); composePollBinding.option2.buttonRemove.setVisibility(View.GONE);
int finalMax_entry = max_entry; int finalMax_entry = max_entry;