Unifying widget cell requirement computations
Change-Id: I5b37ebdab5b3defe7d05926882a6587d4c9f1081
This commit is contained in:
@@ -492,8 +492,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
||||
int h = preview.getIntrinsicHeight();
|
||||
if (createItemInfo instanceof PendingAddWidgetInfo) {
|
||||
PendingAddWidgetInfo createWidgetInfo = (PendingAddWidgetInfo) createItemInfo;
|
||||
int[] spanXY = CellLayout.rectToCell(getResources(),
|
||||
createWidgetInfo.minWidth, createWidgetInfo.minHeight, null);
|
||||
int[] spanXY = mLauncher.getSpanForWidget(createWidgetInfo, null);
|
||||
createItemInfo.spanX = spanXY[0];
|
||||
createItemInfo.spanY = spanXY[1];
|
||||
|
||||
@@ -986,8 +985,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
||||
Object rawInfo = items.get(i);
|
||||
if (rawInfo instanceof AppWidgetProviderInfo) {
|
||||
AppWidgetProviderInfo info = (AppWidgetProviderInfo) rawInfo;
|
||||
int[] cellSpans = CellLayout.rectToCell(getResources(),
|
||||
info.minWidth, info.minHeight, null);
|
||||
int[] cellSpans = mLauncher.getSpanForWidget(info, null);
|
||||
images.add(getWidgetPreview(info, cellSpans[0],cellSpans[1],
|
||||
cellWidth, cellHeight));
|
||||
} else if (rawInfo instanceof ResolveInfo) {
|
||||
@@ -1017,8 +1015,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
||||
// Fill in the widget information
|
||||
AppWidgetProviderInfo info = (AppWidgetProviderInfo) rawInfo;
|
||||
createItemInfo = new PendingAddWidgetInfo(info, null, null, "13");
|
||||
int[] cellSpans = CellLayout.rectToCell(getResources(),
|
||||
info.minWidth, info.minHeight, null);
|
||||
int[] cellSpans = mLauncher.getSpanForWidget(info, null);
|
||||
FastBitmapDrawable preview = new FastBitmapDrawable(data.generatedImages.get(i));
|
||||
widget.applyFromAppWidgetProviderInfo(info, preview, -1, cellSpans,
|
||||
mHolographicOutlineHelper);
|
||||
|
||||
@@ -852,14 +852,13 @@ public final class Launcher extends Activity
|
||||
int bottom = 0;
|
||||
}
|
||||
|
||||
Padding getPaddingForWidget(AppWidgetProviderInfo widgetInfo) {
|
||||
Padding getPaddingForWidget(ComponentName component) {
|
||||
PackageManager packageManager = getPackageManager();
|
||||
Padding p = new Padding();
|
||||
android.content.pm.ApplicationInfo appInfo;
|
||||
|
||||
try {
|
||||
appInfo = packageManager.getApplicationInfo(
|
||||
widgetInfo.provider.getPackageName(), 0);
|
||||
appInfo = packageManager.getApplicationInfo(component.getPackageName(), 0);
|
||||
} catch (Exception e) {
|
||||
// if we can't find the package, return 0 padding
|
||||
return p;
|
||||
@@ -878,6 +877,27 @@ public final class Launcher extends Activity
|
||||
return p;
|
||||
}
|
||||
|
||||
int[] getSpanForWidget(ComponentName component, int minWidth, int minHeight, int[] spanXY) {
|
||||
if (spanXY == null) {
|
||||
spanXY = new int[2];
|
||||
}
|
||||
|
||||
Padding padding = getPaddingForWidget(component);
|
||||
// We want to account for the extra amount of padding that we are adding to the widget
|
||||
// to ensure that it gets the full amount of space that it has requested
|
||||
int requiredWidth = minWidth + padding.left + padding.right;
|
||||
int requiredHeight = minHeight + padding.top + padding.bottom;
|
||||
return CellLayout.rectToCell(getResources(), requiredWidth, requiredHeight, null);
|
||||
}
|
||||
|
||||
int[] getSpanForWidget(AppWidgetProviderInfo info, int[] spanXY) {
|
||||
return getSpanForWidget(info.provider, info.minWidth, info.minHeight, spanXY);
|
||||
}
|
||||
|
||||
int[] getSpanForWidget(PendingAddWidgetInfo info, int[] spanXY) {
|
||||
return getSpanForWidget(info.componentName, info.minWidth, info.minHeight, spanXY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a widget to the workspace.
|
||||
*
|
||||
@@ -890,12 +910,7 @@ public final class Launcher extends Activity
|
||||
// Calculate the grid spans needed to fit this widget
|
||||
CellLayout layout = getCellLayout(container, screen);
|
||||
|
||||
Padding padding = getPaddingForWidget(appWidgetInfo);
|
||||
// We want to account for the extra amount of padding that we are adding to the widget
|
||||
// to ensure that it gets the full amount of space that it has requested
|
||||
int requiredWidth = appWidgetInfo.minWidth + padding.left + padding.right;
|
||||
int requiredHeight = appWidgetInfo.minHeight + padding.top + padding.bottom;
|
||||
int[] spanXY = layout.rectToCell(requiredWidth, requiredHeight, null);
|
||||
int[] spanXY = getSpanForWidget(appWidgetInfo, null);
|
||||
|
||||
// Try finding open space on Launcher screen
|
||||
// We have saved the position to which the widget was dragged-- this really only matters
|
||||
|
||||
@@ -119,7 +119,7 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView {
|
||||
public void setAppWidget(int appWidgetId, AppWidgetProviderInfo info) {
|
||||
super.setAppWidget(appWidgetId, info);
|
||||
// We add necessary padding to the AppWidgetHostView
|
||||
Launcher.Padding padding = mLauncher.getPaddingForWidget(info);
|
||||
Launcher.Padding padding = mLauncher.getPaddingForWidget(info.provider);
|
||||
setPadding(padding.left, padding.top, padding.right, padding.bottom);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user