From 80d7443edd8e46db37abe181cb2fe17598e45c81 Mon Sep 17 00:00:00 2001 From: 0xd9a <0xd9a@noreply.codeberg.org> Date: Tue, 9 Sep 2025 22:48:47 +0530 Subject: [PATCH] Improve translate button preference (fix #667) --- .../app/fedilab/android/BaseMainActivity.java | 13 +++++++++++++ .../mastodon/ui/drawer/StatusAdapter.java | 11 +++++++---- .../settings/FragmentTimelinesSettings.java | 16 ++++++++-------- app/src/main/res/values/strings.xml | 12 ++++++++++++ app/src/main/res/xml/pref_timelines.xml | 13 +++++++------ 5 files changed, 47 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java index 690a3059..e70df640 100644 --- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java @@ -1132,6 +1132,19 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } String software = sharedpreferences.getString(PREF_USER_SOFTWARE, null); + if (sharedpreferences.getString(getString(R.string.SET_TRANSLATE_BUTTON) + currentUserID + currentInstance, null) == null) { + boolean oldTranslateButtonPrefValue = + sharedpreferences.getBoolean(getString(R.string.SET_DISPLAY_TRANSLATE) + currentUserID + currentInstance, false); + String[] translateButtonEntryValues = getResources().getStringArray(R.array.set_translate_button_entry_values); + String newTranslateButtonValue; + if (oldTranslateButtonPrefValue) + newTranslateButtonValue = translateButtonEntryValues[1]; + else + newTranslateButtonValue = translateButtonEntryValues[2]; + sharedpreferences.edit() + .putString(getString(R.string.SET_TRANSLATE_BUTTON) + currentUserID + currentInstance, newTranslateButtonValue) + .apply(); + } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { ActivityResultLauncher permissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> { diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java index e42c4cc0..30ab9ba1 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java @@ -579,7 +579,8 @@ public class StatusAdapter extends RecyclerView.Adapter boolean fullAttachement = sharedpreferences.getBoolean(context.getString(R.string.SET_FULL_PREVIEW), false); boolean expand_media = sharedpreferences.getBoolean(context.getString(R.string.SET_EXPAND_MEDIA), false); boolean displayBookmark = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_BOOKMARK) + MainActivity.currentUserID + MainActivity.currentInstance, true); - boolean displayTranslate = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_TRANSLATE) + MainActivity.currentUserID + MainActivity.currentInstance, false); + String translateButton = sharedpreferences.getString(context.getString(R.string.SET_TRANSLATE_BUTTON) + MainActivity.currentUserID + MainActivity.currentInstance, "auto"); + String[] translateButtonEntryValues = context.getResources().getStringArray(R.array.set_translate_button_entry_values); boolean displayCounters = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_COUNTER_FAV_BOOST), false); boolean removeLeftMargin = sharedpreferences.getBoolean(context.getString(R.string.SET_REMOVE_LEFT_MARGIN), false); boolean extraFeatures = sharedpreferences.getBoolean(context.getString(R.string.SET_EXTAND_EXTRA_FEATURES) + MainActivity.currentUserID + MainActivity.currentInstance, false); @@ -1076,13 +1077,15 @@ public class StatusAdapter extends RecyclerView.Adapter } else { holder.binding.actionButtonBookmark.setVisibility(View.GONE); } - if (displayTranslate) { - if (statusToDeal.language != null && statusToDeal.language.trim().length() > 0 && statusToDeal.language.equalsIgnoreCase(MyTransL.getLocale())) { + if (translateButton.equals(translateButtonEntryValues[0])) { // Show + holder.binding.actionButtonTranslate.setVisibility(View.VISIBLE); + } else if (translateButton.equals(translateButtonEntryValues[1])) { // Auto + if (statusToDeal.language != null && !statusToDeal.language.trim().isEmpty() && statusToDeal.language.equalsIgnoreCase(MyTransL.getLocale())) { holder.binding.actionButtonTranslate.setVisibility(View.GONE); } else { holder.binding.actionButtonTranslate.setVisibility(View.VISIBLE); } - } else { + } else if (translateButton.equals(translateButtonEntryValues[2])) { // Hide holder.binding.actionButtonTranslate.setVisibility(View.GONE); } //--- ACTIONS --- diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentTimelinesSettings.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentTimelinesSettings.java index 33445a32..0edc65a8 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentTimelinesSettings.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentTimelinesSettings.java @@ -88,10 +88,10 @@ public class FragmentTimelinesSettings extends PreferenceFragmentCompat implemen boolean checked = sharedpreferences.getBoolean(getString(R.string.SET_DISPLAY_BOOKMARK) + MainActivity.currentUserID + MainActivity.currentInstance, true); SET_DISPLAY_BOOKMARK.setChecked(checked); } - SwitchPreferenceCompat SET_DISPLAY_TRANSLATE = findPreference(getString(R.string.SET_DISPLAY_TRANSLATE)); - if (SET_DISPLAY_TRANSLATE != null) { - boolean checked = sharedpreferences.getBoolean(getString(R.string.SET_DISPLAY_TRANSLATE) + MainActivity.currentUserID + MainActivity.currentInstance, false); - SET_DISPLAY_TRANSLATE.setChecked(checked); + ListPreference SET_TRANSLATE_BUTTON = findPreference(getString(R.string.SET_TRANSLATE_BUTTON)); + if (SET_TRANSLATE_BUTTON != null) { + String value = sharedpreferences.getString(getString(R.string.SET_TRANSLATE_BUTTON) + MainActivity.currentUserID + MainActivity.currentInstance, null); + SET_TRANSLATE_BUTTON.setValue(value); } SwitchPreferenceCompat SET_DISPLAY_QUOTE = findPreference(getString(R.string.SET_DISPLAY_QUOTE)); @@ -125,10 +125,10 @@ public class FragmentTimelinesSettings extends PreferenceFragmentCompat implemen editor.putBoolean(getString(R.string.SET_DISPLAY_BOOKMARK) + MainActivity.currentUserID + MainActivity.currentInstance, SET_DISPLAY_BOOKMARK.isChecked()); } } - if (key.compareToIgnoreCase(getString(R.string.SET_DISPLAY_TRANSLATE)) == 0) { - SwitchPreferenceCompat SET_DISPLAY_TRANSLATE = findPreference(getString(R.string.SET_DISPLAY_TRANSLATE)); - if (SET_DISPLAY_TRANSLATE != null) { - editor.putBoolean(getString(R.string.SET_DISPLAY_TRANSLATE) + MainActivity.currentUserID + MainActivity.currentInstance, SET_DISPLAY_TRANSLATE.isChecked()); + if (key.compareToIgnoreCase(getString(R.string.SET_TRANSLATE_BUTTON)) == 0) { + ListPreference SET_TRANSLATE_BUTTON = findPreference(getString(R.string.SET_TRANSLATE_BUTTON)); + if (SET_TRANSLATE_BUTTON != null) { + editor.putString(getString(R.string.SET_TRANSLATE_BUTTON) + MainActivity.currentUserID + MainActivity.currentInstance, SET_TRANSLATE_BUTTON.getValue()); } } if (key.compareToIgnoreCase(getString(R.string.SET_DISPLAY_QUOTE)) == 0) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 09547944..74666160 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -772,6 +772,16 @@ No accounts found for this list! Scheduled + + Show + Auto (depending on post language) + Hide + + + show + auto + hide + Ask @@ -1262,6 +1272,7 @@ SET_DISPLAY_REACTIONS SET_DISPLAY_TRANSLATE + SET_TRANSLATE_BUTTON SET_POST_FORMAT SET_COMPOSE_LOCAL_ONLY @@ -1370,6 +1381,7 @@ Poll duration: Always display bookmark button Always display translate button + Translate button Display Bottom menu Top bar menu diff --git a/app/src/main/res/xml/pref_timelines.xml b/app/src/main/res/xml/pref_timelines.xml index cd3e4e10..161cba22 100644 --- a/app/src/main/res/xml/pref_timelines.xml +++ b/app/src/main/res/xml/pref_timelines.xml @@ -142,12 +142,13 @@ app:key="@string/SET_PIXELFED_PRESENTATION" app:singleLineTitle="false" app:title="@string/set_pixelfed_presentation" /> - +