diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/preferences/BioTextPreference.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/preferences/BioTextPreference.kt index d1ee29d00f..0ff69bce95 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/preferences/BioTextPreference.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/preferences/BioTextPreference.kt @@ -14,6 +14,7 @@ import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.util.ContextUtil import org.thoughtcrime.securesms.util.ServiceUtil import org.thoughtcrime.securesms.util.SpanUtil +import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.adapter.mapping.MappingViewHolder @@ -70,18 +71,24 @@ object BioTextPreference { } if (recipient.isIndividual && !recipient.isSelf) { + val isLtr = ViewUtil.isLtr(context) val chevronGlyph = SignalSymbols.getSpannedString( context, SignalSymbols.Weight.BOLD, - SignalSymbols.Glyph.CHEVRON_RIGHT + if (isLtr) SignalSymbols.Glyph.CHEVRON_RIGHT else SignalSymbols.Glyph.CHEVRON_LEFT ).let { SpanUtil.ofSize(it, 24) }.let { SpanUtil.color(ContextCompat.getColor(context, R.color.signal_colorOutline), it) } - append(" ") - append(chevronGlyph) + if (isLtr) { + append(" ") + append(chevronGlyph) + } else { + insert(0, " ") + insert(0, chevronGlyph) + } } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/PendingParticipantsView.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/PendingParticipantsView.kt index d0ef2df193..bdffe9df22 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/PendingParticipantsView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/PendingParticipantsView.kt @@ -20,6 +20,7 @@ import org.thoughtcrime.securesms.fonts.SignalSymbols import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.service.webrtc.PendingParticipantCollection import org.thoughtcrime.securesms.util.SpanUtil +import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.visible /** @@ -59,14 +60,26 @@ class PendingParticipantsView @JvmOverloads constructor( avatar.setAvatar(firstRecipient) avatar.setOnClickListener { listener?.onLaunchRecipientSheet(firstRecipient) } - name.text = SpannableStringBuilder(firstRecipient.getShortDisplayName(context)) - .append(" ") - .append( - SpanUtil.ofSize( - SignalSymbols.getSpannedString(context, SignalSymbols.Weight.REGULAR, SignalSymbols.Glyph.CHEVRON_RIGHT), - 16 + name.text = if (ViewUtil.isLtr(this)) { + SpannableStringBuilder(firstRecipient.getShortDisplayName(context)) + .append(" ") + .append( + SpanUtil.ofSize( + SignalSymbols.getSpannedString(context, SignalSymbols.Weight.REGULAR, SignalSymbols.Glyph.CHEVRON_RIGHT), + 16 + ) ) - ) + } else { + SpannableStringBuilder(firstRecipient.getShortDisplayName(context)) + .insert(0, " ") + .insert( + 0, + SpanUtil.ofSize( + SignalSymbols.getSpannedString(context, SignalSymbols.Weight.REGULAR, SignalSymbols.Glyph.CHEVRON_LEFT), + 16 + ) + ) + } name.setOnClickListener { listener?.onLaunchRecipientSheet(firstRecipient) } allow.setOnClickListener { listener?.onAllowPendingRecipient(firstRecipient) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationHeaderView.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationHeaderView.java index 96995672f3..3bfe5305ce 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationHeaderView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationHeaderView.java @@ -136,9 +136,16 @@ public class ConversationHeaderView extends ConstraintLayout { } if (recipient.isIndividual() && !recipient.isSelf()) { - CharSequence chevronRight = SignalSymbols.getSpannedString(getContext(), SignalSymbols.Weight.BOLD, SignalSymbols.Glyph.CHEVRON_RIGHT, R.color.signal_colorOutline); - title.append(" "); - title.append(SpanUtil.ofSize(chevronRight, 24)); + boolean isLtr = ViewUtil.isLtr(this); + CharSequence chevron = SignalSymbols.getSpannedString(getContext(), SignalSymbols.Weight.BOLD, isLtr ? SignalSymbols.Glyph.CHEVRON_RIGHT : SignalSymbols.Glyph.CHEVRON_LEFT, R.color.signal_colorOutline); + + if (isLtr) { + title.append(" "); + title.append(SpanUtil.ofSize(chevron, 24)); + } else { + title.insert(0, " "); + title.insert(0, SpanUtil.ofSize(chevron, 24)); + } binding.messageRequestTitle.setOnClickListener(v -> onTitleClicked.run()); } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/fonts/SignalSymbols.kt b/app/src/main/java/org/thoughtcrime/securesms/fonts/SignalSymbols.kt index 43df9c171c..35af14e79c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/fonts/SignalSymbols.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/fonts/SignalSymbols.kt @@ -26,6 +26,7 @@ object SignalSymbols { enum class Glyph(val unicode: Char) { CHECKMARK('\u2713'), + CHEVRON_LEFT('\uE024'), CHEVRON_RIGHT('\uE025'), PERSON_CIRCLE('\uE05E'), LOCK('\uE041') diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.kt index 8125cf3c96..1ab965e19e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.kt @@ -47,6 +47,7 @@ import org.thoughtcrime.securesms.util.BottomSheetUtil import org.thoughtcrime.securesms.util.ContextUtil import org.thoughtcrime.securesms.util.SpanUtil import org.thoughtcrime.securesms.util.ThemeUtil +import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.WindowUtil import org.thoughtcrime.securesms.util.visible @@ -234,16 +235,20 @@ class RecipientBottomSheetDialogFragment : BottomSheetDialogFragment() { } if (!recipient.isSelf && recipient.isIndividual) { + val isLtr = ViewUtil.isLtr(view) val chevronGlyph = SignalSymbols.getSpannedString( requireContext(), SignalSymbols.Weight.BOLD, - SignalSymbols.Glyph.CHEVRON_RIGHT + if (isLtr) SignalSymbols.Glyph.CHEVRON_RIGHT else SignalSymbols.Glyph.CHEVRON_LEFT ) - nameBuilder.append(" ") - nameBuilder.append( - SpanUtil.color(ContextCompat.getColor(requireContext(), R.color.signal_colorOutline), SpanUtil.ofSize(chevronGlyph, 24)) - ) + if (isLtr) { + nameBuilder.append(" ") + nameBuilder.append(SpanUtil.color(ContextCompat.getColor(requireContext(), R.color.signal_colorOutline), SpanUtil.ofSize(chevronGlyph, 24))) + } else { + nameBuilder.insert(0, " ") + nameBuilder.insert(0, SpanUtil.color(ContextCompat.getColor(requireContext(), R.color.signal_colorOutline), SpanUtil.ofSize(chevronGlyph, 24))) + } fullName.text = nameBuilder fullName.setOnClickListener { diff --git a/app/src/main/res/drawable/symbol_chevron_right_compact_bold_16.xml b/app/src/main/res/drawable/symbol_chevron_right_compact_bold_16.xml index 0a2ae303ca..ce12fb08b8 100644 --- a/app/src/main/res/drawable/symbol_chevron_right_compact_bold_16.xml +++ b/app/src/main/res/drawable/symbol_chevron_right_compact_bold_16.xml @@ -2,7 +2,8 @@ android:width="16dp" android:height="16dp" android:viewportWidth="16" - android:viewportHeight="16"> + android:viewportHeight="16" + android:autoMirrored="true">