Move the drag thing into its own window that goes around on top of everything else.
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 661fbdb..759af28 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -166,6 +166,7 @@
private LayoutInflater mInflater;
+ private DragController mDragController;
private DragLayer mDragLayer;
private WallpaperView mWallpaperView;
private Workspace mWorkspace;
@@ -528,10 +529,14 @@
* Finds all the views we need and configure them properly.
*/
private void setupViews() {
+ mDragController = new DragController(this);
+ DragController dragController = mDragController;
+
mDragLayer = (DragLayer) findViewById(R.id.drag_layer);
final DragLayer dragLayer = mDragLayer;
+ dragLayer.setDragController(dragController);
- mWallpaperView = (WallpaperView) dragLayer.findViewById(R.id.wallpaper);
+ mWallpaperView = (WallpaperView) findViewById(R.id.wallpaper);
final WallpaperView wallpaper = mWallpaperView;
mWorkspace = (Workspace) dragLayer.findViewById(R.id.workspace);
@@ -546,7 +551,7 @@
mHandleIcon.setCrossFadeEnabled(true);
workspace.setOnLongClickListener(this);
- workspace.setDragger(dragLayer);
+ workspace.setDragController(dragController);
workspace.setLauncher(this);
workspace.setWallpaper(wallpaper);
@@ -554,12 +559,16 @@
wallpaper.setScreenCount(workspace.getScreenCount());
deleteZone.setLauncher(this);
- deleteZone.setDragController(dragLayer);
+ deleteZone.setDragController(dragController);
deleteZone.setHandle(mHandleView);
- // TODO dragLayer.setIgnoredDropTarget(grid);
- dragLayer.setDragScoller(workspace);
- dragLayer.setDragListener(deleteZone);
+ dragController.setDragScoller(workspace);
+ dragController.setDragListener(deleteZone);
+ dragController.setScrollView(dragLayer);
+
+ // The order here is bottom to top.
+ dragController.addDropTarget(workspace);
+ dragController.addDropTarget(deleteZone);
}
/**
@@ -1347,6 +1356,7 @@
ViewGroup parent = (ViewGroup) folder.getParent();
if (parent != null) {
parent.removeView(folder);
+ mDragController.removeDropTarget((DropTarget)folder);
}
folder.onClose();
}
@@ -1545,10 +1555,6 @@
}
}
- DragController getDragController() {
- return mDragLayer;
- }
-
/**
* Launches the intent referred by the clicked shortcut.
*
@@ -1646,7 +1652,7 @@
return;
}
- openFolder.setDragger(mDragLayer);
+ openFolder.setDragController(mDragController);
openFolder.setLauncher(this);
openFolder.bind(folderInfo);
@@ -1703,11 +1709,6 @@
return sModel;
}
- void closeAllApplications() {
- // TODO mDrawer.close();
- mAllAppsDialog.dismiss();
- }
-
View getDrawerHandle() {
return mHandleView;
}
@@ -1744,6 +1745,7 @@
protected void onPrepareDialog(int id, Dialog dialog) {
switch (id) {
case DIALOG_ALL_APPS:
+ mAllAppsGrid.onPrepareDialog();
break;
case DIALOG_CREATE_SHORTCUT:
break;
@@ -1886,8 +1888,11 @@
setContentView(R.layout.all_apps);
AllAppsGridView grid = mAllAppsGrid = (AllAppsGridView)findViewById(R.id.all_apps);
+ DragLayer dragLayer = (DragLayer)findViewById(R.id.drag_layer);
+ dragLayer.setDragController(mDragController);
+
grid.setTextFilterEnabled(false);
- // TODO grid.setDragger(dragLayer);
+ grid.setDragController(mDragController);
grid.setLauncher(Launcher.this);
}
@@ -1930,7 +1935,11 @@
mWorkspace.hide();
}
- private void closeAllAppsDialog(boolean animated) {
+ void showWorkspace() {
+ mWorkspace.show();
+ }
+
+ void closeAllAppsDialog(boolean animated) {
if (mAllAppsDialog.isOpen) {
if (animated) {
// TODO mDrawer.animateClose();