diff options
Diffstat (limited to 'src/com/android/launcher3/LauncherAppWidgetProviderInfo.java')
-rw-r--r-- | src/com/android/launcher3/LauncherAppWidgetProviderInfo.java | 74 |
1 files changed, 49 insertions, 25 deletions
diff --git a/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java b/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java index e7f49b2ce..85af92f30 100644 --- a/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java +++ b/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java @@ -1,14 +1,14 @@ package com.android.launcher3; +import android.annotation.TargetApi; import android.appwidget.AppWidgetProviderInfo; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; +import android.os.Build; import android.os.Parcel; -import java.lang.reflect.Field; - /** * This class is a thin wrapper around the framework AppWidgetProviderInfo class. This class affords * a common object for describing both framework provided AppWidgets as well as custom widgets @@ -18,10 +18,11 @@ import java.lang.reflect.Field; public class LauncherAppWidgetProviderInfo extends AppWidgetProviderInfo { public boolean isCustomWidget = false; - int spanX = -1; - int spanY = -1; - int minSpanX = -1; - int minSpanY = -1; + + private int mSpanX = -1; + private int mSpanY = -1; + private int mMinSpanX = -1; + private int mMinSpanY = -1; public static LauncherAppWidgetProviderInfo fromProviderInfo(Context context, AppWidgetProviderInfo info) { @@ -34,15 +35,7 @@ public class LauncherAppWidgetProviderInfo extends AppWidgetProviderInfo { info.writeToParcel(p, 0); p.setDataPosition(0); LauncherAppWidgetProviderInfo lawpi = new LauncherAppWidgetProviderInfo(p); - - int[] minResizeSpan = Launcher.getMinSpanForWidget(context, lawpi); - int[] span = Launcher.getSpanForWidget(context, lawpi); - - lawpi.spanX = span[0]; - lawpi.spanY = span[1]; - lawpi.minSpanX = minResizeSpan[0]; - lawpi.minSpanY = minResizeSpan[1]; - + p.recycle(); return lawpi; } @@ -59,31 +52,62 @@ public class LauncherAppWidgetProviderInfo extends AppWidgetProviderInfo { previewImage = widget.getPreviewImage(); initialLayout = widget.getWidgetLayout(); resizeMode = widget.getResizeMode(); - - spanX = widget.getSpanX(); - spanY = widget.getSpanY(); - minSpanX = widget.getMinSpanX(); - minSpanY = widget.getMinSpanY(); } + @TargetApi(Build.VERSION_CODES.LOLLIPOP) public String getLabel(PackageManager packageManager) { if (isCustomWidget) { - return label.toString().trim(); + return Utilities.trim(label); } return super.loadLabel(packageManager); } + @TargetApi(Build.VERSION_CODES.LOLLIPOP) public Drawable getIcon(Context context, IconCache cache) { if (isCustomWidget) { return cache.getFullResIcon(provider.getPackageName(), icon); } - return super.loadIcon(context, cache.getFullResIconDpi()); + return super.loadIcon(context, + LauncherAppState.getInstance().getInvariantDeviceProfile().fillResIconDpi); } - public String toString() { + public String toString(PackageManager pm) { if (isCustomWidget) { - return "LauncherAppWidgetProviderInfo(" + provider + ")"; + return "WidgetProviderInfo(" + provider + ")"; + } + return String.format("WidgetProviderInfo provider:%s package:%s short:%s label:%s", + provider.toString(), provider.getPackageName(), provider.getShortClassName(), getLabel(pm)); + } + + public int getSpanX(Launcher launcher) { + lazyLoadSpans(launcher); + return mSpanX; + } + + public int getSpanY(Launcher launcher) { + lazyLoadSpans(launcher); + return mSpanY; + } + + public int getMinSpanX(Launcher launcher) { + lazyLoadSpans(launcher); + return mMinSpanX; + } + + public int getMinSpanY(Launcher launcher) { + lazyLoadSpans(launcher); + return mMinSpanY; + } + + private void lazyLoadSpans(Launcher launcher) { + if (mSpanX < 0 || mSpanY < 0 || mMinSpanX < 0 || mMinSpanY < 0) { + int[] minResizeSpan = launcher.getMinSpanForWidget(this); + int[] span = launcher.getSpanForWidget(this); + + mSpanX = span[0]; + mSpanY = span[1]; + mMinSpanX = minResizeSpan[0]; + mMinSpanY = minResizeSpan[1]; } - return super.toString(); } } |