package net.miz_hi.smileessence.statuslist; import android.app.Activity; import android.util.SparseArray; import net.miz_hi.smileessence.data.list.ListManager; import net.miz_hi.smileessence.data.search.SearchManager; import net.miz_hi.smileessence.model.statuslist.StatusList; import net.miz_hi.smileessence.model.statuslist.impl.HistoryList; import net.miz_hi.smileessence.model.statuslist.timeline.Timeline; import net.miz_hi.smileessence.model.statuslist.timeline.impl.HomeTimeline; import net.miz_hi.smileessence.model.statuslist.timeline.impl.MentionsTimeline; import net.miz_hi.smileessence.model.statuslist.timeline.impl.UserTimeline; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class StatusListManager { private Timeline home; private Timeline mentions; private StatusList history; private ArrayList<StatusList> tweetLists = new ArrayList<StatusList>(); private HashMap<Long, UserTimeline> userTimelineMap = new HashMap<Long, UserTimeline>(); private HashMap<Long, Timeline> listTimelineMap = new HashMap<Long, Timeline>(); private SparseArray<Timeline> searchTimelineMap = new SparseArray<Timeline>(); private HashMap<StatusList, StatusListAdapter> adapterMap = new HashMap<StatusList, StatusListAdapter>(); private static StatusListManager instance; public static void initStatusLists(Activity activity) { instance = new StatusListManager(); instance.tweetLists.clear(); instance.userTimelineMap.clear(); instance.listTimelineMap.clear(); instance.adapterMap.clear(); Timeline ho = new HomeTimeline(); Timeline m = new MentionsTimeline(); StatusList hi = new HistoryList(); setHomeTimeline(ho, new StatusListAdapter(activity, ho)); setMentionsTimeline(m, new StatusListAdapter(activity, m)); setHistoryTimeline(hi, new StatusListAdapter(activity, hi)); } public synchronized static void registerTweetList(StatusList timeline, StatusListAdapter adapter) { instance.tweetLists.add(timeline); instance.adapterMap.put(timeline, adapter); adapter.forceNotifyAdapter(); } public synchronized static void removeTweetList(StatusList timeline) { instance.tweetLists.remove(timeline); instance.adapterMap.remove(timeline); } public synchronized static List<StatusList> getTweetLists() { return instance.tweetLists; } public synchronized static void setHomeTimeline(Timeline timeline, StatusListAdapter adapter) { instance.home = timeline; registerTweetList(timeline, adapter); } public synchronized static Timeline getHomeTimeline() { return instance.home; } public synchronized static void setMentionsTimeline(Timeline timeline, StatusListAdapter adapter) { instance.mentions = timeline; registerTweetList(timeline, adapter); } public synchronized static Timeline getMentionsTimeline() { return instance.mentions; } public synchronized static void setHistoryTimeline(StatusList timeline, StatusListAdapter adapter) { instance.history = timeline; instance.adapterMap.put(timeline, adapter); } public synchronized static StatusList getHistoryTimeline() { return instance.history; } public synchronized static void registerUserTimeline(long userId, UserTimeline timeline, StatusListAdapter adapter) { instance.userTimelineMap.put(userId, timeline); registerTweetList(timeline, adapter); } public synchronized static void removeUserTimeline(long userId) { removeTweetList(instance.userTimelineMap.remove(userId)); } public synchronized static UserTimeline getUserTimeline(long userId) { return instance.userTimelineMap.get(userId); } public synchronized static void registerListTimeline(long listId, Timeline timeline, StatusListAdapter adapter) { instance.listTimelineMap.put(listId, timeline); registerTweetList(timeline, adapter); } public synchronized static void removeListTimeline(long id) { Timeline timeline = instance.listTimelineMap.get(id); removeTweetList(timeline); instance.listTimelineMap.remove(id); ListManager.deleteList(id); } public synchronized static Timeline getListTimeline(long id) { return instance.listTimelineMap.get(id); } public synchronized static void registerSearchTimeline(int searchId, Timeline timeline, StatusListAdapter adapter) { instance.searchTimelineMap.put(searchId, timeline); registerTweetList(timeline, adapter); } public synchronized static void removeSearchTimeline(int id) { Timeline timeline = instance.searchTimelineMap.get(id); removeTweetList(timeline); instance.searchTimelineMap.remove(id); SearchManager.deleteSearch(id); } public synchronized static Timeline getSearchTimeline(int id) { return instance.searchTimelineMap.get(id); } public synchronized static StatusListAdapter getAdapter(StatusList key) { return instance.adapterMap.get(key); } }