package com.smartisanos.sidebar.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import com.smartisanos.sidebar.R;
import com.smartisanos.sidebar.SidebarController;
public class AddContactManager extends DataManager {
private static final String TAG = AddContactManager.class.getName();
private volatile static AddContactManager sInstance;
public synchronized static AddContactManager getInstance(Context context){
if(sInstance == null){
synchronized(AddContactManager.class){
if(sInstance == null){
sInstance = new AddContactManager(context);
}
}
}
return sInstance;
}
private Map<AddContactItem, String> mMapPackageToItem;
private Context mContext;
private List<AddContactItem> mItemList = new ArrayList<AddContactItem>();
private AddContactManager(Context context){
mContext = context;
mMapPackageToItem = new HashMap<AddContactItem, String>();
mMapPackageToItem.put(new AddContactItem(R.drawable.icon_add_ding, R.string.add_contact_dingding, mDingDingListener), DingDingContact.PKG_NAME);
mMapPackageToItem.put(new AddContactItem(R.drawable.icon_add_sms, R.string.add_contact_mms, mMmsListener), MmsContact.PKG_NAME);
mMapPackageToItem.put(new AddContactItem(R.drawable.icon_add_mail, R.string.add_contact_mail, mMailListener), MailContact.PKG_NAME);
mMapPackageToItem.put(new AddContactItem(R.drawable.icon_add_wechat, R.string.add_contact_wechat, mWechatListener), WechatContact.PKG_NAME);
updateData();
}
public List<AddContactItem> getList() {
List<AddContactItem> list = new ArrayList<AddContactItem>();
synchronized (mItemList) {
list.addAll(mItemList);
}
return list;
}
private void updateData() {
List<AddContactItem> list = new ArrayList<AddContactItem>();
for (Map.Entry<AddContactItem, String> entry : mMapPackageToItem.entrySet()) {
if (Utils.isPackageInstalled(mContext, entry.getValue())) {
list.add(entry.getKey());
}
}
synchronized (mItemList) {
mItemList.clear();
mItemList.addAll(list);
}
}
public void onPackageAdded(String packageName) {
updateData();
notifyListener();
}
public void onPackageRemoved(String packageName) {
updateData();
notifyListener();
}
private View.OnClickListener mDingDingListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.alibaba.android.rimet.ShortCutSelect");
intent.putExtra("can_choose_current_user", true);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
try{
Utils.dismissAllDialog(mContext);
mContext.startActivity(intent);
}catch(ActivityNotFoundException e){
// TODO show dialog
}
}
};
private View.OnClickListener mWechatListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
builder.setView(R.layout.wechat_hint)
.setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
Utils.dismissAllDialog(mContext);
Intent intent = new Intent(Intent.ACTION_MAIN);
ComponentName cmp = new ComponentName("com.tencent.mm","com.tencent.mm.ui.LauncherUI");
intent.setComponent(cmp);
//intent.setPackage("com.tencent.mm");
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.d(TAG, "wechat not installed !", e);
}
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
};
private View.OnClickListener mMmsListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.smartisanos.sidebar", "com.smartisanos.sidebar.SelectContactActivity"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try{
Utils.dismissAllDialog(mContext);
mContext.startActivity(intent);
}catch(ActivityNotFoundException e){
// NA
Log.d(TAG, "not found !", e);
}
}
};
private View.OnClickListener mMailListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.smartisanos.sidebar", "com.smartisanos.sidebar.SelectMailContactActivity"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try{
Utils.dismissAllDialog(mContext);
mContext.startActivity(intent);
}catch(ActivityNotFoundException e){
// NA
Log.d(TAG, "not found !", e);
}
}
};
public static class AddContactItem{
public final int iconId;
public final int labelId;
public final View.OnClickListener mListener;
public AddContactItem(int iconId, int labelId, View.OnClickListener listener){
this.iconId = iconId;
this.labelId = labelId;
this.mListener = listener;
}
}
}