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

Commit 648d088e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use custom drawable for Recents Go thumbnails (2/2)" into ub-launcher3-qt-dev

parents c1275a34 483d2ddd
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -146,7 +146,7 @@ public final class TaskAdapter extends Adapter<ViewHolder> {
                });
                });
                mLoader.loadTaskThumbnail(task, () -> {
                mLoader.loadTaskThumbnail(task, () -> {
                    if (Objects.equals(Optional.of(task), taskHolder.getTask())) {
                    if (Objects.equals(Optional.of(task), taskHolder.getTask())) {
                        taskHolder.getTaskItemView().setThumbnail(task.thumbnail.thumbnail);
                        taskHolder.getTaskItemView().setThumbnail(task.thumbnail);
                    }
                    }
                });
                });
                break;
                break;
+2 −5
Original line number Original line Diff line number Diff line
@@ -15,8 +15,6 @@
 */
 */
package com.android.quickstep;
package com.android.quickstep;


import android.graphics.Bitmap;

import androidx.annotation.NonNull;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;


@@ -58,12 +56,11 @@ public final class TaskHolder extends ViewHolder {
     */
     */
    public void bindTask(@NonNull Task task, boolean willAnimate) {
    public void bindTask(@NonNull Task task, boolean willAnimate) {
        mTask = task;
        mTask = task;
        Bitmap thumbnail = (task.thumbnail != null) ? task.thumbnail.thumbnail : null;
        if (willAnimate) {
        if (willAnimate) {
            mTaskItemView.startContentAnimation(task.icon, thumbnail, task.titleDescription);
            mTaskItemView.startContentAnimation(task.icon, task.thumbnail, task.titleDescription);
        } else {
        } else {
            mTaskItemView.setIcon(task.icon);
            mTaskItemView.setIcon(task.icon);
            mTaskItemView.setThumbnail(thumbnail);
            mTaskItemView.setThumbnail(task.thumbnail);
            mTaskItemView.setLabel(task.titleDescription);
            mTaskItemView.setLabel(task.titleDescription);
        }
        }
    }
    }
+1 −1
Original line number Original line Diff line number Diff line
@@ -125,7 +125,7 @@ public final class IconRecentsView extends FrameLayout {
                Task task = optTask.get();
                Task task = optTask.get();
                // Update thumbnail on the task.
                // Update thumbnail on the task.
                task.thumbnail = thumbnailData;
                task.thumbnail = thumbnailData;
                taskView.setThumbnail(thumbnailData.thumbnail);
                taskView.setThumbnail(thumbnailData);
                return task;
                return task;
            }
            }
        }
        }
+26 −10
Original line number Original line Diff line number Diff line
@@ -18,9 +18,8 @@ package com.android.quickstep.views;
import static com.android.quickstep.views.TaskLayoutUtils.getTaskHeight;
import static com.android.quickstep.views.TaskLayoutUtils.getTaskHeight;


import android.content.Context;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.AttributeSet;
import android.util.FloatProperty;
import android.util.FloatProperty;
@@ -33,6 +32,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Nullable;


import com.android.launcher3.R;
import com.android.launcher3.R;
import com.android.quickstep.ThumbnailDrawable;
import com.android.systemui.shared.recents.model.ThumbnailData;


/**
/**
 * View representing an individual task item with the icon + thumbnail adjacent to the task label.
 * View representing an individual task item with the icon + thumbnail adjacent to the task label.
@@ -132,10 +133,10 @@ public final class TaskItemView extends LinearLayout {
    /**
    /**
     * Set the task thumbnail for the task. Sets to a default thumbnail if null.
     * Set the task thumbnail for the task. Sets to a default thumbnail if null.
     *
     *
     * @param thumbnail task thumbnail for the task
     * @param thumbnailData task thumbnail data for the task
     */
     */
    public void setThumbnail(@Nullable Bitmap thumbnail) {
    public void setThumbnail(@Nullable ThumbnailData thumbnailData) {
        mThumbnailDrawable.setCurrentDrawable(getSafeThumbnail(thumbnail));
        mThumbnailDrawable.setCurrentDrawable(getSafeThumbnail(thumbnailData));
    }
    }


    public View getThumbnailView() {
    public View getThumbnailView() {
@@ -151,8 +152,8 @@ public final class TaskItemView extends LinearLayout {
     * @param endThumbnail the thumbnail to animate to
     * @param endThumbnail the thumbnail to animate to
     * @param endLabel the label to animate to
     * @param endLabel the label to animate to
     */
     */
    public void startContentAnimation(@Nullable Drawable endIcon, @Nullable Bitmap endThumbnail,
    public void startContentAnimation(@Nullable Drawable endIcon,
            @Nullable String endLabel) {
            @Nullable ThumbnailData endThumbnail, @Nullable String endLabel) {
        mIconDrawable.startNewTransition(getSafeIcon(endIcon));
        mIconDrawable.startNewTransition(getSafeIcon(endIcon));
        mThumbnailDrawable.startNewTransition(getSafeThumbnail(endThumbnail));
        mThumbnailDrawable.startNewTransition(getSafeThumbnail(endThumbnail));
        // TODO: Animation for label
        // TODO: Animation for label
@@ -171,12 +172,27 @@ public final class TaskItemView extends LinearLayout {
        return (icon != null) ? icon : mDefaultIcon;
        return (icon != null) ? icon : mDefaultIcon;
    }
    }


    private @NonNull Drawable getSafeThumbnail(@Nullable Bitmap thumbnail) {
    private @NonNull Drawable getSafeThumbnail(@Nullable ThumbnailData thumbnailData) {
        return (thumbnail != null) ? new BitmapDrawable(getResources(), thumbnail)
        if (thumbnailData == null || thumbnailData.thumbnail == null) {
                                   : mDefaultThumbnail;
            return mDefaultThumbnail;
        }
        int orientation = getResources().getConfiguration().orientation;
        return new ThumbnailDrawable(thumbnailData,  orientation /* requestedOrientation */);
    }
    }


    private @NonNull String getSafeLabel(@Nullable String label) {
    private @NonNull String getSafeLabel(@Nullable String label) {
        return (label != null) ? label : DEFAULT_LABEL;
        return (label != null) ? label : DEFAULT_LABEL;
    }
    }

    @Override
    protected void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        int layerCount = mThumbnailDrawable.getNumberOfLayers();
        for (int i = 0; i < layerCount; i++) {
            Drawable drawable = mThumbnailDrawable.getDrawable(i);
            if (drawable instanceof ThumbnailDrawable) {
                ((ThumbnailDrawable) drawable).setRequestedOrientation(newConfig.orientation);
            }
        }
    }
}
}