blob: 4e59790771da65b72670cf10e2b413e818ed751a [file] [log] [blame]
/*
* Copyright (C) 2022 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.launcher3.popup;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.View;
import com.android.launcher3.BaseQuickstepLauncher;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
import com.android.quickstep.views.RecentsView;
public interface QuickstepSystemShortcut {
String TAG = QuickstepSystemShortcut.class.getSimpleName();
static SystemShortcut.Factory<BaseQuickstepLauncher> getSplitSelectShortcutByPosition(
SplitPositionOption position) {
return (activity, itemInfo, originalView) ->
new QuickstepSystemShortcut.SplitSelectSystemShortcut(activity, itemInfo,
originalView, position);
}
class SplitSelectSystemShortcut extends SystemShortcut<BaseQuickstepLauncher> {
private final SplitPositionOption mPosition;
public SplitSelectSystemShortcut(BaseQuickstepLauncher launcher, ItemInfo itemInfo,
View originalView, SplitPositionOption position) {
super(position.iconResId, position.textResId, launcher, itemInfo, originalView);
mPosition = position;
}
@Override
public void onClick(View view) {
Bitmap bitmap;
Intent intent;
if (mItemInfo instanceof WorkspaceItemInfo) {
final WorkspaceItemInfo workspaceItemInfo = (WorkspaceItemInfo) mItemInfo;
bitmap = workspaceItemInfo.bitmap.icon;
intent = workspaceItemInfo.intent;
} else if (mItemInfo instanceof com.android.launcher3.model.data.AppInfo) {
final com.android.launcher3.model.data.AppInfo appInfo =
(com.android.launcher3.model.data.AppInfo) mItemInfo;
bitmap = appInfo.bitmap.icon;
intent = appInfo.intent;
} else {
Log.e(TAG, "unknown item type");
return;
}
RecentsView recentsView = mTarget.getOverviewPanel();
recentsView.initiateSplitSelect(
new SplitSelectSource(mOriginalView, new BitmapDrawable(bitmap), intent,
mPosition));
}
}
class SplitSelectSource {
public final View view;
public final Drawable drawable;
public final Intent intent;
public final SplitPositionOption position;
public SplitSelectSource(View view, Drawable drawable, Intent intent,
SplitPositionOption position) {
this.view = view;
this.drawable = drawable;
this.intent = intent;
this.position = position;
}
}
}