package com.mogujie.tt.ui.utils;
import java.util.List;
import android.content.Context;
import android.view.View;
import com.mogujie.tt.imlib.proto.ContactEntity;
import com.mogujie.tt.imlib.proto.GroupEntity;
import com.mogujie.tt.imlib.utils.IMUIHelper;
import com.mogujie.tt.log.Logger;
public abstract class EntityList {
public List<Object> list;
protected List<Object> backupList;
protected boolean searchMode = false;
public boolean isSearchMode() {
return searchMode;
}
public void setSearchMode(boolean searchMode) {
this.searchMode = searchMode;
}
Logger logger = Logger.getLogger(EntityList.class);
public EntityList(List<Object> list) {
this.list = list;
this.backupList = list;
}
public void recoverFromBackup() {
this.list = this.backupList;
}
public abstract String getSectionName(int position);
public void onItemClick(Context ctx, View view, int position) {
Object object = list.get(position);
if (object instanceof ContactEntity) {
handleContactItemClick(ctx, (ContactEntity)object);
} else if (object instanceof GroupEntity) {
handleGroupItemClick(ctx, (GroupEntity)object);
}
}
protected void handleContactItemClick(Context ctx, ContactEntity contact) {
IMUIHelper.openContactChatActivity(ctx, contact);
}
protected void handleGroupItemClick(Context ctx, GroupEntity group) {
IMUIHelper.openGroupChatActivity(ctx, group);
}
public void onSearch(String key) {
if (key.isEmpty()) {
searchMode = false;
recoverFromBackup();
return;
}
searchMode = true;
onSearchImpl(key);
}
protected abstract void onSearchImpl(String key);
// could be find indexed by Chinase pinyin first character
public boolean isPinYinIndexable() {
return false;
}
public int getPinYinFirstCharacter(int position) {
return 0;
}
public boolean shouldCheckBoxChecked(int position) {
return false;
}
public void onItemLongClick(View view, Context ctx, int position) {
if (position >= list.size()) {
logger.e("position:%d is overflow", position);
return;
}
Object obj = list.get(position);
if (obj instanceof ContactEntity) {
IMUIHelper.handleContactItemLongClick(ctx, (ContactEntity) obj);
}
}
}