//package com.forfan.bigbang.onestep;
//
//import android.content.ClipDescription;
//import android.content.ComponentName;
//import android.content.Context;
//import android.content.Intent;
//import android.content.pm.ResolveInfo;
//import android.graphics.drawable.Drawable;
//import android.text.TextUtils;
//import android.view.DragEvent;
//
//import com.smartisanos.sidebar.PendingDragEventTask;
//
//import java.lang.ref.SoftReference;
//import java.util.ArrayList;
//import java.util.Collections;
//import java.util.Comparator;
//import java.util.HashSet;
//import java.util.List;
//import java.util.Set;
//
//public class ResolveInfoGroup extends SidebarItem {
// private static final String TAG = ResolveInfoGroup.class.getName();
//
// private Context mContext;
// private List<ComponentName> mNames = new ArrayList<ComponentName>();
// private SoftReference<Drawable> mAvatar = null;
//
// public ResolveInfoGroup(Context context){
// super();
// mContext = context;
// }
//
// public String getPackageName(){
// if(size() > 0){
// return mNames.get(0).getPackageName();
// }else{
// return null;
// }
// }
//
// //format : name_1|name_2| .. |name_n
// public String getComponentNames(){
// if (size() <= 0) {
// return null;
// }
// List<String> ls = new ArrayList<String>();
// for(ComponentName name : mNames){
// ls.add(name.getClassName());
// }
// Collections.sort(ls);
// StringBuilder sb = new StringBuilder();
// sb.append(ls.get(0));
// for(int i = 1; i < ls.size(); ++ i){
// sb.append("|" + ls.get(i));
// }
// return sb.toString();
// }
//
// @Override
// public Drawable getAvatar() {
// Drawable ret;
// if (mAvatar != null) {
// ret = mAvatar.get();
// if (ret != null) {
// return ret;
// }
// }
// ret = loadIcon();
// if (ret != null) {
// mAvatar = new SoftReference<Drawable>(ret);
// }
// return ret;
// }
//
// public void clearAvatarCache() {
// if (mAvatar != null) {
// mAvatar.clear();
// mAvatar = null;
// }
// }
//
// private Drawable loadIcon() {
// if (size() > 0) {
// ComponentName name = mNames.get(0);
// Drawable drawable = IconRedirect.getRedirectIcon(name.getPackageName(), name.getClassName(), mContext);
// if (drawable != null) {
// return drawable;
// } else {
// List<ResolveInfo> ris = ResolveInfoManager.getInstance(mContext).getAllResolveInfoByPackageName(getPackageName());
// if (ris != null) {
// for (ResolveInfo ri : ris) {
// if (name.equals(new ComponentName(
// ri.activityInfo.packageName,
// ri.activityInfo.name))) {
// return ri.loadIcon(mContext.getPackageManager());
// }
// }
// }
// }
// }
// return null;
// }
//
// @Override
// public CharSequence getDisplayName() {
// if (size() > 0) {
// ComponentName cn = mNames.get(0);
// List<ResolveInfo> ris = ResolveInfoManager.getInstance(mContext).getAllResolveInfoByPackageName(getPackageName());
// if(ris != null) {
// for (ResolveInfo ri : ris) {
// if (cn.equals(new ComponentName(
// ri.activityInfo.packageName, ri.activityInfo.name))) {
// return ri.loadLabel(mContext.getPackageManager());
// }
// }
// }
// }
// return null;
// }
//
// public void onIconChanged() {
// if (mAvatar != null) {
// mAvatar.clear();
// mAvatar = null;
// }
// }
//
// public boolean acceptDragEvent(Context context, DragEvent event) {
// if (event == null || event.getClipDescription().getMimeTypeCount() <= 0
// || size() <= 0) {
// return false;
// }
//
// String mimeType = MimeUtils.getCommonMimeType(event);
// if (TextUtils.isEmpty(mimeType)) {
// return false;
// }
// if (ClipDescription.MIMETYPE_TEXT_PLAIN.equals(mimeType)) {
// Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
// sharingIntent.setType("text/plain");
// sharingIntent.setPackage(getPackageName());
// List<ResolveInfo> infos = context.getPackageManager().queryIntentActivities(sharingIntent, 0);
// if (infos != null) {
// for (ComponentName name : mNames) {
// for (ResolveInfo ri2 : infos) {
// if (name.equals(new ComponentName(ri2.activityInfo.packageName, ri2.activityInfo.name))) {
// return true;
// }
// }
// }
// }
// } else {
// Intent intent = new Intent();
// if (event.getClipDescription().getMimeTypeCount() > 1) {
// intent.setAction(Intent.ACTION_SEND_MULTIPLE);
// } else {
// intent.setAction(Intent.ACTION_SEND);
// }
// intent.addCategory(Intent.CATEGORY_DEFAULT);
// intent.setType(mimeType);
// intent.setPackage(getPackageName());
// List<ResolveInfo> infos = context.getPackageManager().queryIntentActivities(intent, 0);
// if (infos != null) {
// for (ComponentName name : mNames) {
// for (ResolveInfo ri2 : infos) {
// if (name.equals(new ComponentName(ri2.activityInfo.packageName, ri2.activityInfo.name))) {
// return true;
// }
// }
// }
// }
// }
// return false;
// }
//
// public boolean handleDragEvent(Context context, DragEvent event){
// Tracker.dragSuccess(0, getPackageName());
// boolean isPending = PendingDragEventTask.tryPending(context, event, this);
// if(isPending){
// return true;
// }
//
// if (event.getClipData().getItemCount() <= 0
// || event.getClipDescription() == null
// || event.getClipDescription().getMimeTypeCount() <= 0
// || size() <= 0) {
// return false;
// }
//
// String mimeType = MimeUtils.getCommonMimeType(event);
// if (TextUtils.isEmpty(mimeType)) {
// return false;
// }
// if (ClipDescription.MIMETYPE_TEXT_PLAIN.equals(mimeType) && !TextUtils.isEmpty(event.getClipData().getItemAt(0).getText())) {
// Intent intent = new Intent(android.content.Intent.ACTION_SEND);
// intent.addCategory(Intent.CATEGORY_DEFAULT);
// intent.setPackage(getPackageName());
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
// | Intent.FLAG_ACTIVITY_NEW_DOCUMENT
// | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
// intent.setType(mimeType);
// intent.putExtra(Intent.EXTRA_TEXT, event.getClipData().getItemAt(0).getText().toString());
// List<ResolveInfo> infos = context.getPackageManager().queryIntentActivities(intent, 0);
// if (infos != null) {
// for (ComponentName name : mNames) {
// for (ResolveInfo ri2 : infos) {
// if (name.equals(new ComponentName(ri2.activityInfo.packageName, ri2.activityInfo.name))) {
// intent.setComponent(name);
// Utils.dismissAllDialog(mContext);
// context.startActivity(intent);
// return true;
// }
// }
// }
// }
// }else{
// if(event.getClipData().getItemAt(0).getUri() == null){
// return false;
// }
// Intent intent = new Intent();
// intent.setType(mimeType);
// intent.addCategory(Intent.CATEGORY_DEFAULT);
// intent.setPackage(getPackageName());
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
// | Intent.FLAG_ACTIVITY_NEW_DOCUMENT
// | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
// if (event.getClipData().getItemCount() > 1) {
// intent.setAction(Intent.ACTION_SEND_MULTIPLE);
// intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, MimeUtils.getUris(event));
// } else {
// intent.setAction(Intent.ACTION_SEND);
// intent.putExtra(Intent.EXTRA_STREAM, event.getClipData().getItemAt(0).getUri());
// }
//
// List<ResolveInfo> infos = context.getPackageManager().queryIntentActivities(intent, 0);
// if (infos != null) {
// for (ComponentName name : mNames) {
// for (ResolveInfo ri2 : infos) {
// if (name.equals(new ComponentName(ri2.activityInfo.packageName, ri2.activityInfo.name))) {
// intent.setComponent(name);
// Utils.dismissAllDialog(mContext);
// context.startActivity(intent);
// return true;
// }
// }
// }
// }
// }
// return false;
// }
//
// @Override
// public boolean openUI(Context context) {
// // don't support this action
// return false;
// }
//
// public boolean containsComponent(ComponentName cn) {
// for (ComponentName name : mNames) {
// if (name.equals(cn)) {
// return true;
// }
// }
// return false;
// }
//
// public void add(ResolveInfo ri) {
// mNames.add(new ComponentName(ri.activityInfo.packageName, ri.activityInfo.name));
// }
//
// public int size() {
// return mNames.size();
// }
//
// public ComponentName get(int i) {
// return mNames.get(i);
// }
//
// public boolean isValid() {
// return fromData(mContext, getPackageName(), getComponentNames()) != null;
// }
//
// public static ResolveInfoGroup fromData(Context context, String pkgName, String componentNames) {
// List<ResolveInfoGroup> rigs = ResolveInfoManager.getInstance(context).getAllResolveInfoGroupByPackageName(pkgName);
// if (rigs != null) {
// for (ResolveInfoGroup rig : rigs) {
// String names = rig.getComponentNames();
// if (names != null && names.equals(componentNames)) {
// return rig;
// }
// }
// }
// return null;
// }
//
// public static boolean sameComponet(ResolveInfo ri1, ResolveInfo ri2){
// if(ri1.activityInfo == null || ri2.activityInfo == null){
// return false;
// }
// return ri1.activityInfo.packageName.equals(ri2.activityInfo.packageName) &&
// ri1.activityInfo.name.equals(ri2.activityInfo.name);
// }
//
// public static class IndexComparator implements Comparator<ResolveInfoGroup> {
//
// @Override
// public int compare(ResolveInfoGroup lhs, ResolveInfoGroup rhs) {
// if (lhs.getIndex() > rhs.getIndex()) {
// return -1;
// }
// if (lhs.getIndex() < rhs.getIndex()) {
// return 1;
// }
// return 0;
// }
// }
//
// public static class SameGroupComparator implements Comparator<ResolveInfo> {
// private static Set<String> sPACKAGES;
// private static List<String> sPACKAGE_ORDER;
// static {
// sPACKAGES = new HashSet<String>();
// sPACKAGES.add("com.android.contacts");
// sPACKAGE_ORDER = new ArrayList<String>();
// sPACKAGE_ORDER.add("com.sina.weibo");
// sPACKAGE_ORDER.add("com.tencent.mm");
// sPACKAGE_ORDER.add("com.tencent.mobileqq");
// sPACKAGE_ORDER.add("com.android.email");
// sPACKAGE_ORDER.add("com.smartisanos.notes");
// sPACKAGE_ORDER.add("com.android.mms");
// sPACKAGE_ORDER.add("com.android.calendar");
// }
//
// public static boolean notNeedSplit(String packageName) {
// /**
// if (sPACKAGES.contains(packageName)) {
// return true;
// }
// */
// return packageName.startsWith("com.smartisan");
// }
//
// public final int compare(ResolveInfo a, ResolveInfo b) {
// String pkgA = a.activityInfo.packageName;
// String pkgB = b.activityInfo.packageName;
// if (!pkgA.equals(pkgB)) {
// int orderA = sPACKAGE_ORDER.indexOf(pkgA);
// int orderB = sPACKAGE_ORDER.indexOf(pkgB);
// if (orderA != orderB) {
// if (orderA == -1) {
// return 1;
// } else if (orderB == -1) {
// return -1;
// } else {
// if (orderA < orderB) {
// return -1;
// } else {
// return 1;
// }
// }
// }
// return pkgA.compareTo(pkgB);
// }
// if (notNeedSplit(pkgA)) {
// return 0;
// }
// int la = getLabel(a);
// int lb = getLabel(b);
// if (la != lb) {
// if (la < lb) {
// return -1;
// } else {
// return 1;
// }
// } else {
// return 0;
// }
// }
//
// public static final int getLabel(ResolveInfo ri) {
// if (ri.labelRes != 0) {
// return ri.labelRes;
// }
// if(ri.activityInfo.labelRes != 0) {
// return ri.activityInfo.labelRes;
// }
// if (ri.activityInfo.applicationInfo.labelRes != 0) {
// return ri.activityInfo.applicationInfo.labelRes;
// }
// return 0;
// }
// }
//
// @Override
// public boolean equals(Object o) {
// ResolveInfoGroup rig = (ResolveInfoGroup) o;
// if (!TextUtils.equals(this.getPackageName(), rig.getPackageName())) {
// return false;
// }
// if (!TextUtils.equals(this.getComponentNames(), rig.getComponentNames())) {
// return false;
// }
// return true;
// }
//
// @Override
// public void delete() {
// ResolveInfoManager.getInstance(mContext).delete(this);
// }
//}