Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4a0e1b40 authored by Steven Ng's avatar Steven Ng
Browse files

Include widget padding & boarder spacing in widget preview size estimation

Test: Sideload Google dev clock and verify the 5x5 widget preview is
      rendered correctly.
      Verify conversation widget preview is rendered correctly in the
      full widgets picker and priority flow (aka pin widget flow).
Bug: 189975670
Change-Id: I4b0212ae347044c970ba40b9b33439448a6aa941
parent 5cc44eb7
Loading
Loading
Loading
Loading
+30 −15
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.android.launcher3.Utilities.ATLEAST_S;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.CancellationSignal;
@@ -213,12 +214,8 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {
                    return false;
                }
            };
            mAppWidgetHostViewPreview.setAppWidget(/* appWidgetId= */ -1, item.widgetInfo);
            Rect padding = new Rect();
            mAppWidgetHostViewPreview.getWidgetInset(mActivity.getDeviceProfile(), padding);
            mAppWidgetHostViewPreview.setPadding(padding.left, padding.top, padding.right,
                    padding.bottom);
            mAppWidgetHostViewPreview.updateAppWidget(/* remoteViews= */ mRemoteViewsPreview);
            setAppWidgetHostViewPreview(mAppWidgetHostViewPreview, item.widgetInfo,
                    mRemoteViewsPreview);
            return;
        }

@@ -234,14 +231,29 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {
            // rendering a preview layout for work profile apps yet. For non-work profile layout, a
            // proper solution is to use RemoteViews(PackageName, LayoutId).
            launcherAppWidgetProviderInfo.initialLayout = item.widgetInfo.previewLayout;
            mAppWidgetHostViewPreview.setAppWidget(/* appWidgetId= */ -1,
                    launcherAppWidgetProviderInfo);
            Rect padding = new Rect();
            mAppWidgetHostViewPreview.getWidgetInset(mActivity.getDeviceProfile(), padding);
            mAppWidgetHostViewPreview.setPadding(padding.left, padding.top, padding.right,
                    padding.bottom);
            mAppWidgetHostViewPreview.updateAppWidget(/* remoteViews= */ null);
            setAppWidgetHostViewPreview(mAppWidgetHostViewPreview,
                    launcherAppWidgetProviderInfo, /* remoteViews= */ null);
        }
    }

    private void setAppWidgetHostViewPreview(
            NavigableAppWidgetHostView appWidgetHostViewPreview,
            LauncherAppWidgetProviderInfo providerInfo,
            @Nullable RemoteViews remoteViews) {
        appWidgetHostViewPreview.setAppWidget(/* appWidgetId= */ -1, providerInfo);
        Rect padding;
        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
        if (deviceProfile.shouldInsetWidgets()) {
            padding = new Rect();
            appWidgetHostViewPreview.getWidgetInset(deviceProfile, padding);
        } else {
            padding = deviceProfile.inv.defaultWidgetPadding;
        }
        appWidgetHostViewPreview.setPadding(padding.left, padding.top, padding.right,
                padding.bottom);
        mPreviewWidth += padding.left + padding.right;
        mPreviewHeight += padding.top + padding.bottom;
        appWidgetHostViewPreview.updateAppWidget(remoteViews);
    }

    public WidgetImageView getWidgetView() {
@@ -343,8 +355,11 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {
    /** Sets the widget preview image size, in number of cells, and preview scale. */
    public void setPreviewSize(int spanX, int spanY, float previewScale) {
        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
        mPreviewWidth = deviceProfile.cellWidthPx * spanX + mPreviewPadding;
        mPreviewHeight = deviceProfile.cellHeightPx * spanY + mPreviewPadding;
        Point cellSize = deviceProfile.getCellSize();
        mPreviewWidth = cellSize.x * spanX + mPreviewPadding
                + deviceProfile.cellLayoutBorderSpacingPx * (spanX - 1);
        mPreviewHeight = cellSize.y * spanY + mPreviewPadding
                + deviceProfile.cellLayoutBorderSpacingPx * (spanY - 1);
        mPreviewScale = previewScale;
    }