Merge change Ida50e915 into eclair

* changes:
  Pass limit=50 to all suggestion sources.
This commit is contained in:
Android (Google) Code Review
2009-09-28 15:47:56 -04:00
2 changed files with 34 additions and 8 deletions

View File

@ -27,9 +27,9 @@ import android.os.Handler;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.server.search.SearchableInfo; import android.server.search.SearchableInfo;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.text.TextUtils;
import java.util.List; import java.util.List;
@ -1590,6 +1590,13 @@ public class SearchManager
*/ */
public final static String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1"; public final static String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1";
/**
* Query parameter added to suggestion queries to limit the number of suggestions returned.
*
* @hide Pending API council approval
*/
public final static String SUGGEST_PARAMETER_LIMIT = "limit";
/** /**
* If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION}, * If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION},
* the search dialog will switch to a different suggestion source when the * the search dialog will switch to a different suggestion source when the
@ -1980,6 +1987,21 @@ public class SearchManager
* @hide because SearchableInfo is not part of the API. * @hide because SearchableInfo is not part of the API.
*/ */
public Cursor getSuggestions(SearchableInfo searchable, String query) { public Cursor getSuggestions(SearchableInfo searchable, String query) {
return getSuggestions(searchable, query, -1);
}
/**
* Gets a cursor with search suggestions.
*
* @param searchable Information about how to get the suggestions.
* @param query The search text entered (so far).
* @param limit The query limit to pass to the suggestion provider. This is advisory,
* the returned cursor may contain more rows. Pass {@code -1} for no limit.
* @return a cursor with suggestions, or <code>null</null> the suggestion query failed.
*
* @hide because SearchableInfo is not part of the API.
*/
public Cursor getSuggestions(SearchableInfo searchable, String query, int limit) {
if (searchable == null) { if (searchable == null) {
return null; return null;
} }
@ -1991,7 +2013,9 @@ public class SearchManager
Uri.Builder uriBuilder = new Uri.Builder() Uri.Builder uriBuilder = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT) .scheme(ContentResolver.SCHEME_CONTENT)
.authority(authority); .authority(authority)
.query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel()
.fragment(""); // TODO: Remove, workaround for a bug in Uri.writeToParcel()
// if content path provided, insert it now // if content path provided, insert it now
final String contentPath = searchable.getSuggestPath(); final String contentPath = searchable.getSuggestPath();
@ -2012,10 +2036,11 @@ public class SearchManager
uriBuilder.appendPath(query); uriBuilder.appendPath(query);
} }
Uri uri = uriBuilder if (limit > 0) {
.query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() uriBuilder.appendQueryParameter(SUGGEST_PARAMETER_LIMIT, String.valueOf(limit));
.fragment("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() }
.build();
Uri uri = uriBuilder.build();
// finally, make the query // finally, make the query
return mContext.getContentResolver().query(uri, null, selection, selArgs, null); return mContext.getContentResolver().query(uri, null, selection, selArgs, null);

View File

@ -58,6 +58,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
private static final boolean DBG = false; private static final boolean DBG = false;
private static final String LOG_TAG = "SuggestionsAdapter"; private static final String LOG_TAG = "SuggestionsAdapter";
private static final int QUERY_LIMIT = 50;
private SearchManager mSearchManager; private SearchManager mSearchManager;
private SearchDialog mSearchDialog; private SearchDialog mSearchDialog;
@ -186,7 +187,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
mSearchDialog.getWindow().getDecorView().post(mStartSpinnerRunnable); mSearchDialog.getWindow().getDecorView().post(mStartSpinnerRunnable);
} }
try { try {
final Cursor cursor = mSearchManager.getSuggestions(mSearchable, query); final Cursor cursor = mSearchManager.getSuggestions(mSearchable, query, QUERY_LIMIT);
// trigger fill window so the spinner stays up until the results are copied over and // trigger fill window so the spinner stays up until the results are copied over and
// closer to being ready // closer to being ready
if (!mGlobalSearchMode && cursor != null) cursor.getCount(); if (!mGlobalSearchMode && cursor != null) cursor.getCount();