From 669e36d7518589f56f200fca9908e5adcb2139c1 Mon Sep 17 00:00:00 2001 From: Patrick Date: Thu, 7 May 2026 19:39:16 +0200 Subject: add skintone handling to Emoji class; read skintones in init() --- srcs/juloo.keyboard2/Emoji.java | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'srcs') diff --git a/srcs/juloo.keyboard2/Emoji.java b/srcs/juloo.keyboard2/Emoji.java index 549f88d..8a82e31 100644 --- a/srcs/juloo.keyboard2/Emoji.java +++ b/srcs/juloo.keyboard2/Emoji.java @@ -12,10 +12,18 @@ import java.util.List; public class Emoji { private final KeyValue _kv; + private List _skintones; protected Emoji(String bytecode) { this._kv = new KeyValue(bytecode, KeyValue.Kind.String, 0, 0); + this._skintones = new ArrayList<>(); + } + + protected Emoji(Emoji e) + { + this._kv = e.kv(); + this._skintones = new ArrayList<>(e.skintones()); } public KeyValue kv() @@ -23,6 +31,16 @@ public class Emoji return _kv; } + public List skintones() + { + return _skintones; + } + + public void addSkintone(Emoji skintone) + { + _skintones.add(skintone); + } + private final static List _all = new ArrayList<>(); private final static List> _groups = new ArrayList<>(); @@ -43,6 +61,7 @@ public class Emoji while (!(line = reader.readLine()).isEmpty()) { Emoji e = new Emoji(line); + _all.add(e); _stringMap.put(line, e); } @@ -60,6 +79,23 @@ public class Emoji } _groups.add(_all.subList(last, _all.size())); } + + inputStream = res.openRawResource(R.raw.emojis_skintone_modifiable); + reader = new BufferedReader(new InputStreamReader(inputStream)); + + // Read skintone modifiable emojis + while ((line = reader.readLine()) != null) + { + int baseIndex = Integer.parseInt(line); + Emoji baseEmoji = _all.get(baseIndex); + + baseEmoji.addSkintone(new Emoji(baseEmoji)); + + while (!(line = reader.readLine()).isEmpty()) + { + baseEmoji.addSkintone(new Emoji(line)); + } + } } catch (IOException e) { Logs.exn("Emoji.init() failed", e); } } -- cgit v1.2.3