OSDN Git Service

Starting market search whenever the search key is pressed
authorSunny Goyal <sunnygoyal@google.com>
Wed, 2 Mar 2016 19:32:18 +0000 (11:32 -0800)
committerSunny Goyal <sunnygoyal@google.com>
Thu, 3 Mar 2016 18:36:35 +0000 (18:36 +0000)
Bug: 27365428
Change-Id: I508cb35cd1aaab1eac6cf60014fa6f80592365ef
(cherry picked from commit 992a5f566e7f1b1fc8bd766f1fd00bee7ea2a634)

src/com/android/launcher3/allapps/AllAppsContainerView.java
src/com/android/launcher3/allapps/AllAppsGridAdapter.java
src/com/android/launcher3/allapps/AllAppsSearchBarController.java

index 57da6c5..016381f 100644 (file)
@@ -228,7 +228,7 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
             throw new RuntimeException("Expected search bar controller to only be set once");
         }
         mSearchBarController = searchController;
-        mSearchBarController.initialize(mApps, mSearchInput, mAppsRecyclerView, this);
+        mSearchBarController.initialize(mApps, mSearchInput, mLauncher, this);
 
         updateBackgroundAndPaddings();
     }
index cfaf195..1b6f21b 100644 (file)
@@ -567,7 +567,7 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter.
     /**
      * Creates a new market search intent.
      */
-    private Intent createMarketSearchIntent(String query) {
+    public static Intent createMarketSearchIntent(String query) {
         Uri marketSearchUri = Uri.parse("market://search")
                 .buildUpon()
                 .appendQueryParameter("q", query)
index fdce389..f832a54 100644 (file)
@@ -28,11 +28,11 @@ import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
 
 import com.android.launcher3.ExtendedEditText;
+import com.android.launcher3.Launcher;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.util.ComponentKey;
 
 import java.util.ArrayList;
-import java.util.List;
 
 /**
  * An interface to a search box that AllApps can command.
@@ -40,9 +40,7 @@ import java.util.List;
 public abstract class AllAppsSearchBarController
         implements TextWatcher, OnEditorActionListener, ExtendedEditText.OnBackKeyListener {
 
-    private static final boolean ALLOW_SINGLE_APP_LAUNCH = true;
-
-    protected AllAppsRecyclerView mAppsRecyclerView;
+    protected Launcher mLauncher;
     protected AlphabeticalAppsList mApps;
     protected Callbacks mCb;
     protected ExtendedEditText mInput;
@@ -55,10 +53,10 @@ public abstract class AllAppsSearchBarController
      */
     public final void initialize(
             AlphabeticalAppsList apps, ExtendedEditText input,
-            AllAppsRecyclerView recycleView, Callbacks cb) {
+            Launcher launcher, Callbacks cb) {
         mApps = apps;
         mCb = cb;
-        mAppsRecyclerView = recycleView;
+        mLauncher = launcher;
 
         mInput = input;
         mInput.addTextChangedListener(this);
@@ -102,31 +100,17 @@ public abstract class AllAppsSearchBarController
 
     @Override
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-        // Skip if we disallow app-launch-on-enter
-        if (!ALLOW_SINGLE_APP_LAUNCH) {
-            return false;
-        }
         // Skip if it's not the right action
         if (actionId != EditorInfo.IME_ACTION_SEARCH) {
             return false;
         }
-        // Skip if there are more than one icon
-        if (mApps.getNumFilteredApps() > 1) {
+        // Skip if the query is empty
+        String query = v.getText().toString();
+        if (query.isEmpty()) {
             return false;
         }
-        // Otherwise, find the first icon, or fallback to the search-market-view and launch it
-        List<AlphabeticalAppsList.AdapterItem> items = mApps.getAdapterItems();
-        for (int i = 0; i < items.size(); i++) {
-            AlphabeticalAppsList.AdapterItem item = items.get(i);
-            switch (item.viewType) {
-                case AllAppsGridAdapter.ICON_VIEW_TYPE:
-                case AllAppsGridAdapter.SEARCH_MARKET_VIEW_TYPE:
-                    mAppsRecyclerView.getChildAt(i).performClick();
-                    mInputMethodManager.hideSoftInputFromWindow(mInput.getWindowToken(), 0);
-                    return true;
-            }
-        }
-        return false;
+        return mLauncher.startActivitySafely(
+                v, AllAppsGridAdapter.createMarketSearchIntent(query), null);
     }
 
     @Override