126b1746593851e239bfff65ae7a69b809ad87b99Tony Wickhampackage com.android.launcher3.popup; 226b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 3d690d68f976ce0394d28f83352f922f3cccab16bTony Wickhamimport android.content.Context; 4e3c59256794448c67e01333a9f5036559b1bd502Tonyimport android.graphics.Rect; 526b1746593851e239bfff65ae7a69b809ad87b99Tony Wickhamimport android.graphics.drawable.Drawable; 6e3c59256794448c67e01333a9f5036559b1bd502Tonyimport android.os.Bundle; 726b1746593851e239bfff65ae7a69b809ad87b99Tony Wickhamimport android.view.View; 826b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 98897b4167e7f3761ce477cac7699093dcd0782daTony Wickhamimport com.android.launcher3.AbstractFloatingView; 1026b1746593851e239bfff65ae7a69b809ad87b99Tony Wickhamimport com.android.launcher3.InfoDropTarget; 1126b1746593851e239bfff65ae7a69b809ad87b99Tony Wickhamimport com.android.launcher3.ItemInfo; 1226b1746593851e239bfff65ae7a69b809ad87b99Tony Wickhamimport com.android.launcher3.Launcher; 1326b1746593851e239bfff65ae7a69b809ad87b99Tony Wickhamimport com.android.launcher3.R; 1426b1746593851e239bfff65ae7a69b809ad87b99Tony Wickhamimport com.android.launcher3.model.WidgetItem; 1526b1746593851e239bfff65ae7a69b809ad87b99Tony Wickhamimport com.android.launcher3.util.PackageUserKey; 16343a77e609382bcb9b1d69ea235a9e6d779b719eTony Wickhamimport com.android.launcher3.widget.WidgetsBottomSheet; 1726b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 1826b1746593851e239bfff65ae7a69b809ad87b99Tony Wickhamimport java.util.List; 1926b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 201d0b0e25dcde8ff3abf3484871c72116581f70d8Tony Wickhamimport static com.android.launcher3.userevent.nano.LauncherLogProto.Action; 211d0b0e25dcde8ff3abf3484871c72116581f70d8Tony Wickhamimport static com.android.launcher3.userevent.nano.LauncherLogProto.ControlType; 221d0b0e25dcde8ff3abf3484871c72116581f70d8Tony Wickham 2326b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham/** 2426b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham * Represents a system shortcut for a given app. The shortcut should have a static label and 2526b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham * icon, and an onClickListener that depends on the item that the shortcut services. 2626b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham * 2726b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham * Example system shortcuts, defined as inner classes, include Widgets and AppInfo. 2826b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham */ 291d0b0e25dcde8ff3abf3484871c72116581f70d8Tony Wickhampublic abstract class SystemShortcut extends ItemInfo { 3026b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham private final int mIconResId; 3126b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham private final int mLabelResId; 3226b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 3326b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham public SystemShortcut(int iconResId, int labelResId) { 3426b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham mIconResId = iconResId; 3526b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham mLabelResId = labelResId; 3626b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 3726b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 38c66c3e2ba4876c9d383c1d7deddeee474f1c4859Tony Wickham public Drawable getIcon(Context context) { 39c66c3e2ba4876c9d383c1d7deddeee474f1c4859Tony Wickham return context.getResources().getDrawable(mIconResId, context.getTheme()); 4026b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 4126b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 42d690d68f976ce0394d28f83352f922f3cccab16bTony Wickham public String getLabel(Context context) { 43d690d68f976ce0394d28f83352f922f3cccab16bTony Wickham return context.getString(mLabelResId); 4426b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 4526b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 4626b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham public abstract View.OnClickListener getOnClickListener(final Launcher launcher, 4726b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham final ItemInfo itemInfo); 4826b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 4926b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham public static class Widgets extends SystemShortcut { 5026b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 5126b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham public Widgets() { 52b5ac4ed5ec47cd6018bb6575852e2ec69c3592e8Tony Wickham super(R.drawable.ic_widget, R.string.widget_button_text); 5326b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 5426b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 5526b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham @Override 5626b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham public View.OnClickListener getOnClickListener(final Launcher launcher, 5726b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham final ItemInfo itemInfo) { 5826b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham final List<WidgetItem> widgets = launcher.getWidgetsForPackageUser(new PackageUserKey( 5926b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham itemInfo.getTargetComponent().getPackageName(), itemInfo.user)); 6026b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham if (widgets == null) { 6126b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham return null; 6226b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 6326b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham return new View.OnClickListener() { 6426b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham @Override 6526b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham public void onClick(View view) { 668897b4167e7f3761ce477cac7699093dcd0782daTony Wickham AbstractFloatingView.closeAllOpenViews(launcher); 67343a77e609382bcb9b1d69ea235a9e6d779b719eTony Wickham WidgetsBottomSheet widgetsBottomSheet = 68343a77e609382bcb9b1d69ea235a9e6d779b719eTony Wickham (WidgetsBottomSheet) launcher.getLayoutInflater().inflate( 69343a77e609382bcb9b1d69ea235a9e6d779b719eTony Wickham R.layout.widgets_bottom_sheet, launcher.getDragLayer(), false); 70343a77e609382bcb9b1d69ea235a9e6d779b719eTony Wickham widgetsBottomSheet.populateAndShow(itemInfo); 711d0b0e25dcde8ff3abf3484871c72116581f70d8Tony Wickham launcher.getUserEventDispatcher().logActionOnControl(Action.Touch.TAP, 721d0b0e25dcde8ff3abf3484871c72116581f70d8Tony Wickham ControlType.WIDGETS_BUTTON, view); 7326b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 7426b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham }; 7526b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 7626b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 7726b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 7826b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham public static class AppInfo extends SystemShortcut { 7926b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham public AppInfo() { 80d690d68f976ce0394d28f83352f922f3cccab16bTony Wickham super(R.drawable.ic_info_no_shadow, R.string.app_info_drop_target_label); 8126b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 8226b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham 8326b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham @Override 8426b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham public View.OnClickListener getOnClickListener(final Launcher launcher, 8526b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham final ItemInfo itemInfo) { 8626b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham return new View.OnClickListener() { 8726b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham @Override 8826b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham public void onClick(View view) { 89e3c59256794448c67e01333a9f5036559b1bd502Tony Rect sourceBounds = launcher.getViewBounds(view); 90e3c59256794448c67e01333a9f5036559b1bd502Tony Bundle opts = launcher.getActivityLaunchOptions(view); 91e3c59256794448c67e01333a9f5036559b1bd502Tony InfoDropTarget.startDetailsActivityForInfo(itemInfo, launcher, null, sourceBounds, opts); 921d0b0e25dcde8ff3abf3484871c72116581f70d8Tony Wickham launcher.getUserEventDispatcher().logActionOnControl(Action.Touch.TAP, 931d0b0e25dcde8ff3abf3484871c72116581f70d8Tony Wickham ControlType.APPINFO_TARGET, view); 9426b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 9526b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham }; 9626b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 9726b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham } 9826b1746593851e239bfff65ae7a69b809ad87b99Tony Wickham} 99