diff options
Diffstat (limited to 'libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconRecentsManager.java')
-rw-r--r-- | libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconRecentsManager.java | 98 |
1 files changed, 29 insertions, 69 deletions
diff --git a/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconRecentsManager.java b/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconRecentsManager.java index 9fbb987e..6110d012 100644 --- a/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconRecentsManager.java +++ b/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconRecentsManager.java @@ -16,43 +16,33 @@ package github.ankushsachdeva.emojicon; -import github.ankushsachdeva.emojicon.emoji.Emojicon; - -import java.util.ArrayList; -import java.util.StringTokenizer; +import java.util.Iterator; +import java.util.LinkedList; import android.content.Context; import android.content.SharedPreferences; /** -* @author Daniele Ricci -*/ -public class EmojiconRecentsManager extends ArrayList<Emojicon> { - - private static final String PREFERENCE_NAME = "emojicon"; - private static final String PREF_RECENTS = "recent_emojis"; - private static final String PREF_PAGE = "recent_page"; + * @author Daniele Ricci + */ +class EmojiconRecentsManager { - private static final Object LOCK = new Object(); - private static EmojiconRecentsManager sInstance; + private static final String PREFERENCE_NAME = "emojicon_v2"; + private static final String PREF_RECENTS = "recent_emojis_v2"; + private static final String PREF_PAGE = "recent_page_v2"; + private static final String EMOJI_DIVIDER = " "; + private final LinkedList<Emojicon> mEmoji; private Context mContext; - private EmojiconRecentsManager(Context context) { + public EmojiconRecentsManager(Context context) { mContext = context.getApplicationContext(); - loadRecents(); + mEmoji = loadRecent(); } - public static EmojiconRecentsManager getInstance(Context context) { - if (sInstance == null) { - synchronized (LOCK) { - if (sInstance == null) { - sInstance = new EmojiconRecentsManager(context); - } - } - } - return sInstance; + public LinkedList<Emojicon> getEmojiList() { + return mEmoji; } public int getRecentPage() { @@ -64,61 +54,31 @@ public class EmojiconRecentsManager extends ArrayList<Emojicon> { } public void push(Emojicon object) { - // FIXME totally inefficient way of adding the emoji to the adapter - // TODO this should be probably replaced by a deque - if (contains(object)) { - super.remove(object); + if (mEmoji.contains(object)) { + mEmoji.remove(object); } - add(0, object); - } - - @Override - public boolean add(Emojicon object) { - boolean ret = super.add(object); - return ret; + mEmoji.addFirst(object); } - @Override - public void add(int index, Emojicon object) { - super.add(index, object); - } - - @Override - public boolean remove(Object object) { - boolean ret = super.remove(object); - return ret; - } - private SharedPreferences getPreferences() { return mContext.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); } - private void loadRecents() { - SharedPreferences prefs = getPreferences(); - String str = prefs.getString(PREF_RECENTS, ""); - StringTokenizer tokenizer = new StringTokenizer(str, "~"); - while (tokenizer.hasMoreTokens()) { - try { - add(new Emojicon(tokenizer.nextToken())); - } - catch (NumberFormatException e) { - // ignored - } + private LinkedList<Emojicon> loadRecent() { + String allEmoji = getPreferences().getString(PREF_RECENTS, ""); + if (allEmoji != null) { + return new LinkedList<>(EmojiconGroup.fromString(allEmoji, 0).getEmojicons()); + } else { + return new LinkedList<>(); } } - - public void saveRecents() { + + public void save() { StringBuilder str = new StringBuilder(); - int c = size(); - for (int i = 0; i < c; i++) { - Emojicon e = get(i); - str.append(e.getEmoji()); - if (i < (c - 1)) { - str.append('~'); - } + for (Iterator<Emojicon> iterator = mEmoji.iterator(); iterator.hasNext(); ) { + Emojicon emojicon = iterator.next(); + str.append(emojicon.getId()).append(iterator.hasNext() ? EMOJI_DIVIDER : ""); } - SharedPreferences prefs = getPreferences(); - prefs.edit().putString(PREF_RECENTS, str.toString()).commit(); + getPreferences().edit().putString(PREF_RECENTS, str.toString()).apply(); } - } |