diff options
author | lookshe <github@lookshe.org> | 2015-08-12 21:43:04 +0200 |
---|---|---|
committer | lookshe <github@lookshe.org> | 2015-08-12 21:43:04 +0200 |
commit | 4bb806585f6ccb02a1f25a69dafd57f17f1c7411 (patch) | |
tree | 29dcf543b7a7c1869411b838816cc6a2f4b85b84 /libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconGroupsLoader.java | |
parent | 0ee1992da2014d51e42c008b2ae39a6e1e033d0b (diff) |
merged latest version from https://github.com/firexel/emojicon/trz/emojicon-merge
but only seems to work with lollipop, so switch back to the old pictures
Diffstat (limited to 'libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconGroupsLoader.java')
-rw-r--r-- | libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconGroupsLoader.java | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconGroupsLoader.java b/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconGroupsLoader.java new file mode 100644 index 00000000..350e710d --- /dev/null +++ b/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconGroupsLoader.java @@ -0,0 +1,92 @@ +package github.ankushsachdeva.emojicon; + +import android.content.Context; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by aleksandr.naumov on 14.05.2015. + */ +class EmojiconGroupsLoader { + private static EmojiconGroupsLoader sInstance; + private final List<EmojiconGroup> mGroups; + + public static synchronized EmojiconGroupsLoader getInstance(Context context) { + if (sInstance == null) { + sInstance = new EmojiconGroupsLoader(context); + } + return sInstance; + } + + private EmojiconGroupsLoader(Context context) { + try { + mGroups = parseEmojiXml(context); + } catch (IOException | XmlPullParserException ex) { + throw new RuntimeException(ex); + } + } + + private List<EmojiconGroup> parseEmojiXml(Context context) throws IOException, XmlPullParserException { + ArrayList<EmojiconGroup> groups = new ArrayList<>(); + XmlPullParser parser = context.getResources().getXml(R.xml.emoji); + parser.next(); + String groupName = null; + for (int eventType = parser.getEventType(); eventType != XmlPullParser.END_DOCUMENT; eventType = parser.next()) { + switch (eventType) { + case XmlPullParser.START_TAG: + if ("group".equals(parser.getName())) { + groupName = parser.getAttributeValue(0); + } + break; + case XmlPullParser.TEXT: + if (groupName != null) { + groups.add(EmojiconGroup.fromString( + parser.getText(), + getGroupNameIcon(groupName) + )); + groupName = null; + } + break; + } + } + return groups; + } + + private int getGroupNameIcon(String groupName) { + for (KnownGroupNames knownGroupName : KnownGroupNames.values()) { + if (groupName.toLowerCase().equals(knownGroupName.name().toLowerCase())) { + return knownGroupName.getIconResId(); + } + } + throw new IllegalArgumentException(String.format("Unknown group name '%s'", groupName)); + } + + public List<EmojiconGroup> getGroups() { + return mGroups; + } + + public enum KnownGroupNames { + RECENT(R.drawable.ic_emoji_recent_light), + SMILES(R.drawable.ic_emoji_people_light), + NATURE(R.drawable.ic_emoji_nature_light), + OBJECTS(R.drawable.ic_emoji_objects_light), + TECH(R.drawable.ic_emoji_places_light), + SYMBOLS(R.drawable.ic_emoji_symbols_light); + + private final int iconResId; + + KnownGroupNames(int iconResId) { + this.iconResId = iconResId; + } + + public int getIconResId() { + return iconResId; + } + } +} |