From cfa3af5c59abb38c895416a80ef16da0ec1b5287 Mon Sep 17 00:00:00 2001 From: Michael Kolb Date: Tue, 14 Dec 2010 10:36:11 -0800 Subject: Enable voice search http://b/issue?id=3039695 send voice search intent implement voice search title bar also fixes another Urlbar focus handling bug Change-Id: Icdcbec9ffff586d445545cc7fe86ca045022f381 --- src/com/android/browser/SuggestionsAdapter.java | 62 ++++++++++++++++--------- 1 file changed, 41 insertions(+), 21 deletions(-) (limited to 'src/com/android/browser/SuggestionsAdapter.java') diff --git a/src/com/android/browser/SuggestionsAdapter.java b/src/com/android/browser/SuggestionsAdapter.java index 6473dfd29..4c0217c3f 100644 --- a/src/com/android/browser/SuggestionsAdapter.java +++ b/src/com/android/browser/SuggestionsAdapter.java @@ -23,7 +23,6 @@ import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.AsyncTask; -import android.os.Handler; import android.provider.BrowserContract; import android.text.TextUtils; import android.view.LayoutInflater; @@ -69,6 +68,7 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, OnCli int mLinesPortrait; int mLinesLandscape; Object mResultsLock = new Object(); + List mVoiceResults; interface CompletionListener { @@ -92,6 +92,12 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, OnCli addSource(new CombinedCursor()); } + void setVoiceResults(List voiceResults) { + mVoiceResults = voiceResults; + notifyDataSetInvalidated(); + + } + public void setLandscapeMode(boolean mode) { mLandscapeMode = mode; notifyDataSetChanged(); @@ -132,11 +138,18 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, OnCli @Override public int getCount() { + if (mVoiceResults != null) { + return mVoiceResults.size(); + } return (mMixedResults == null) ? 0 : mMixedResults.getLineCount(); } @Override public SuggestItem getItem(int position) { + if (mVoiceResults != null) { + return new SuggestItem(mVoiceResults.get(position), null, + TYPE_SEARCH); + } if (mMixedResults == null) { return null; } @@ -176,7 +189,7 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, OnCli View s1 = view.findViewById(R.id.suggest1); View s2 = view.findViewById(R.id.suggest2); View div = view.findViewById(R.id.suggestion_divider); - if (mLandscapeMode) { + if (mLandscapeMode && (mVoiceResults == null)) { SuggestItem item = getItem(position); div.setVisibility(View.VISIBLE); if (item != null) { @@ -310,25 +323,30 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, OnCli @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults res = new FilterResults(); - if (TextUtils.isEmpty(constraint)) { - res.count = 0; - res.values = null; - return res; - } - startSuggestionsAsync(constraint); - List filterResults = new ArrayList(); - if (constraint != null) { - for (CursorSource sc : mSources) { - sc.runQuery(constraint); + if (mVoiceResults == null) { + if (TextUtils.isEmpty(constraint)) { + res.count = 0; + res.values = null; + return res; } - mixResults(filterResults); - } - synchronized (mResultsLock) { - mFilterResults = filterResults; + startSuggestionsAsync(constraint); + List filterResults = new ArrayList(); + if (constraint != null) { + for (CursorSource sc : mSources) { + sc.runQuery(constraint); + } + mixResults(filterResults); + } + synchronized (mResultsLock) { + mFilterResults = filterResults; + } + SuggestionResults mixed = buildSuggestionResults(); + res.count = mixed.getLineCount(); + res.values = mixed; + } else { + res.count = mVoiceResults.size(); + res.values = mVoiceResults; } - SuggestionResults mixed = buildSuggestionResults(); - res.count = mixed.getLineCount(); - res.values = mixed; return res; } @@ -348,8 +366,10 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, OnCli @Override protected void publishResults(CharSequence constraint, FilterResults fresults) { - mMixedResults = (SuggestionResults) fresults.values; - mListener.onFilterComplete(fresults.count); + if (fresults.values instanceof SuggestionResults) { + mMixedResults = (SuggestionResults) fresults.values; + mListener.onFilterComplete(fresults.count); + } notifyDataSetChanged(); } -- cgit v1.2.3