Don't show application info icon on workspace

Change-Id: I79e59211633609f4bd13e91a6c745ff28a309e2e
diff --git a/src/com/android/launcher2/AllAppsPagedView.java b/src/com/android/launcher2/AllAppsPagedView.java
index dccc03d..5b98a15 100644
--- a/src/com/android/launcher2/AllAppsPagedView.java
+++ b/src/com/android/launcher2/AllAppsPagedView.java
@@ -205,18 +205,16 @@
     private void setupDragMode() {
         mLauncher.getWorkspace().shrink(Workspace.ShrinkState.BOTTOM_VISIBLE);
 
-        ApplicationInfoDropTarget infoButton =
-                (ApplicationInfoDropTarget) mLauncher.findViewById(R.id.info_button);
-        infoButton.setDragAndDropEnabled(false);
         DeleteZone deleteZone = (DeleteZone) mLauncher.findViewById(R.id.delete_zone);
         deleteZone.setDragAndDropEnabled(false);
 
+        DeleteZone allAppsDeleteZone = (DeleteZone)
+                mLauncher.findViewById(R.id.all_apps_delete_zone);
+        allAppsDeleteZone.setDragAndDropEnabled(true);
+
         ApplicationInfoDropTarget allAppsInfoButton =
                 (ApplicationInfoDropTarget) mLauncher.findViewById(R.id.all_apps_info_target);
         allAppsInfoButton.setDragAndDropEnabled(true);
-        DeleteZone allAppsDeleteZone = (DeleteZone)
-                mLauncher.findViewById(R.id.all_apps_delete_zone);
-        allAppsDeleteZone.setDragAndDropEnabled(true);
     }
 
     private void tearDownDragMode() {
@@ -225,18 +223,16 @@
             // deleteZone and the appInfoButton in all apps, and re-enable the instance which
             // live in the workspace
             public void run() {
-                ApplicationInfoDropTarget infoButton =
-                    (ApplicationInfoDropTarget) mLauncher.findViewById(R.id.info_button);
-                infoButton.setDragAndDropEnabled(true);
                 DeleteZone deleteZone = (DeleteZone) mLauncher.findViewById(R.id.delete_zone);
                 deleteZone.setDragAndDropEnabled(true);
 
+                DeleteZone allAppsDeleteZone =
+                        (DeleteZone) mLauncher.findViewById(R.id.all_apps_delete_zone);
+                allAppsDeleteZone.setDragAndDropEnabled(false);
+
                 ApplicationInfoDropTarget allAppsInfoButton =
                     (ApplicationInfoDropTarget) mLauncher.findViewById(R.id.all_apps_info_target);
                 allAppsInfoButton.setDragAndDropEnabled(false);
-                DeleteZone allAppsDeleteZone =
-                        (DeleteZone) mLauncher.findViewById(R.id.all_apps_delete_zone);
-                allAppsDeleteZone.setDragAndDropEnabled(false);
             }
         });
         resetCheckedGrandchildren();
diff --git a/src/com/android/launcher2/ApplicationInfoDropTarget.java b/src/com/android/launcher2/ApplicationInfoDropTarget.java
index 7c81c1a..9d421c6 100644
--- a/src/com/android/launcher2/ApplicationInfoDropTarget.java
+++ b/src/com/android/launcher2/ApplicationInfoDropTarget.java
@@ -39,8 +39,6 @@
     private static final int sFadeOutAnimationDuration = 100;
 
     private AnimatorSet mFadeAnimator;
-    private ObjectAnimator mHandleFadeAnimator;
-    private boolean mHandleWasVisibleOnDragStart;
 
     public ApplicationInfoDropTarget(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
@@ -62,7 +60,6 @@
 
     public boolean acceptDrop(DragSource source, int x, int y, int xOffset, int yOffset,
             DragView dragView, Object dragInfo) {
-
         // acceptDrop is called just before onDrop. We do the work here, rather than
         // in onDrop, because it allows us to reject the drop (by returning false)
         // so that the object being dragged isn't removed from the home screen.
@@ -101,25 +98,18 @@
                 Animator infoButtonAnimator = ObjectAnimator.ofFloat(this, "alpha", 0.0f, 1.0f);
                 infoButtonAnimator.setDuration(sFadeInAnimationDuration);
 
-                if (mHandle == mLauncher.findViewById(R.id.configure_button)) {
-                    final View divider = mLauncher.findViewById(R.id.divider_during_drag);
-                    divider.setVisibility(VISIBLE);
-                    Animator dividerAnimator = ObjectAnimator.ofFloat(divider, "alpha", 1.0f);
-                    dividerAnimator.setDuration(sFadeInAnimationDuration);
-                    mFadeAnimator.play(infoButtonAnimator).with(dividerAnimator);
-                } else {
-                    mFadeAnimator.play(infoButtonAnimator);
-                }
-                mFadeAnimator.start();
+                mFadeAnimator.play(infoButtonAnimator);
+
                 setVisibility(VISIBLE);
 
-                // Fade out the handle
-                if (mHandle != null) {
-                    mHandleWasVisibleOnDragStart = mHandle.getVisibility() == VISIBLE;
-                    if (mHandleFadeAnimator != null) mHandleFadeAnimator.cancel();
-                    mHandleFadeAnimator = ObjectAnimator.ofFloat(mHandle, "alpha", 0.0f);
-                    mHandleFadeAnimator.setDuration(sFadeOutAnimationDuration);
-                    mHandleFadeAnimator.addListener(new AnimatorListener() {
+                // Fade out the overlapping views
+                if (mOverlappingViews != null) {
+                    for (View view : mOverlappingViews) {
+                        ObjectAnimator oa = ObjectAnimator.ofFloat(view, "alpha", 0.0f);
+                        oa.setDuration(sFadeOutAnimationDuration);
+                        mFadeAnimator.play(oa);
+                    }
+                    mFadeAnimator.addListener(new AnimatorListener() {
                         public void onAnimationStart(Animator animation) {}
                         public void onAnimationRepeat(Animator animation) {}
                         public void onAnimationEnd(Animator animation) {
@@ -129,12 +119,14 @@
                             onEndOrCancel();
                         }
                         private void onEndOrCancel() {
-                            mHandle.setVisibility(INVISIBLE);
-                            mHandleFadeAnimator = null;
+                            for (View view : mOverlappingViews) {
+                                view.setVisibility(INVISIBLE);
+                            }
+                            mFadeAnimator = null;
                         }
                     });
-                    mHandleFadeAnimator.start();
                 }
+                mFadeAnimator.start();
             }
         }
     }
@@ -148,9 +140,6 @@
         mFadeAnimator = new AnimatorSet();
         Animator infoButtonAnimator = ObjectAnimator.ofFloat(this, "alpha", 0.0f);
         infoButtonAnimator.setDuration(sFadeOutAnimationDuration);
-        final View divider = mLauncher.findViewById(R.id.divider_during_drag);
-        divider.setVisibility(VISIBLE);
-        Animator dividerAnimator = ObjectAnimator.ofFloat(divider, "alpha", 0.0f);
         mFadeAnimator.addListener(new AnimatorListener() {
             public void onAnimationStart(Animator animation) {}
             public void onAnimationRepeat(Animator animation) {}
@@ -162,20 +151,20 @@
             }
             private void onEndOrCancel() {
                 setVisibility(GONE);
-                divider.setVisibility(GONE);
                 mFadeAnimator = null;
             }
         });
-        mFadeAnimator.play(infoButtonAnimator).with(dividerAnimator);
-        mFadeAnimator.start();
+        mFadeAnimator.play(infoButtonAnimator);
 
-        // Fade in the handle
-        if (mHandle != null && mHandleWasVisibleOnDragStart) {
-            if (mHandleFadeAnimator != null) mHandleFadeAnimator.cancel();
-            mHandleFadeAnimator = ObjectAnimator.ofFloat(mHandle, "alpha", 1.0f);
-            mHandleFadeAnimator.setDuration(sFadeInAnimationDuration);
-            mHandleFadeAnimator.start();
-            mHandle.setVisibility(VISIBLE);
+        // Fade in the overlapping views
+        if (mOverlappingViews != null) {
+            for (View view : mOverlappingViews) {
+                ObjectAnimator oa = ObjectAnimator.ofFloat(view, "alpha", 1.0f);
+                oa.setDuration(sFadeInAnimationDuration);
+                mFadeAnimator.play(oa);
+                view.setVisibility(VISIBLE);
+            }
         }
+        mFadeAnimator.start();
     }
 }
diff --git a/src/com/android/launcher2/DeleteZone.java b/src/com/android/launcher2/DeleteZone.java
index 773bc6b..16061d3 100644
--- a/src/com/android/launcher2/DeleteZone.java
+++ b/src/com/android/launcher2/DeleteZone.java
@@ -166,8 +166,10 @@
 
             createAnimations();
             startAnimation(mInAnimation);
-            if (mHandle != null) {
-                mHandle.startAnimation(mHandleOutAnimation);
+            if (mOverlappingViews != null) {
+                for (View view : mOverlappingViews) {
+                    view.startAnimation(mHandleOutAnimation);
+                }
             }
             setVisibility(VISIBLE);
         }
@@ -179,8 +181,10 @@
             mDragController.setDeleteRegion(null);
 
             if (mOutAnimation != null) startAnimation(mOutAnimation);
-            if (mHandleInAnimation != null && mHandle != null) {
-                mHandle.startAnimation(mHandleInAnimation);
+            if (mHandleInAnimation != null && mOverlappingViews != null) {
+                for (View view : mOverlappingViews) {
+                    view.startAnimation(mHandleInAnimation);
+                }
             }
             setVisibility(GONE);
         }
diff --git a/src/com/android/launcher2/IconDropTarget.java b/src/com/android/launcher2/IconDropTarget.java
index ec08c1e..bfc46cf 100644
--- a/src/com/android/launcher2/IconDropTarget.java
+++ b/src/com/android/launcher2/IconDropTarget.java
@@ -35,8 +35,8 @@
     protected Launcher mLauncher;
 
     /**
-     * If true, this View responsible for managing its own visibility, and that of its handle.
-     * This is generally the case, but it will be set to false when this is part of the
+     * If true, this View responsible for managing its own visibility, and that of its overlapping
+     *  views. This is generally the case, but it will be set to false when this is part of the
      * Contextual Action Bar.
      */
     protected boolean mDragAndDropEnabled;
@@ -44,8 +44,8 @@
     /** Whether this drop target is active for the current drag */
     protected boolean mActive;
 
-    /** The view that this view should appear in the place of. */
-    protected View mHandle = null;
+    /** The views that this view should appear in the place of. */
+    protected View[] mOverlappingViews = null;
 
     /** The paint applied to the drag view on hover */
     protected final Paint mHoverPaint = new Paint();
@@ -73,8 +73,12 @@
         mLauncher = launcher;
     }
 
-    void setHandle(View view) {
-        mHandle = view;
+    void setOverlappingView(View view) {
+        mOverlappingViews = new View[] { view };
+    }
+    
+    void setOverlappingViews(View[] views) {
+        mOverlappingViews = views;
     }
 
     void setDragAndDropEnabled(boolean enabled) {
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 696380c..3c1c336 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -987,12 +987,16 @@
         deleteZone.setLauncher(this);
         deleteZone.setDragController(dragController);
         int deleteZoneHandleId;
+
+        final View allAppsButton = findViewById(R.id.all_apps_button);
+        final View divider = findViewById(R.id.divider);
+        final View configureButton = findViewById(R.id.configure_button);
+
         if (LauncherApplication.isScreenXLarge()) {
-            deleteZoneHandleId = R.id.all_apps_button;
+            mDeleteZone.setOverlappingViews(new View[] { allAppsButton, divider, configureButton });
         } else {
-            deleteZoneHandleId = R.id.all_apps_button_cluster;
+            deleteZone.setOverlappingView(configureButton);
         }
-        deleteZone.setHandle(findViewById(deleteZoneHandleId));
         dragController.addDragListener(deleteZone);
 
         DeleteZone allAppsDeleteZone = (DeleteZone) findViewById(R.id.all_apps_delete_zone);
@@ -1012,17 +1016,10 @@
             allAppsInfoTarget.setDragAndDropEnabled(false);
             View marketButton = findViewById(R.id.market_button);
             if (marketButton != null) {
-                allAppsInfoTarget.setHandle(marketButton);
+                allAppsInfoTarget.setOverlappingView(marketButton);
             }
         }
 
-        ApplicationInfoDropTarget infoButton = (ApplicationInfoDropTarget)findViewById(R.id.info_button);
-        if (infoButton != null) {
-            infoButton.setLauncher(this);
-            infoButton.setHandle(findViewById(R.id.configure_button));
-            dragController.addDragListener(infoButton);
-        }
-
         dragController.setDragScoller(workspace);
         dragController.setScrollView(dragLayer);
         dragController.setMoveTarget(workspace);
@@ -1030,9 +1027,6 @@
         // The order here is bottom to top.
         dragController.addDropTarget(workspace);
         dragController.addDropTarget(deleteZone);
-        if (infoButton != null) {
-            dragController.addDropTarget(infoButton);
-        }
         if (allAppsInfoTarget != null) {
             dragController.addDropTarget(allAppsInfoTarget);
         }
@@ -2600,7 +2594,7 @@
             hideOrShowToolbarButton(true, allAppsButton, showSeq);
             hideOrShowToolbarButton(true, divider, showSeq);
             hideOrShowToolbarButton(true, configureButton, showSeq);
-            mDeleteZone.setHandle(allAppsButton);
+            mDeleteZone.setOverlappingViews(new View[] { allAppsButton, divider, configureButton });
             break;
         case ALL_APPS:
             hideOrShowToolbarButton(false, configureButton, hideSeq);
@@ -2613,7 +2607,7 @@
             hideOrShowToolbarButton(false, searchButton, hideSeq);
             hideOrShowToolbarButton(false, divider, hideSeq);
             hideOrShowToolbarButton(false, configureButton, hideSeq);
-            mDeleteZone.setHandle(allAppsButton);
+            //mDeleteZone.setOverlappingView(configureButton);
             break;
         }
     }
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index eaa09ac..a066a16 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -171,7 +171,7 @@
     // in all apps or customize mode)
     private boolean mIsSmall = false;
     private boolean mIsInUnshrinkAnimation = false;
-    private AnimatorListener mShrinkAnimationListener, mUnshrinkAnimationListener;
+    private AnimatorListener mUnshrinkAnimationListener;
     enum ShrinkState { TOP, SPRING_LOADED, MIDDLE, BOTTOM_HIDDEN, BOTTOM_VISIBLE };
     private ShrinkState mShrinkState;
     private boolean mWasSpringLoadedOnDragExit = false;