Search in sources :

Example 16 with ShortcutConfigActivityInfo

use of com.android.launcher3.compat.ShortcutConfigActivityInfo in project android_packages_apps_Trebuchet by LineageOS.

the class WidgetPreviewLoader method generateShortcutPreview.

private Bitmap generateShortcutPreview(BaseActivity launcher, ShortcutConfigActivityInfo info, int maxWidth, int maxHeight, Bitmap preview) {
    int iconSize = launcher.getDeviceProfile().allAppsIconSizePx;
    int padding = launcher.getResources().getDimensionPixelSize(R.dimen.widget_preview_shortcut_padding);
    int size = iconSize + 2 * padding;
    if (maxHeight < size || maxWidth < size) {
        throw new RuntimeException("Max size is too small for preview");
    }
    final Canvas c = new Canvas();
    if (preview == null || preview.getWidth() < size || preview.getHeight() < size) {
        preview = Bitmap.createBitmap(size, size, Config.ARGB_8888);
        c.setBitmap(preview);
    } else {
        if (preview.getWidth() > size || preview.getHeight() > size) {
            preview.reconfigure(size, size, preview.getConfig());
        }
        // Reusing bitmap. Clear it.
        c.setBitmap(preview);
        c.drawColor(0, PorterDuff.Mode.CLEAR);
    }
    RectF boxRect = drawBoxWithShadow(c, size, size);
    LauncherIcons li = LauncherIcons.obtain(mContext);
    Bitmap icon = li.createBadgedIconBitmap(mutateOnMainThread(info.getFullResIcon(mIconCache)), Process.myUserHandle(), 0).icon;
    li.recycle();
    Rect src = new Rect(0, 0, icon.getWidth(), icon.getHeight());
    boxRect.set(0, 0, iconSize, iconSize);
    boxRect.offset(padding, padding);
    c.drawBitmap(icon, src, boxRect, new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG));
    c.setBitmap(null);
    return preview;
}
Also used : RectF(android.graphics.RectF) Bitmap(android.graphics.Bitmap) Rect(android.graphics.Rect) LauncherIcons(com.android.launcher3.icons.LauncherIcons) Canvas(android.graphics.Canvas) Paint(android.graphics.Paint) Paint(android.graphics.Paint)

Example 17 with ShortcutConfigActivityInfo

use of com.android.launcher3.compat.ShortcutConfigActivityInfo in project android_packages_apps_Trebuchet by LineageOS.

the class Utilities method getFullDrawable.

/**
 * Returns the full drawable for info without any flattening or pre-processing.
 *
 * @param outObj this is set to the internal data associated with {@param info},
 *               eg {@link LauncherActivityInfo} or {@link ShortcutInfo}.
 */
public static Drawable getFullDrawable(Launcher launcher, ItemInfo info, int width, int height, Object[] outObj) {
    LauncherAppState appState = LauncherAppState.getInstance(launcher);
    if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION) {
        LauncherActivityInfo activityInfo = launcher.getSystemService(LauncherApps.class).resolveActivity(info.getIntent(), info.user);
        outObj[0] = activityInfo;
        return activityInfo == null ? null : new IconProvider(launcher).getIconForUI(activityInfo, launcher.getDeviceProfile().inv.fillResIconDpi);
    } else if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
        if (info instanceof PendingAddShortcutInfo) {
            ShortcutConfigActivityInfo activityInfo = ((PendingAddShortcutInfo) info).activityInfo;
            outObj[0] = activityInfo;
            return activityInfo.getFullResIcon(appState.getIconCache());
        }
        if (info.getIntent() == null || info.getIntent().getPackage() == null)
            return null;
        List<ShortcutInfo> si = ShortcutKey.fromItemInfo(info).buildRequest(launcher).query(ShortcutRequest.ALL);
        if (si.isEmpty()) {
            return null;
        } else {
            outObj[0] = si.get(0);
            return ShortcutCachingLogic.getIcon(launcher, si.get(0), appState.getInvariantDeviceProfile().fillResIconDpi);
        }
    } else if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
        FolderAdaptiveIcon icon = FolderAdaptiveIcon.createFolderAdaptiveIcon(launcher, info.id, new Point(width, height));
        if (icon == null) {
            return null;
        }
        outObj[0] = icon;
        return icon;
    } else {
        return null;
    }
}
Also used : FolderAdaptiveIcon(com.android.launcher3.dragndrop.FolderAdaptiveIcon) LauncherActivityInfo(android.content.pm.LauncherActivityInfo) PendingAddShortcutInfo(com.android.launcher3.widget.PendingAddShortcutInfo) ShortcutConfigActivityInfo(com.android.launcher3.pm.ShortcutConfigActivityInfo) LauncherApps(android.content.pm.LauncherApps) List(java.util.List) Point(android.graphics.Point) IconProvider(com.android.launcher3.icons.IconProvider)

Example 18 with ShortcutConfigActivityInfo

use of com.android.launcher3.compat.ShortcutConfigActivityInfo in project android_packages_apps_Launcher3 by AOSPA.

the class WidgetsModel method update.

/**
 * @param packageUser If null, all widgets and shortcuts are updated and returned, otherwise
 *                    only widgets and shortcuts associated with the package/user are.
 */
public List<ComponentWithLabelAndIcon> update(LauncherAppState app, @Nullable PackageUserKey packageUser) {
    Preconditions.assertWorkerThread();
    Context context = app.getContext();
    final ArrayList<WidgetItem> widgetsAndShortcuts = new ArrayList<>();
    List<ComponentWithLabelAndIcon> updatedItems = new ArrayList<>();
    try {
        InvariantDeviceProfile idp = app.getInvariantDeviceProfile();
        PackageManager pm = app.getContext().getPackageManager();
        // Widgets
        WidgetManagerHelper widgetManager = new WidgetManagerHelper(context);
        for (AppWidgetProviderInfo widgetInfo : widgetManager.getAllProviders(packageUser)) {
            LauncherAppWidgetProviderInfo launcherWidgetInfo = LauncherAppWidgetProviderInfo.fromProviderInfo(context, widgetInfo);
            widgetsAndShortcuts.add(new WidgetItem(launcherWidgetInfo, idp, app.getIconCache()));
            updatedItems.add(launcherWidgetInfo);
        }
        // Shortcuts
        for (ShortcutConfigActivityInfo info : queryList(context, packageUser)) {
            widgetsAndShortcuts.add(new WidgetItem(info, app.getIconCache(), pm));
            updatedItems.add(info);
        }
        setWidgetsAndShortcuts(widgetsAndShortcuts, app, packageUser);
    } catch (Exception e) {
        if (!FeatureFlags.IS_STUDIO_BUILD && Utilities.isBinderSizeError(e)) {
        // the returned value may be incomplete and will not be refreshed until the next
        // time Launcher starts.
        // TODO: after figuring out a repro step, introduce a dirty bit to check when
        // onResume is called to refresh the widget provider list.
        } else {
            throw e;
        }
    }
    return updatedItems;
}
Also used : Context(android.content.Context) LauncherAppWidgetProviderInfo(com.android.launcher3.widget.LauncherAppWidgetProviderInfo) InvariantDeviceProfile(com.android.launcher3.InvariantDeviceProfile) ArrayList(java.util.ArrayList) PackageManager(android.content.pm.PackageManager) ComponentWithLabelAndIcon(com.android.launcher3.icons.ComponentWithLabelAndIcon) AppWidgetProviderInfo(android.appwidget.AppWidgetProviderInfo) LauncherAppWidgetProviderInfo(com.android.launcher3.widget.LauncherAppWidgetProviderInfo) ShortcutConfigActivityInfo(com.android.launcher3.pm.ShortcutConfigActivityInfo) WidgetManagerHelper(com.android.launcher3.widget.WidgetManagerHelper)

Example 19 with ShortcutConfigActivityInfo

use of com.android.launcher3.compat.ShortcutConfigActivityInfo in project android_packages_apps_Launcher3 by ArrowOS.

the class WidgetsModel method update.

/**
 * @param packageUser If null, all widgets and shortcuts are updated and returned, otherwise
 *                    only widgets and shortcuts associated with the package/user are.
 */
public List<ComponentWithLabelAndIcon> update(LauncherAppState app, @Nullable PackageUserKey packageUser) {
    Preconditions.assertWorkerThread();
    Context context = app.getContext();
    final ArrayList<WidgetItem> widgetsAndShortcuts = new ArrayList<>();
    List<ComponentWithLabelAndIcon> updatedItems = new ArrayList<>();
    try {
        InvariantDeviceProfile idp = app.getInvariantDeviceProfile();
        PackageManager pm = app.getContext().getPackageManager();
        // Widgets
        WidgetManagerHelper widgetManager = new WidgetManagerHelper(context);
        for (AppWidgetProviderInfo widgetInfo : widgetManager.getAllProviders(packageUser)) {
            LauncherAppWidgetProviderInfo launcherWidgetInfo = LauncherAppWidgetProviderInfo.fromProviderInfo(context, widgetInfo);
            widgetsAndShortcuts.add(new WidgetItem(launcherWidgetInfo, idp, app.getIconCache()));
            updatedItems.add(launcherWidgetInfo);
        }
        // Shortcuts
        for (ShortcutConfigActivityInfo info : queryList(context, packageUser)) {
            widgetsAndShortcuts.add(new WidgetItem(info, app.getIconCache(), pm));
            updatedItems.add(info);
        }
        setWidgetsAndShortcuts(widgetsAndShortcuts, app, packageUser);
    } catch (Exception e) {
        if (!FeatureFlags.IS_STUDIO_BUILD && Utilities.isBinderSizeError(e)) {
        // the returned value may be incomplete and will not be refreshed until the next
        // time Launcher starts.
        // TODO: after figuring out a repro step, introduce a dirty bit to check when
        // onResume is called to refresh the widget provider list.
        } else {
            throw e;
        }
    }
    return updatedItems;
}
Also used : Context(android.content.Context) LauncherAppWidgetProviderInfo(com.android.launcher3.widget.LauncherAppWidgetProviderInfo) InvariantDeviceProfile(com.android.launcher3.InvariantDeviceProfile) ArrayList(java.util.ArrayList) PackageManager(android.content.pm.PackageManager) ComponentWithLabelAndIcon(com.android.launcher3.icons.ComponentWithLabelAndIcon) AppWidgetProviderInfo(android.appwidget.AppWidgetProviderInfo) LauncherAppWidgetProviderInfo(com.android.launcher3.widget.LauncherAppWidgetProviderInfo) ShortcutConfigActivityInfo(com.android.launcher3.pm.ShortcutConfigActivityInfo) WidgetManagerHelper(com.android.launcher3.widget.WidgetManagerHelper)

Example 20 with ShortcutConfigActivityInfo

use of com.android.launcher3.compat.ShortcutConfigActivityInfo in project android_packages_apps_Launcher3 by ArrowOS.

the class DatabaseWidgetPreviewLoader method generateShortcutPreview.

private Bitmap generateShortcutPreview(ShortcutConfigActivityInfo info, int maxWidth, int maxHeight) {
    int iconSize = ActivityContext.lookupContext(mContext).getDeviceProfile().allAppsIconSizePx;
    int padding = mContext.getResources().getDimensionPixelSize(R.dimen.widget_preview_shortcut_padding);
    int size = iconSize + 2 * padding;
    if (maxHeight < size || maxWidth < size) {
        throw new RuntimeException("Max size is too small for preview");
    }
    return BitmapRenderer.createHardwareBitmap(size, size, c -> {
        drawBoxWithShadow(c, size, size);
        LauncherIcons li = LauncherIcons.obtain(mContext);
        Drawable icon = li.createBadgedIconBitmap(mutateOnMainThread(info.getFullResIcon(LauncherAppState.getInstance(mContext).getIconCache())), Process.myUserHandle(), 0).newIcon(mContext);
        li.recycle();
        icon.setBounds(padding, padding, padding + iconSize, padding + iconSize);
        icon.draw(c);
    });
}
Also used : LauncherIcons(com.android.launcher3.icons.LauncherIcons) Drawable(android.graphics.drawable.Drawable) FastBitmapDrawable(com.android.launcher3.icons.FastBitmapDrawable) BitmapDrawable(android.graphics.drawable.BitmapDrawable) Paint(android.graphics.Paint)

Aggregations

ShortcutConfigActivityInfo (com.android.launcher3.pm.ShortcutConfigActivityInfo)12 ArrayList (java.util.ArrayList)10 LauncherActivityInfo (android.content.pm.LauncherActivityInfo)8 PackageManager (android.content.pm.PackageManager)8 FastBitmapDrawable (com.android.launcher3.icons.FastBitmapDrawable)8 AppWidgetProviderInfo (android.appwidget.AppWidgetProviderInfo)7 Context (android.content.Context)7 Paint (android.graphics.Paint)7 Point (android.graphics.Point)7 InvariantDeviceProfile (com.android.launcher3.InvariantDeviceProfile)7 FolderAdaptiveIcon (com.android.launcher3.dragndrop.FolderAdaptiveIcon)7 LauncherIcons (com.android.launcher3.icons.LauncherIcons)7 PendingAddShortcutInfo (com.android.launcher3.widget.PendingAddShortcutInfo)7 List (java.util.List)7 LauncherApps (android.content.pm.LauncherApps)6 ComponentWithLabelAndIcon (com.android.launcher3.icons.ComponentWithLabelAndIcon)6 WidgetManagerHelper (com.android.launcher3.widget.WidgetManagerHelper)6 Drawable (android.graphics.drawable.Drawable)5 LauncherAppWidgetProviderInfo (com.android.launcher3.widget.LauncherAppWidgetProviderInfo)5 AdaptiveIconDrawable (android.graphics.drawable.AdaptiveIconDrawable)4