package net.miz_hi.smileessence.model.statuslist; import net.miz_hi.smileessence.model.status.IStatusModel; import net.miz_hi.smileessence.statuslist.StatusListAdapter; import net.miz_hi.smileessence.statuslist.StatusListManager; import java.util.ArrayList; import java.util.Collection; public abstract class StatusList { private final ArrayList<IStatusModel> list = new ArrayList<IStatusModel>(); public synchronized void addToTop(IStatusModel status) { if(!list.contains(status)) { list.add(0, status); } } public synchronized void addToBottom(IStatusModel status) { if(!list.contains(status)) { list.add(list.size(), status); } } public synchronized void addAll(Collection<IStatusModel> statuses) { for(IStatusModel status : statuses) { addToBottom(status); } } public synchronized IStatusModel getStatus(int index) { return list.get(index); } public synchronized int getStatusIndex(IStatusModel status) { return list.indexOf(status); } public synchronized void remove(int index) { list.remove(index); } public synchronized void remove(IStatusModel status) { list.remove(status); } public void clear() { list.clear(); } public synchronized IStatusModel[] getStatusList() { return list.toArray(new IStatusModel[list.size()]); } public synchronized int getCount() { return list.size(); } public synchronized void apply() { StatusListManager.getAdapter(this).notifyAdapter(); } public synchronized void applyForce() { StatusListManager.getAdapter(this).forceNotifyAdapter(); } public StatusListAdapter getAdapter() { return StatusListManager.getAdapter(this); } public abstract boolean checkStatus(IStatusModel status); }