OSDN Git Service

Introduce LauncherSearchCallback to handle search overlay status.
authorJun Mukai <mukai@google.com>
Tue, 12 May 2015 19:32:12 +0000 (12:32 -0700)
committerJun Mukai <mukai@google.com>
Tue, 12 May 2015 21:34:35 +0000 (14:34 -0700)
Bug: 20011047
Change-Id: I93cab4e0614b9658b4b657dd98dca68d42580e63

src/com/android/launcher3/Launcher.java
src/com/android/launcher3/LauncherCallbacks.java
src/com/android/launcher3/LauncherExtension.java

index 16e4ce6..3d88906 100644 (file)
@@ -546,6 +546,35 @@ public class Launcher extends Activity
                 }
             }
         });
+        mLauncherCallbacks.setLauncherSearchCallback(new Launcher.LauncherSearchCallbacks() {
+            private boolean mImportanceStored = false;
+            private int mWorkspaceImportanceForAccessibility =
+                View.IMPORTANT_FOR_ACCESSIBILITY_AUTO;
+            private int mHotseatImportanceForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_AUTO;
+
+            @Override
+            public void onSearchOverlayOpened() {
+                if (mImportanceStored) {
+                    return;
+                }
+                // The underlying workspace and hotseat are temporarily suppressed by the search
+                // overlay. So they sholudn't be accessible.
+                mWorkspaceImportanceForAccessibility = mWorkspace.getImportantForAccessibility();
+                mHotseatImportanceForAccessibility = mHotseat.getImportantForAccessibility();
+                mWorkspace.setImportantForAccessibility(
+                    View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
+                mHotseat.setImportantForAccessibility(
+                    View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
+                mImportanceStored = true;
+            }
+
+            @Override
+            public void onSearchOverlayClosed() {
+                mWorkspace.setImportantForAccessibility(mWorkspaceImportanceForAccessibility);
+                mHotseat.setImportantForAccessibility(mHotseatImportanceForAccessibility);
+                mImportanceStored = false;
+            }
+        });
         return true;
     }
 
@@ -1192,6 +1221,18 @@ public class Launcher extends Activity
         public void dismissAllApps();
     }
 
+    public interface LauncherSearchCallbacks {
+        /**
+         * Called when the search overlay is shown.
+         */
+        public void onSearchOverlayOpened();
+
+        /**
+         * Called when the search overlay is dismissed.
+         */
+        public void onSearchOverlayClosed();
+    }
+
     public interface LauncherOverlayCallbacks {
         /**
          * This method indicates whether a call to {@link #enterFullImmersion()} will succeed,
index 0124d1f..a5f36ba 100644 (file)
@@ -119,4 +119,11 @@ public interface LauncherCallbacks {
      */
     public void setLauncherAppsCallback(Object callbacks);
 
+    /**
+     * Sets the callbacks to allow reacting the actions of search overlays of the launcher.
+     *
+     * @param callbacks A set of callbacks to the Launcher, is actually a LauncherSearchCallback,
+     *                  but for implementation purposes is passed around as an object.
+     */
+    public void setLauncherSearchCallback(Object callbacks);
 }
index 14ad601..09a105b 100644 (file)
@@ -289,6 +289,11 @@ public class LauncherExtension extends Launcher {
             // Do nothing
         }
 
+        @Override
+        public void setLauncherSearchCallback(Object callbacks) {
+            // Do nothing
+        }
+
         class LauncherExtensionOverlay implements LauncherOverlay {
             LauncherOverlayCallbacks mLauncherOverlayCallbacks;
             ViewGroup mOverlayView;