Updated emoji set.

Includes display support for more genders, and more notably, skin tones.
These are not currently selectable in the UI, but they will be rendered
properly when other clients send them.
This commit is contained in:
Greyson Parrelli
2018-10-16 09:31:46 -07:00
parent f93a79ae37
commit 1999d09901
13 changed files with 255 additions and 46 deletions

View File

@@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.components.emoji;
public interface EmojiPageModel {
int getIconAttr();
String[] getEmoji();
String[] getDisplayEmoji();
boolean hasSpriteMap();
String getSprite();
boolean isDynamic();

View File

@@ -69,7 +69,7 @@ public class EmojiPageView extends FrameLayout {
}
@Override public int getCount() {
return model.getEmoji().length;
return model.getDisplayEmoji().length;
}
@Override
@@ -95,7 +95,7 @@ public class EmojiPageView extends FrameLayout {
view = emojiView;
}
view.setEmoji(model.getEmoji()[position]);
view.setEmoji(model.getDisplayEmoji()[position]);
return view;
}
}

File diff suppressed because one or more lines are too long

View File

@@ -50,6 +50,10 @@ public class RecentEmojiPageModel implements EmojiPageModel {
return toReversePrimitiveArray(recentlyUsed);
}
@Override public String[] getDisplayEmoji() {
return getEmoji();
}
@Override public boolean hasSpriteMap() {
return false;
}

View File

@@ -7,31 +7,46 @@ import android.support.annotation.Nullable;
public class StaticEmojiPageModel implements EmojiPageModel {
@AttrRes private final int iconAttr;
@NonNull private final String[] emoji;
@NonNull private final String[] displayEmoji;
@Nullable private final String sprite;
public StaticEmojiPageModel(@AttrRes int iconAttr, @NonNull String[] emoji, @Nullable String sprite) {
this.iconAttr = iconAttr;
this.emoji = emoji;
this.sprite = sprite;
this(iconAttr, emoji, emoji, sprite);
}
public StaticEmojiPageModel(@AttrRes int iconAttr, @NonNull String[] emoji, @NonNull String[] displayEmoji, @Nullable String sprite) {
this.iconAttr = iconAttr;
this.emoji = emoji;
this.displayEmoji = displayEmoji;
this.sprite = sprite;
}
public int getIconAttr() {
return iconAttr;
}
@NonNull public String[] getEmoji() {
@Override
public @NonNull String[] getEmoji() {
return emoji;
}
@Override public boolean hasSpriteMap() {
@Override
public @NonNull String[] getDisplayEmoji() {
return displayEmoji;
}
@Override
public boolean hasSpriteMap() {
return sprite != null;
}
@Override @Nullable public String getSprite() {
@Override
public @Nullable String getSprite() {
return sprite;
}
@Override public boolean isDynamic() {
@Override
public boolean isDynamic() {
return false;
}
}