Merge "Delay the PinItemRequest#accept() call until the drop animation is finished." into ub-launcher3-dorval

This commit is contained in:
TreeHugger Robot
2017-03-30 23:32:57 +00:00
committed by Android (Google) Code Review
3 changed files with 36 additions and 4 deletions

View File

@@ -1455,7 +1455,7 @@ public class Launcher extends BaseActivity
ShortcutInfo info = null;
if (Utilities.isAtLeastO()) {
info = LauncherAppsCompat.createShortcutInfoFromPinItemRequest(
this, PinItemRequestCompat.getPinItemRequest(data));
this, PinItemRequestCompat.getPinItemRequest(data), 0);
}
if (info == null) {

View File

@@ -27,10 +27,12 @@ import android.os.UserHandle;
import android.support.annotation.Nullable;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherModel;
import com.android.launcher3.ShortcutInfo;
import com.android.launcher3.Utilities;
import com.android.launcher3.graphics.LauncherIcons;
import com.android.launcher3.shortcuts.ShortcutInfoCompat;
import com.android.launcher3.util.LooperExecuter;
import java.util.List;
@@ -100,10 +102,32 @@ public abstract class LauncherAppsCompat {
*/
@Nullable
public static ShortcutInfo createShortcutInfoFromPinItemRequest(
Context context, PinItemRequestCompat request) {
Context context, final PinItemRequestCompat request, final long acceptDelay) {
if (request != null &&
request.getRequestType() == PinItemRequestCompat.REQUEST_TYPE_SHORTCUT &&
request.isValid() && request.accept()) {
request.isValid()) {
if (acceptDelay <= 0) {
if (!request.accept()) {
return null;
}
} else {
// Block the worker thread until the accept() is called.
new LooperExecuter(LauncherModel.getWorkerLooper()).execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(acceptDelay);
} catch (InterruptedException e) {
// Ignore
}
if (request.isValid()) {
request.accept();
}
}
});
}
ShortcutInfoCompat compat = new ShortcutInfoCompat(request.getShortcutInfo());
ShortcutInfo info = new ShortcutInfo(compat, context);
// Apply the unbadged icon and fetch the actual icon asynchronously.

View File

@@ -26,8 +26,10 @@ import android.graphics.drawable.Drawable;
import android.os.Build;
import com.android.launcher3.IconCache;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.R;
import com.android.launcher3.compat.LauncherAppsCompat;
import com.android.launcher3.compat.PinItemRequestCompat;
import com.android.launcher3.compat.ShortcutConfigActivityInfo;
@@ -73,7 +75,13 @@ class PinShortcutRequestActivityInfo extends ShortcutConfigActivityInfo {
@Override
public com.android.launcher3.ShortcutInfo createShortcutInfo() {
return LauncherAppsCompat.createShortcutInfoFromPinItemRequest(mContext, mRequest);
// Total duration for the drop animation to complete.
long duration = mContext.getResources().getInteger(R.integer.config_dropAnimMaxDuration) +
Launcher.EXIT_SPRINGLOADED_MODE_SHORT_TIMEOUT +
mContext.getResources().getInteger(R.integer.config_overlayTransitionTime) / 2;
// Delay the actual accept() call until the drop animation is complete.
return LauncherAppsCompat.createShortcutInfoFromPinItemRequest(
mContext, mRequest, duration);
}
@Override