Loading app/src/main/java/app/fedilab/android/BaseMainActivity.java +13 −0 Original line number Diff line number Diff line Loading @@ -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<String> permissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> { Loading app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java +1 −1 Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ public class Account implements Serializable { if (display_name == null || display_name.isEmpty()) { display_name = username; } return SpannableHelper.convert(context, display_name, null, this, null, viewWeakReference, null, true, false); return SpannableHelper.convert(context, display_name, null, this, null, viewWeakReference, null, false, false); } public synchronized Spannable getSpanDisplayNameEmoji(Activity activity, WeakReference<View> viewWeakReference) { Loading app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java +2 −5 Original line number Diff line number Diff line Loading @@ -1011,14 +1011,11 @@ public class SpannableHelper { public static Spannable convertEmoji(Activity activity, String text, Account account, WeakReference<View> viewWeakReference) { SpannableString initialContent; if (text == null) { return null; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) initialContent = new SpannableString(Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY)); else initialContent = new SpannableString(Html.fromHtml(text)); SpannableString initialContent = new SpannableString(text); SpannableStringBuilder content = new SpannableStringBuilder(initialContent); List<Emoji> emojiList = account.emojis; Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +6 −6 Original line number Diff line number Diff line Loading @@ -1709,15 +1709,15 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder switch (statusDraft.quote_approval_policy.toLowerCase()) { case "public" -> { holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_compose_visibility_public); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_public); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.PUBLIC.name(); } case "followers" -> { holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_baseline_people_alt_24); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_followers); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.FOLLOWERS.name(); } case "nobody" -> { holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_baseline_block_24); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_nobody); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.NOBODY.name(); } } Loading Loading @@ -1770,17 +1770,17 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder }); holder.binding.buttonQuoteApprovalPolicyNoOne.setOnClickListener(v -> { holder.binding.quoteApprovalPolicyPanel.setVisibility(View.GONE); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_baseline_block_24); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_nobody); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.NOBODY.name(); }); holder.binding.buttonQuoteApprovalPolicyFollowersOnly.setOnClickListener(v -> { holder.binding.quoteApprovalPolicyPanel.setVisibility(View.GONE); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_baseline_people_alt_24); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_followers); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.FOLLOWERS.name(); }); holder.binding.buttonQuoteApprovalPolicyAnyone.setOnClickListener(v -> { holder.binding.quoteApprovalPolicyPanel.setVisibility(View.GONE); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_compose_visibility_public); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_public); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.PUBLIC.name(); }); Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ReorderBottomMenuAdapter.java +11 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.ViewGroup; import androidx.core.view.ViewCompat; import androidx.recyclerview.widget.RecyclerView; import org.jetbrains.annotations.NotNull; Loading Loading @@ -126,7 +127,16 @@ public class ReorderBottomMenuAdapter extends RecyclerView.Adapter<RecyclerView. } return false; }); ViewCompat.addAccessibilityAction(holder.binding.getRoot(), context.getString(R.string.move_timeline_up), (view, arguments) -> { int bindingAdapterPosition = viewHolder.getBindingAdapterPosition(); if (bindingAdapterPosition > 0) onItemMove(bindingAdapterPosition, bindingAdapterPosition - 1); return true; }); ViewCompat.addAccessibilityAction(holder.binding.getRoot(), context.getString(R.string.move_timeline_down), (view, arguments) -> { int bindingAdapterPosition = viewHolder.getBindingAdapterPosition(); if (bindingAdapterPosition < bottomMenu.bottom_menu.size() - 1) onItemMove(bindingAdapterPosition, bindingAdapterPosition + 1); return true; }); } @Override Loading Loading
app/src/main/java/app/fedilab/android/BaseMainActivity.java +13 −0 Original line number Diff line number Diff line Loading @@ -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<String> permissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> { Loading
app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java +1 −1 Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ public class Account implements Serializable { if (display_name == null || display_name.isEmpty()) { display_name = username; } return SpannableHelper.convert(context, display_name, null, this, null, viewWeakReference, null, true, false); return SpannableHelper.convert(context, display_name, null, this, null, viewWeakReference, null, false, false); } public synchronized Spannable getSpanDisplayNameEmoji(Activity activity, WeakReference<View> viewWeakReference) { Loading
app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java +2 −5 Original line number Diff line number Diff line Loading @@ -1011,14 +1011,11 @@ public class SpannableHelper { public static Spannable convertEmoji(Activity activity, String text, Account account, WeakReference<View> viewWeakReference) { SpannableString initialContent; if (text == null) { return null; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) initialContent = new SpannableString(Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY)); else initialContent = new SpannableString(Html.fromHtml(text)); SpannableString initialContent = new SpannableString(text); SpannableStringBuilder content = new SpannableStringBuilder(initialContent); List<Emoji> emojiList = account.emojis; Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +6 −6 Original line number Diff line number Diff line Loading @@ -1709,15 +1709,15 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder switch (statusDraft.quote_approval_policy.toLowerCase()) { case "public" -> { holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_compose_visibility_public); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_public); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.PUBLIC.name(); } case "followers" -> { holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_baseline_people_alt_24); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_followers); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.FOLLOWERS.name(); } case "nobody" -> { holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_baseline_block_24); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_nobody); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.NOBODY.name(); } } Loading Loading @@ -1770,17 +1770,17 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder }); holder.binding.buttonQuoteApprovalPolicyNoOne.setOnClickListener(v -> { holder.binding.quoteApprovalPolicyPanel.setVisibility(View.GONE); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_baseline_block_24); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_nobody); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.NOBODY.name(); }); holder.binding.buttonQuoteApprovalPolicyFollowersOnly.setOnClickListener(v -> { holder.binding.quoteApprovalPolicyPanel.setVisibility(View.GONE); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_baseline_people_alt_24); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_followers); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.FOLLOWERS.name(); }); holder.binding.buttonQuoteApprovalPolicyAnyone.setOnClickListener(v -> { holder.binding.quoteApprovalPolicyPanel.setVisibility(View.GONE); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_compose_visibility_public); holder.binding.buttonQuoteApprovalPolicy.setIconResource(R.drawable.ic_quote_policy_public); statusDraft.quote_approval_policy = MastodonHelper.quote_visibility.PUBLIC.name(); }); Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ReorderBottomMenuAdapter.java +11 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.ViewGroup; import androidx.core.view.ViewCompat; import androidx.recyclerview.widget.RecyclerView; import org.jetbrains.annotations.NotNull; Loading Loading @@ -126,7 +127,16 @@ public class ReorderBottomMenuAdapter extends RecyclerView.Adapter<RecyclerView. } return false; }); ViewCompat.addAccessibilityAction(holder.binding.getRoot(), context.getString(R.string.move_timeline_up), (view, arguments) -> { int bindingAdapterPosition = viewHolder.getBindingAdapterPosition(); if (bindingAdapterPosition > 0) onItemMove(bindingAdapterPosition, bindingAdapterPosition - 1); return true; }); ViewCompat.addAccessibilityAction(holder.binding.getRoot(), context.getString(R.string.move_timeline_down), (view, arguments) -> { int bindingAdapterPosition = viewHolder.getBindingAdapterPosition(); if (bindingAdapterPosition < bottomMenu.bottom_menu.size() - 1) onItemMove(bindingAdapterPosition, bindingAdapterPosition + 1); return true; }); } @Override Loading