kopia lustrzana https://github.com/ryukoposting/Signal-Android
Hide bubble for jumbomoji.
rodzic
4e67752850
commit
3922bfacf5
|
@ -114,10 +114,9 @@ public class EmojiTextView extends AppCompatTextView {
|
|||
int emojis = candidates.size();
|
||||
float scale = 1.0f;
|
||||
|
||||
if (emojis <= 8) scale += 0.75f;
|
||||
if (emojis <= 6) scale += 0.75f;
|
||||
if (emojis <= 4) scale += 0.75f;
|
||||
if (emojis <= 2) scale += 0.75f;
|
||||
if (emojis <= 5) scale += 0.9f;
|
||||
if (emojis <= 4) scale += 0.9f;
|
||||
if (emojis <= 2) scale += 0.9f;
|
||||
|
||||
isJumbomoji = scale > 1.0f;
|
||||
super.setTextSize(TypedValue.COMPLEX_UNIT_PX, originalFontSize * scale);
|
||||
|
|
|
@ -138,12 +138,10 @@ import org.whispersystems.libsignal.util.guava.Optional;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* A view that displays an individual conversation item within a conversation
|
||||
|
@ -1075,6 +1073,8 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
|
|||
ViewUtil.updateLayoutParamsIfNonNull(groupSenderHolder, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
|
||||
footer.setVisibility(VISIBLE);
|
||||
} else if (hasNoBubble(messageRecord)) {
|
||||
bodyBubble.setBackgroundColor(Color.TRANSPARENT);
|
||||
} else if (hasThumbnail(messageRecord)) {
|
||||
mediaThumbnailStub.require().setVisibility(View.VISIBLE);
|
||||
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
|
||||
|
|
|
@ -35,6 +35,8 @@ import org.signal.core.util.logging.Log;
|
|||
import org.signal.storageservice.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroupChange;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.components.emoji.EmojiProvider;
|
||||
import org.thoughtcrime.securesms.components.emoji.parsing.EmojiParser;
|
||||
import org.thoughtcrime.securesms.database.MmsSmsColumns;
|
||||
import org.thoughtcrime.securesms.database.SmsDatabase;
|
||||
import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
|
||||
|
@ -42,6 +44,8 @@ import org.thoughtcrime.securesms.database.documents.NetworkFailure;
|
|||
import org.thoughtcrime.securesms.database.model.databaseprotos.DecryptedGroupV2Context;
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.GroupCallUpdateDetails;
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.ProfileChangeDetails;
|
||||
import org.thoughtcrime.securesms.emoji.EmojiSource;
|
||||
import org.thoughtcrime.securesms.emoji.JumboEmoji;
|
||||
import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange;
|
||||
import org.thoughtcrime.securesms.profiles.ProfileName;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
|
@ -92,6 +96,8 @@ public abstract class MessageRecord extends DisplayRecord {
|
|||
private final long notifiedTimestamp;
|
||||
private final long receiptTimestamp;
|
||||
|
||||
protected Boolean isJumboji = null;
|
||||
|
||||
MessageRecord(long id, String body, Recipient conversationRecipient,
|
||||
Recipient individualRecipient, int recipientDeviceId,
|
||||
long dateSent, long dateReceived, long dateServer, long threadId,
|
||||
|
@ -602,6 +608,18 @@ public abstract class MessageRecord extends DisplayRecord {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean isJumbomoji(Context context) {
|
||||
if (isJumboji == null) {
|
||||
if (getBody().length() <= EmojiSource.getLatest().getMaxEmojiLength() * JumboEmoji.MAX_JUMBOJI_COUNT) {
|
||||
EmojiParser.CandidateList candidates = EmojiProvider.getCandidates(getDisplayBody(context));
|
||||
isJumboji = candidates != null && candidates.allEmojis && candidates.size() <= JumboEmoji.MAX_JUMBOJI_COUNT;
|
||||
} else {
|
||||
isJumboji = false;
|
||||
}
|
||||
}
|
||||
return isJumboji;
|
||||
}
|
||||
|
||||
public static final class InviteAddState {
|
||||
|
||||
private final boolean invited;
|
||||
|
|
|
@ -21,6 +21,8 @@ private val TAG = Log.tag(JumboEmoji::class.java)
|
|||
*/
|
||||
object JumboEmoji {
|
||||
|
||||
const val MAX_JUMBOJI_COUNT = 5
|
||||
|
||||
private val cache: MutableMap<String, Bitmap> = SoftHashMap(16)
|
||||
private val tasks: MutableMap<String, ListenableFutureTask<Bitmap>> = hashMapOf()
|
||||
private val versionToFormat: MutableMap<UUID, String?> = hashMapOf()
|
||||
|
|
|
@ -43,7 +43,7 @@ fun MessageRecord.isBorderless(context: Context): Boolean {
|
|||
}
|
||||
|
||||
fun MessageRecord.hasNoBubble(context: Context): Boolean =
|
||||
hasSticker() || isBorderless(context)
|
||||
hasSticker() || isBorderless(context) || (isTextOnly(context) && isJumbomoji(context))
|
||||
|
||||
fun MessageRecord.hasOnlyThumbnail(context: Context): Boolean {
|
||||
return hasThumbnail() &&
|
||||
|
|
|
@ -138,6 +138,25 @@
|
|||
app:footer_reveal_dot_color="@color/signal_icon_tint_secondary"
|
||||
app:footer_text_color="@color/signal_text_secondary" />
|
||||
|
||||
<org.thoughtcrime.securesms.components.ConversationItemFooter
|
||||
android:id="@+id/conversation_item_sticker_footer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/message_bubble_horizontal_padding"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_gravity="end"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:paddingStart="@dimen/message_bubble_horizontal_padding"
|
||||
android:paddingTop="3dp"
|
||||
android:paddingEnd="@dimen/message_bubble_horizontal_padding"
|
||||
android:paddingBottom="3dp"
|
||||
android:visibility="gone"
|
||||
app:footer_icon_color="@color/signal_icon_tint_secondary"
|
||||
app:footer_mode="incoming"
|
||||
app:footer_reveal_dot_color="@color/signal_icon_tint_secondary"
|
||||
app:footer_text_color="@color/signal_text_secondary" />
|
||||
|
||||
</org.thoughtcrime.securesms.conversation.ConversationItemBodyBubble>
|
||||
|
||||
<org.thoughtcrime.securesms.components.AlertView
|
||||
|
|
|
@ -79,6 +79,24 @@
|
|||
app:footer_reveal_dot_color="@color/conversation_item_sent_text_secondary_color"
|
||||
app:footer_text_color="@color/conversation_item_sent_text_secondary_color" />
|
||||
|
||||
<org.thoughtcrime.securesms.components.ConversationItemFooter
|
||||
android:id="@+id/conversation_item_sticker_footer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginTop="2dp"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:paddingStart="@dimen/message_bubble_horizontal_padding"
|
||||
android:paddingTop="3dp"
|
||||
android:paddingEnd="@dimen/message_bubble_horizontal_padding"
|
||||
android:paddingBottom="3dp"
|
||||
android:visibility="gone"
|
||||
app:footer_icon_color="@color/signal_icon_tint_secondary"
|
||||
app:footer_mode="outgoing"
|
||||
app:footer_reveal_dot_color="@color/signal_icon_tint_secondary"
|
||||
app:footer_text_color="@color/signal_text_secondary" />
|
||||
|
||||
</org.thoughtcrime.securesms.conversation.ConversationItemBodyBubble>
|
||||
|
||||
<org.thoughtcrime.securesms.components.AlertView
|
||||
|
|
Ładowanie…
Reference in New Issue