package com.android.launcher3.widget;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import com.android.launcher3.IconCache;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherAppWidgetProviderInfo;
import com.android.launcher3.LauncherModel.WidgetAndShortcutNameComparator;
import com.android.launcher3.compat.UserHandleCompat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Widgets data model that is used by the adapters of the widget views and controllers.
*
*
The widgets and shortcuts are organized using package name as its index.
*/
public class WidgetsModel {
private static final String TAG = "WidgetsModel";
private static final boolean DEBUG = false;
/* List of packages that is tracked by this model. */
private List mPackageNames = new ArrayList<>();
private Map mPackageItemInfoList = new HashMap<>();
/* Map of widgets and shortcuts that are tracked per package. */
private Map> mWidgetsList = new HashMap<>();
/* Notifies the adapter when data changes. */
private RecyclerView.Adapter mAdapter;
private Comparator mWidgetAndShortcutNameComparator;
private IconCache mIconCache;
public WidgetsModel(Context context, RecyclerView.Adapter adapter) {
mAdapter = adapter;
mWidgetAndShortcutNameComparator = new WidgetAndShortcutNameComparator(context);
mIconCache = LauncherAppState.getInstance().getIconCache();
}
// Access methods that may be deleted if the private fields are made package-private.
public int getPackageSize() {
return mPackageNames.size();
}
// Access methods that may be deleted if the private fields are made package-private.
public String getPackageName(int pos) {
return mPackageNames.get(pos);
}
public PackageItemInfo getPackageItemInfo(String packageName) {
return mPackageItemInfoList.get(packageName);
}
public List