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

Commit d3f6d72e authored by Becky Qiu's avatar Becky Qiu
Browse files

Add OverviewScreenshotActions plugin interface and use it in TaskView.

Bug: 139828243
Change-Id: Idbefc11ef32619dd5eaaa5552088859eb2304e1e
Merged-In: Idbefc11ef32619dd5eaaa5552088859eb2304e1e
parent 0b72d6a8
Loading
Loading
Loading
Loading
+38 −1
Original line number Diff line number Diff line
@@ -39,24 +39,28 @@ import android.util.AttributeSet;
import android.util.FloatProperty;
import android.util.Property;
import android.view.View;
import android.view.ViewGroup;

import com.android.launcher3.BaseActivity;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
import com.android.launcher3.util.SystemUiController;
import com.android.launcher3.util.Themes;
import com.android.quickstep.TaskOverlayFactory;
import com.android.quickstep.TaskOverlayFactory.TaskOverlay;
import com.android.quickstep.util.TaskCornerRadius;
import com.android.systemui.plugins.OverviewScreenshotActions;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.recents.model.ThumbnailData;

/**
 * A task in the Recents view.
 */
public class TaskThumbnailView extends View {
public class TaskThumbnailView extends View implements PluginListener<OverviewScreenshotActions> {

    private final static ColorMatrix COLOR_MATRIX = new ColorMatrix();
    private final static ColorMatrix SATURATION_COLOR_MATRIX = new ColorMatrix();
@@ -100,6 +104,7 @@ public class TaskThumbnailView extends View {

    private boolean mOverlayEnabled;
    private boolean mRotated;
    private OverviewScreenshotActions mOverviewScreenshotActionsPlugin;

    public TaskThumbnailView(Context context) {
        this(context, null);
@@ -147,6 +152,11 @@ public class TaskThumbnailView extends View {
            mPaint.setShader(null);
            mOverlay.reset();
        }

        if (mOverviewScreenshotActionsPlugin != null) {
            mOverviewScreenshotActionsPlugin
                .setupActions((ViewGroup) getTaskView(), getThumbnail(), mActivity);
        }
        updateThumbnailPaintFilter();
    }

@@ -211,6 +221,33 @@ public class TaskThumbnailView extends View {
        canvas.restore();
    }

    @Override
    public void onPluginConnected(OverviewScreenshotActions overviewScreenshotActions,
            Context context) {
        mOverviewScreenshotActionsPlugin = overviewScreenshotActions;
        mOverviewScreenshotActionsPlugin.setupActions(getTaskView(), getThumbnail(), mActivity);
    }

    @Override
    public void onPluginDisconnected(OverviewScreenshotActions plugin) {
        if (mOverviewScreenshotActionsPlugin != null) {
            mOverviewScreenshotActionsPlugin = null;
        }
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        PluginManagerWrapper.INSTANCE.get(getContext())
            .addPluginListener(this, OverviewScreenshotActions.class);
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        PluginManagerWrapper.INSTANCE.get(getContext()).removePluginListener(this);
    }

    public RectF getInsetsToDrawInFullscreen(boolean isMultiWindowMode) {
        // Don't show insets in multi window mode.
        return isMultiWindowMode ? EMPTY_RECT_F : mClippedInsets;
+41 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.plugins;

import android.app.Activity;
import android.graphics.Bitmap;
import android.view.ViewGroup;

import com.android.systemui.plugins.annotations.ProvidesInterface;

/**
 * Implement this interface to add action buttons for overview screenshots, e.g. share, edit etc.
 */
@ProvidesInterface(
        action = OverviewScreenshotActions.ACTION, version = OverviewScreenshotActions.VERSION)
public interface OverviewScreenshotActions extends Plugin {
    String ACTION = "com.android.systemui.action.PLUGIN_OVERVIEW_SCREENSHOT_ACTIONS";
    int VERSION = 1;

    /**
     * Setup the actions for the screenshot, including edit, save, etc.
     * @param parent The parent view to add buttons on.
     * @param screenshot The screenshot we will do actions on.
     * @param activity THe host activity.
     */
    void setupActions(ViewGroup parent, Bitmap screenshot, Activity activity);
}