package com.android.launcher3; import android.view.View; import com.android.launcher3.userevent.nano.LauncherLogProto.Action; /** * A specialized listener for Overview buttons where both clicks and long clicks are logged * handled the same via {@link #handleViewClick(View)}. */ public abstract class OverviewButtonClickListener implements View.OnClickListener, View.OnLongClickListener { private int mControlType; /** ControlType enum as defined in {@link Action.Touch} */ public OverviewButtonClickListener(int controlType) { mControlType = controlType; } public void attachTo(View v) { v.setOnClickListener(this); v.setOnLongClickListener(this); } @Override public void onClick(View view) { if (shouldPerformClick(view)) { handleViewClick(view, Action.Touch.TAP); } } @Override public boolean onLongClick(View view) { if (shouldPerformClick(view)) { handleViewClick(view, Action.Touch.LONGPRESS); } return true; } private boolean shouldPerformClick(View view) { return !Launcher.getLauncher(view.getContext()).getWorkspace().isSwitchingState(); } private void handleViewClick(View view, int action) { handleViewClick(view); Launcher.getLauncher(view.getContext()).getUserEventDispatcher() .logActionOnControl(action, mControlType); } public abstract void handleViewClick(View view); }