Add OverviewScreenshotActions plugin interface and use it in TaskView.

Bug: 139828243
Change-Id: Idbefc11ef32619dd5eaaa5552088859eb2304e1e
This commit is contained in:
Becky Qiu
2019-09-03 15:49:56 -07:00
parent ebbc33f452
commit 90c303b6a7
2 changed files with 78 additions and 1 deletions

View File

@@ -39,23 +39,27 @@ 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.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();
@@ -99,6 +103,7 @@ public class TaskThumbnailView extends View {
private boolean mOverlayEnabled;
private boolean mRotated;
private OverviewScreenshotActions mOverviewScreenshotActionsPlugin;
public TaskThumbnailView(Context context) {
this(context, null);
@@ -146,6 +151,10 @@ public class TaskThumbnailView extends View {
mPaint.setShader(null);
mOverlay.reset();
}
if (mOverviewScreenshotActionsPlugin != null) {
mOverviewScreenshotActionsPlugin
.setupActions((ViewGroup) getTaskView(), getThumbnail(), mActivity);
}
updateThumbnailPaintFilter();
}
@@ -210,6 +219,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;

View File

@@ -0,0 +1,41 @@
/*
* 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);
}