package com.smartisanos.sidebar.util; import java.util.ArrayList; import java.util.List; import com.smartisanos.sidebar.PendingDragEventTask; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.view.DragEvent; public abstract class ContactItem extends SidebarItem { protected Context mContext; protected Drawable mAvatar; protected Bitmap mAvatarWithGray; protected CharSequence mDisplayName; public ContactItem(Context context, Bitmap avatar, CharSequence displayName) { mContext = context; mAvatar = new BitmapDrawable(context.getResources(), avatar); mDisplayName = displayName; } public Drawable getAvatar() { return mAvatar; } public CharSequence getDisplayName() { return mDisplayName; } public final void delete(){ ContactManager.getInstance(mContext).remove(this); } /** * this method can only be called by ContactManger. don't invoke it in other place! * */ public abstract void deleteFromDatabase(); public abstract void save(); public abstract int getTypeIcon(); public abstract String getPackageName(); public abstract boolean sameContact(ContactItem ci); public static List<ContactItem> getContactList(Context context){ List<ContactItem> all = new ArrayList<ContactItem>(); all.addAll(DingDingContact.getContacts(context)); all.addAll(WechatContact.getContacts(context)); all.addAll(MmsContact.getContacts(context)); all.addAll(MailContact.getContacts(context)); return all; } @Override public boolean handleDragEvent(Context context, DragEvent event) { if(PendingDragEventTask.tryPending(mContext, event, this)){ return true; } return false; } }