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

Commit 5ba1fc93 authored by Becky Qiu's avatar Becky Qiu Committed by Android (Google) Code Review
Browse files

Merge "Add OverviewScreenshotActions plugin interface and use it in TaskView."...

Merge "Add OverviewScreenshotActions plugin interface and use it in TaskView." into ub-launcher3-qt-future-dev
parents 79a4c590 d3f6d72e
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);
}