mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-28 15:56:49 +00:00
b/30039490
Supported in this CL:
- DnD: drag from container [WORKSPACE|HOTSEAT|FOLDER|ALLAPPS|WIDGETS|DEEPSHORTCUTS]
drag to container [HOTSEAT,WORKSPACE,FOLDER,DROPTARGETS]
- Source and target can be [FOLDER_ICON, ICON, DEEPSHORTCUT, WIDGET]
- $ adb shell setprop log.tag.UserEvent DEBUG will turn on debugging
Change-Id: I0b8b879b80e6dce85bbde6e7794f9e0677832603
245 lines
8.5 KiB
Java
245 lines
8.5 KiB
Java
package com.android.launcher3.logging;
|
|
|
|
import android.view.View;
|
|
|
|
import com.android.launcher3.ButtonDropTarget;
|
|
import com.android.launcher3.DeleteDropTarget;
|
|
import com.android.launcher3.InfoDropTarget;
|
|
import com.android.launcher3.ItemInfo;
|
|
import com.android.launcher3.LauncherSettings;
|
|
import com.android.launcher3.UninstallDropTarget;
|
|
import com.android.launcher3.userevent.nano.LauncherLogProto;
|
|
import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
|
|
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
|
|
|
|
/**
|
|
* Debugging helper methods.
|
|
* toString() cannot be overriden inside auto generated {@link LauncherLogProto}.
|
|
* Note: switch statement cannot be replaced with reflection as proguard strips the constants
|
|
*/
|
|
public class LoggerUtils {
|
|
private static final String TAG = "LoggerUtils";
|
|
|
|
public static String getActionStr(LauncherLogProto.Action action) {
|
|
switch(action.touch) {
|
|
case Action.TAP: return "TAP";
|
|
case Action.LONGPRESS: return "LONGPRESS";
|
|
case Action.DRAGDROP: return "DRAGDROP";
|
|
case Action.PINCH: return "PINCH";
|
|
case Action.SWIPE: return "SWIPE";
|
|
case Action.FLING: return "FLING";
|
|
default: return "UNKNOWN";
|
|
}
|
|
}
|
|
|
|
public static String getTargetStr(Target t) {
|
|
String typeStr = "";
|
|
if (t == null){
|
|
return typeStr;
|
|
}
|
|
switch (t.type) {
|
|
case Target.ITEM:
|
|
return getItemStr(t);
|
|
case Target.CONTROL:
|
|
return getControlStr(t);
|
|
case Target.CONTAINER:
|
|
return getContainerStr(t);
|
|
default:
|
|
return "UNKNOWN TARGET TYPE";
|
|
}
|
|
}
|
|
|
|
private static String getItemStr(Target t) {
|
|
String typeStr = "";
|
|
if (t == null){
|
|
return typeStr;
|
|
}
|
|
switch(t.itemType){
|
|
case LauncherLogProto.APP_ICON: typeStr = "APPICON"; break;
|
|
case LauncherLogProto.SHORTCUT: typeStr = "SHORTCUT"; break;
|
|
case LauncherLogProto.WIDGET: typeStr = "WIDGET"; break;
|
|
case LauncherLogProto.DEEPSHORTCUT: typeStr = "DEEPSHORTCUT"; break;
|
|
case LauncherLogProto.FOLDER_ICON: typeStr = "FOLDERICON"; break;
|
|
|
|
default: typeStr = "UNKNOWN";
|
|
}
|
|
|
|
if (t.packageNameHash != 0) {
|
|
typeStr += ", packageHash=" + t.packageNameHash;
|
|
}
|
|
if (t.componentHash != 0) {
|
|
typeStr += ", componentHash=" + t.componentHash;
|
|
}
|
|
if (t.intentHash != 0) {
|
|
typeStr += ", intentHash=" + t.intentHash;
|
|
}
|
|
return typeStr += ", grid=(" + t.gridX + "," + t.gridY + "), id=" + t.pageIndex;
|
|
}
|
|
|
|
private static String getControlStr(Target t) {
|
|
if (t == null){
|
|
return "";
|
|
}
|
|
switch(t.controlType) {
|
|
case LauncherLogProto.ALL_APPS_BUTTON: return "ALL_APPS_BUTTON";
|
|
case LauncherLogProto.WIDGETS_BUTTON: return "WIDGETS_BUTTON";
|
|
case LauncherLogProto.WALLPAPER_BUTTON: return "WALLPAPER_BUTTON";
|
|
case LauncherLogProto.SETTINGS_BUTTON: return "SETTINGS_BUTTON";
|
|
case LauncherLogProto.REMOVE_TARGET: return "REMOVE_TARGET";
|
|
case LauncherLogProto.UNINSTALL_TARGET: return "UNINSTALL_TARGET";
|
|
case LauncherLogProto.APPINFO_TARGET: return "APPINFO_TARGET";
|
|
case LauncherLogProto.RESIZE_HANDLE: return "RESIZE_HANDLE";
|
|
default: return "UNKNOWN";
|
|
}
|
|
}
|
|
|
|
private static String getContainerStr(LauncherLogProto.Target t) {
|
|
String str = "";
|
|
if (t == null) {
|
|
return str;
|
|
}
|
|
switch (t.containerType) {
|
|
case LauncherLogProto.WORKSPACE:
|
|
str = "WORKSPACE";
|
|
break;
|
|
case LauncherLogProto.HOTSEAT:
|
|
str = "HOTSEAT";
|
|
break;
|
|
case LauncherLogProto.FOLDER:
|
|
str = "FOLDER";
|
|
break;
|
|
case LauncherLogProto.ALLAPPS:
|
|
str = "ALLAPPS";
|
|
break;
|
|
case LauncherLogProto.WIDGETS:
|
|
str = "WIDGETS";
|
|
break;
|
|
case LauncherLogProto.OVERVIEW:
|
|
str = "OVERVIEW";
|
|
break;
|
|
case LauncherLogProto.PREDICTION:
|
|
str = "PREDICTION";
|
|
break;
|
|
case LauncherLogProto.SEARCHRESULT:
|
|
str = "SEARCHRESULT";
|
|
break;
|
|
case LauncherLogProto.DEEPSHORTCUTS:
|
|
str = "DEEPSHORTCUTS";
|
|
break;
|
|
default:
|
|
str = "UNKNOWN";
|
|
}
|
|
return str + " id=" + t.pageIndex;
|
|
}
|
|
|
|
/**
|
|
* Used for launching an event by tapping on an icon.
|
|
*/
|
|
public static LauncherLogProto.LauncherEvent initLauncherEvent(
|
|
int actionType,
|
|
View v,
|
|
int parentTargetType){
|
|
LauncherLogProto.LauncherEvent event = new LauncherLogProto.LauncherEvent();
|
|
|
|
event.srcTarget = new LauncherLogProto.Target[2];
|
|
event.srcTarget[0] = initTarget(v);
|
|
event.srcTarget[1] = new LauncherLogProto.Target();
|
|
event.srcTarget[1].type = parentTargetType;
|
|
|
|
event.action = new LauncherLogProto.Action();
|
|
event.action.type = actionType;
|
|
return event;
|
|
}
|
|
|
|
/**
|
|
* Used for clicking on controls and buttons.
|
|
*/
|
|
public static LauncherLogProto.LauncherEvent initLauncherEvent(
|
|
int actionType,
|
|
int childTargetType){
|
|
LauncherLogProto.LauncherEvent event = new LauncherLogProto.LauncherEvent();
|
|
|
|
event.srcTarget = new LauncherLogProto.Target[1];
|
|
event.srcTarget[0] = new LauncherLogProto.Target();
|
|
event.srcTarget[0].type = childTargetType;
|
|
|
|
event.action = new LauncherLogProto.Action();
|
|
event.action.type = actionType;
|
|
return event;
|
|
}
|
|
|
|
/**
|
|
* Used for drag and drop interaction.
|
|
*/
|
|
public static LauncherLogProto.LauncherEvent initLauncherEvent(
|
|
int actionType,
|
|
View v,
|
|
ItemInfo info,
|
|
int parentSrcTargetType,
|
|
View parentDestTargetType){
|
|
LauncherLogProto.LauncherEvent event = new LauncherLogProto.LauncherEvent();
|
|
|
|
event.srcTarget = new LauncherLogProto.Target[2];
|
|
event.srcTarget[0] = initTarget(v, info);
|
|
event.srcTarget[1] = new LauncherLogProto.Target();
|
|
event.srcTarget[1].type = parentSrcTargetType;
|
|
|
|
event.destTarget = new LauncherLogProto.Target[2];
|
|
event.destTarget[0] = initTarget(v, info);
|
|
event.destTarget[1] = initDropTarget(parentDestTargetType);
|
|
|
|
event.action = new LauncherLogProto.Action();
|
|
event.action.type = actionType;
|
|
return event;
|
|
}
|
|
|
|
private static Target initTarget(View v, ItemInfo info) {
|
|
Target t = new LauncherLogProto.Target();
|
|
t.type = Target.ITEM;
|
|
switch (info.itemType) {
|
|
case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
|
|
t.itemType = LauncherLogProto.APP_ICON;
|
|
break;
|
|
case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
|
|
t.itemType = LauncherLogProto.SHORTCUT;
|
|
break;
|
|
case LauncherSettings.Favorites.ITEM_TYPE_FOLDER:
|
|
t.itemType = LauncherLogProto.FOLDER_ICON;
|
|
break;
|
|
case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
|
|
t.itemType = LauncherLogProto.WIDGET;
|
|
break;
|
|
case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
|
|
t.itemType = LauncherLogProto.DEEPSHORTCUT;
|
|
break;
|
|
}
|
|
return t;
|
|
}
|
|
|
|
private static Target initDropTarget(View v) {
|
|
Target t = new LauncherLogProto.Target();
|
|
t.type = (v instanceof ButtonDropTarget)? Target.CONTROL : Target.CONTAINER;
|
|
if (t.type == Target.CONTAINER) {
|
|
return t;
|
|
}
|
|
|
|
if (v instanceof InfoDropTarget) {
|
|
t.controlType = LauncherLogProto.APPINFO_TARGET;
|
|
} else if (v instanceof UninstallDropTarget) {
|
|
t.controlType = LauncherLogProto.UNINSTALL_TARGET;
|
|
} else if (v instanceof DeleteDropTarget) {
|
|
t.controlType = LauncherLogProto.REMOVE_TARGET;
|
|
}
|
|
return t;
|
|
}
|
|
|
|
private static Target initTarget(View v) {
|
|
Target t = new LauncherLogProto.Target();
|
|
t.type = Target.ITEM;
|
|
if (!(v.getTag() instanceof ItemInfo)) {
|
|
return t;
|
|
}
|
|
return initTarget(v, (ItemInfo) v.getTag());
|
|
}
|
|
}
|