summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/dragndrop/PinItemDragListener.java
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2017-01-25 11:30:06 -0800
committerSunny Goyal <sunnygoyal@google.com>2017-01-27 09:35:18 -0800
commit8a0dc38aebdc7624db3de2cdfecb9d11e2baee04 (patch)
treef14bd7258440f41d094bc8e789d14ad9073abf6f /src/com/android/launcher3/dragndrop/PinItemDragListener.java
parentcd64d62a7e840ed730bb15545125e980a8465960 (diff)
downloadandroid_packages_apps_Trebuchet-8a0dc38aebdc7624db3de2cdfecb9d11e2baee04.tar.gz
android_packages_apps_Trebuchet-8a0dc38aebdc7624db3de2cdfecb9d11e2baee04.tar.bz2
android_packages_apps_Trebuchet-8a0dc38aebdc7624db3de2cdfecb9d11e2baee04.zip
Improving widget handling for pinItemRequest
> Preloading widget view while dragging for smoother transition > Skipping config activity and sending confirmation to the caller when widget is dropped Bug: 33584624 Change-Id: Ib23e5964298296d12d9c93f38aefdf924a07368e
Diffstat (limited to 'src/com/android/launcher3/dragndrop/PinItemDragListener.java')
-rw-r--r--src/com/android/launcher3/dragndrop/PinItemDragListener.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/com/android/launcher3/dragndrop/PinItemDragListener.java b/src/com/android/launcher3/dragndrop/PinItemDragListener.java
index 1a99cc886..73ad1c86a 100644
--- a/src/com/android/launcher3/dragndrop/PinItemDragListener.java
+++ b/src/com/android/launcher3/dragndrop/PinItemDragListener.java
@@ -48,6 +48,8 @@ import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.widget.PendingAddShortcutInfo;
import com.android.launcher3.widget.PendingAddWidgetInfo;
import com.android.launcher3.widget.PendingItemPreviewProvider;
+import com.android.launcher3.widget.WidgetAddFlowHandler;
+import com.android.launcher3.widget.WidgetHostViewLoader;
import java.util.UUID;
@@ -141,6 +143,7 @@ public class PinItemDragListener implements Parcelable, View.OnDragListener, Dra
final PendingAddItemInfo item;
final Bitmap preview;
+ final View view = new View(mLauncher);
Point dragShift = new Point(mPreviewRect.left, mPreviewRect.top);
if (mRequest.getRequestType() == PinItemRequestCompat.REQUEST_TYPE_SHORTCUT) {
@@ -160,9 +163,18 @@ public class PinItemDragListener implements Parcelable, View.OnDragListener, Dra
(size[1] - icon.getHeight() - dp.iconTextSizePx - dp.iconDrawablePaddingPx) / 2,
new Paint(Paint.FILTER_BITMAP_FLAG));
} else {
- PendingAddWidgetInfo info = new PendingAddWidgetInfo(
+ // mRequest.getRequestType() == PinItemRequestCompat.REQUEST_TYPE_APPWIDGET
+ LauncherAppWidgetProviderInfo providerInfo =
LauncherAppWidgetProviderInfo.fromProviderInfo(
- mLauncher, mRequest.getAppWidgetProviderInfo(mLauncher)));
+ mLauncher, mRequest.getAppWidgetProviderInfo(mLauncher));
+ final PinWidgetFlowHandler flowHandler =
+ new PinWidgetFlowHandler(providerInfo, mRequest);
+ PendingAddWidgetInfo info = new PendingAddWidgetInfo(providerInfo) {
+ @Override
+ public WidgetAddFlowHandler getHandler() {
+ return flowHandler;
+ }
+ };
int[] size = mLauncher.getWorkspace().estimateItemSize(info, true, false);
float minScale = 1.25f;
@@ -176,10 +188,13 @@ public class PinItemDragListener implements Parcelable, View.OnDragListener, Dra
(mPreviewRect.width() - preview.getWidth()) / 2,
(mPreviewRect.height() - preview.getHeight()) / 2);
item = info;
+
+ view.setTag(info);
+ mDragController.addDragListener(new WidgetHostViewLoader(mLauncher, view));
}
PendingItemPreviewProvider previewProvider =
- new PendingItemPreviewProvider(new View(mLauncher), item, preview);
+ new PendingItemPreviewProvider(view, item, preview);
// Since we are not going through the workspace for starting the drag, set drag related
// information on the workspace before starting the drag.