diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2015-04-13 22:59:50 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-04-13 22:59:50 +0000 |
commit | be5c4ae5a4ddedf78c50317338e323e3bf1a5aec (patch) | |
tree | 34516a02c6e4224a6eb07e8893d2b1a9e91a6c2d /src | |
parent | ece6c8b20b7bcfa0734c2fd4cd3fc93bc227699f (diff) | |
parent | 4e8fb91cf19b7d621de8cbed2bde2c8dac734121 (diff) | |
download | android_packages_apps_Trebuchet-be5c4ae5a4ddedf78c50317338e323e3bf1a5aec.tar.gz android_packages_apps_Trebuchet-be5c4ae5a4ddedf78c50317338e323e3bf1a5aec.tar.bz2 android_packages_apps_Trebuchet-be5c4ae5a4ddedf78c50317338e323e3bf1a5aec.zip |
Merge "WidgetTray improvement" into ub-launcher3-burnaby
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/widget/PackageItemInfo.java | 5 | ||||
-rw-r--r-- | src/com/android/launcher3/widget/WidgetCell.java | 13 | ||||
-rw-r--r-- | src/com/android/launcher3/widget/WidgetsListAdapter.java | 30 | ||||
-rw-r--r-- | src/com/android/launcher3/widget/WidgetsModel.java | 64 |
5 files changed, 49 insertions, 65 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 3d2a34647..42e145bc8 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -132,7 +132,7 @@ public class Launcher extends Activity implements View.OnClickListener, OnLongClickListener, LauncherModel.Callbacks, View.OnTouchListener, PageSwitchListener, LauncherProviderChangeListener, LauncherStateTransitionAnimation.Callbacks { - static final String TAG = "Launcher - MERONG"; + static final String TAG = "Launcher"; static final boolean LOGD = true; static final boolean PROFILE_STARTUP = false; diff --git a/src/com/android/launcher3/widget/PackageItemInfo.java b/src/com/android/launcher3/widget/PackageItemInfo.java index d7edf2294..1a1de55c2 100644 --- a/src/com/android/launcher3/widget/PackageItemInfo.java +++ b/src/com/android/launcher3/widget/PackageItemInfo.java @@ -39,11 +39,12 @@ public class PackageItemInfo extends ItemInfo { */ public boolean usingLowResIcon; - public ComponentName componentName; + public String packageName; int flags = 0; - PackageItemInfo() { + PackageItemInfo(String packageName) { + this.packageName = packageName; } @Override diff --git a/src/com/android/launcher3/widget/WidgetCell.java b/src/com/android/launcher3/widget/WidgetCell.java index 93ee94a59..d10c3049e 100644 --- a/src/com/android/launcher3/widget/WidgetCell.java +++ b/src/com/android/launcher3/widget/WidgetCell.java @@ -47,7 +47,7 @@ import com.android.launcher3.compat.AppWidgetManagerCompat; */ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { - private static final String TAG = "PagedViewWidget"; + private static final String TAG = "WidgetCell"; private static final boolean DEBUG = false; // Temporary preset width and height of the image to keep them aligned. @@ -120,7 +120,16 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { Log.d(TAG, String.format("[tag=%s] onDetachedFromWindow", getTagToString())); } super.onDetachedFromWindow(); - deletePreview(true); + deletePreview(false); + } + + public void reset() { + ImageView image = (ImageView) findViewById(R.id.widget_preview); + final TextView name = (TextView) findViewById(R.id.widget_name); + final TextView dims = (TextView) findViewById(R.id.widget_dims); + image.setImageDrawable(null); + name.setText(null); + dims.setText(null); } public void deletePreview(boolean recycleImage) { diff --git a/src/com/android/launcher3/widget/WidgetsListAdapter.java b/src/com/android/launcher3/widget/WidgetsListAdapter.java index 8d1f20c0c..afeb2d385 100644 --- a/src/com/android/launcher3/widget/WidgetsListAdapter.java +++ b/src/com/android/launcher3/widget/WidgetsListAdapter.java @@ -88,14 +88,13 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> { @Override public void onBindViewHolder(WidgetsRowViewHolder holder, int pos) { - String packageName = mWidgetsModel.getPackageName(pos); - List<Object> infoList = mWidgetsModel.getSortedWidgets(packageName); + List<Object> infoList = mWidgetsModel.getSortedWidgets(pos); ViewGroup row = ((ViewGroup) holder.getContent().findViewById(R.id.widgets_cell_list)); if (DEBUG) { Log.d(TAG, String.format( - "onBindViewHolder [pos=%d, packageName=%s, widget#=%d, row.getChildCount=%d]", - pos, packageName, infoList.size(), row.getChildCount())); + "onBindViewHolder [pos=%d, widget#=%d, row.getChildCount=%d]", + pos, infoList.size(), row.getChildCount())); } // Add more views. @@ -120,11 +119,11 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> { } // Bind the views in the application info section. - PackageItemInfo infoOut = mWidgetsModel.getPackageItemInfo(packageName); + PackageItemInfo infoOut = mWidgetsModel.getPackageItemInfo(pos); if (infoOut.usingLowResIcon) { - mIconCache.getTitleAndIconForApp(packageName, UserHandleCompat.myUserHandle(), - false /* useLowResIcon */, infoOut); - mWidgetsModel.setPackageItemInfo(packageName, infoOut); + // TODO(hyunyoungs): call this in none UI thread in the same way as BubbleTextView. + mIconCache.getTitleAndIconForApp(infoOut.packageName, + UserHandleCompat.myUserHandle(), false /* useLowResIcon */, infoOut); } ((TextView) holder.getContent().findViewById(R.id.section)).setText(infoOut.title); ImageView iv = (ImageView) holder.getContent().findViewById(R.id.section_image); @@ -133,7 +132,8 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> { // Bind the view in the widget horizontal tray region. for (int i=0; i < infoList.size(); i++) { WidgetCell widget = (WidgetCell) row.getChildAt(i); - if (getWidgetPreviewLoader() == null || widget == null) { + widget.reset(); + if (getWidgetPreviewLoader() == null) { return; } if (infoList.get(i) instanceof LauncherAppWidgetProviderInfo) { @@ -150,7 +150,6 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> { widget.setVisibility(View.VISIBLE); widget.ensurePreview(); } - // TODO(hyunyoungs): Draw the scrollable indicator. } @Override @@ -175,15 +174,4 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> { } return mWidgetPreviewLoader; } - - /** - * TODO(hyunyoungs): this is temporary. Figure out the width of each widget cell - * and then check if the total sum is longer than the parent width. - */ - private void addScrollableIndicator(int contentSize, ViewGroup parent) { - if (contentSize > 2) { - ViewGroup indicator = (ViewGroup) parent.findViewById(R.id.scrollable_indicator); - indicator.setVisibility(View.VISIBLE); - } - } } diff --git a/src/com/android/launcher3/widget/WidgetsModel.java b/src/com/android/launcher3/widget/WidgetsModel.java index 463c79ec2..1447befb2 100644 --- a/src/com/android/launcher3/widget/WidgetsModel.java +++ b/src/com/android/launcher3/widget/WidgetsModel.java @@ -31,12 +31,10 @@ public class WidgetsModel { private static final boolean DEBUG = false; /* List of packages that is tracked by this model. */ - private List<String> mPackageNames = new ArrayList<>(); - - private Map<String, PackageItemInfo> mPackageItemInfoList = new HashMap<>(); + private List<PackageItemInfo> mPackageItemInfos = new ArrayList<>(); /* Map of widgets and shortcuts that are tracked per package. */ - private Map<String, ArrayList<Object>> mWidgetsList = new HashMap<>(); + private Map<PackageItemInfo, ArrayList<Object>> mWidgetsList = new HashMap<>(); /* Notifies the adapter when data changes. */ private RecyclerView.Adapter mAdapter; @@ -53,20 +51,16 @@ public class WidgetsModel { // Access methods that may be deleted if the private fields are made package-private. public int getPackageSize() { - return mPackageNames.size(); + return mPackageItemInfos.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 PackageItemInfo getPackageItemInfo(int pos) { + return mPackageItemInfos.get(pos); } - public List<Object> getSortedWidgets(String packageName) { - return mWidgetsList.get(packageName); + public List<Object> getSortedWidgets(int pos) { + return mWidgetsList.get(mPackageItemInfos.get(pos)); } public void addWidgetsAndShortcuts(ArrayList<Object> widgetsShortcuts, PackageManager pm) { @@ -74,8 +68,10 @@ public class WidgetsModel { Log.d(TAG, "addWidgetsAndShortcuts, widgetsShortcuts#=" + widgetsShortcuts.size()); } + // Temporary list for {@link PackageItemInfos} to avoid having to go through + // {@link mPackageItemInfos} to locate the key to be used for {@link #mWidgetsList} + HashMap<String, PackageItemInfo> tmpPackageItemInfos = new HashMap<>(); // clear the lists. - mPackageNames.clear(); mWidgetsList.clear(); // add and update. @@ -90,51 +86,41 @@ public class WidgetsModel { } else { Log.e(TAG, String.format("addWidgetsAndShortcuts, nothing added for class=%s", o.getClass().toString())); - } - ArrayList<Object> widgetsShortcutsList = mWidgetsList.get(packageName); + PackageItemInfo pInfo = tmpPackageItemInfos.get(packageName); + ArrayList<Object> widgetsShortcutsList = mWidgetsList.get(pInfo); if (widgetsShortcutsList != null) { widgetsShortcutsList.add(o); } else { widgetsShortcutsList = new ArrayList<Object>(); widgetsShortcutsList.add(o); - mWidgetsList.put(packageName, widgetsShortcutsList); - mPackageNames.add(packageName); - } - } - for (String packageName: mPackageNames) { - PackageItemInfo pInfo = mPackageItemInfoList.get(packageName); - if (pInfo == null) { - pInfo = new PackageItemInfo(); + + pInfo = new PackageItemInfo(packageName); mIconCache.getTitleAndIconForApp(packageName, UserHandleCompat.myUserHandle(), true /* useLowResIcon */, pInfo); - mPackageItemInfoList.put(packageName, pInfo); + mWidgetsList.put(pInfo, widgetsShortcutsList); + tmpPackageItemInfos.put(packageName, pInfo); + mPackageItemInfos.add(pInfo); } } // sort. - sortPackageList(); - for (String packageName: mPackageNames) { - Collections.sort(mWidgetsList.get(packageName), mWidgetAndShortcutNameComparator); + sortPackageItemInfos(); + for (PackageItemInfo p: mPackageItemInfos) { + Collections.sort(mWidgetsList.get(p), mWidgetAndShortcutNameComparator); } // notify. mAdapter.notifyDataSetChanged(); } - private void sortPackageList() { - Collections.sort(mPackageNames, new Comparator<String>() { + private void sortPackageItemInfos() { + Collections.sort(mPackageItemInfos, new Comparator<PackageItemInfo>() { @Override - public int compare(String lhs, String rhs) { - String lhsTitle = mPackageItemInfoList.get(lhs).title.toString(); - String rhsTitle = mPackageItemInfoList.get(rhs).title.toString(); - return lhsTitle.compareTo(rhsTitle); + public int compare(PackageItemInfo lhs, PackageItemInfo rhs) { + return lhs.title.toString().compareTo(rhs.title.toString()); } }); } - - public void setPackageItemInfo(String packageName, PackageItemInfo infoOut) { - mPackageItemInfoList.put(packageName, infoOut); - } -} +}
\ No newline at end of file |