diff options
Diffstat (limited to 'src/com/android/browser/TitleBarBase.java')
-rw-r--r-- | src/com/android/browser/TitleBarBase.java | 74 |
1 files changed, 72 insertions, 2 deletions
diff --git a/src/com/android/browser/TitleBarBase.java b/src/com/android/browser/TitleBarBase.java index 1e944f1..f62e0e4 100644 --- a/src/com/android/browser/TitleBarBase.java +++ b/src/com/android/browser/TitleBarBase.java @@ -16,13 +16,19 @@ package com.android.browser; +import com.android.browser.UrlInputView.UrlInputListener; + +import android.app.SearchManager; import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.PaintDrawable; +import android.os.Bundle; +import android.speech.RecognizerResultsIntent; import android.view.Gravity; import android.view.View; import android.widget.AbsoluteLayout; @@ -32,15 +38,21 @@ import android.widget.LinearLayout; /** * Base class for a title bar used by the browser. */ -public class TitleBarBase extends LinearLayout { +public class TitleBarBase extends LinearLayout implements UrlInputListener { // These need to be set by the subclass. protected ImageView mFavicon; protected ImageView mLockIcon; protected Drawable mGenericFavicon; + protected UiController mUiController; + protected BaseUi mBaseUi; + protected UrlInputView mUrlInput; + protected boolean mInVoiceMode; - public TitleBarBase(Context context) { + public TitleBarBase(Context context, UiController controller, BaseUi ui) { super(context, null); + mUiController = controller; + mBaseUi = ui; mGenericFavicon = context.getResources().getDrawable( R.drawable.app_web_browser_sm); } @@ -98,4 +110,62 @@ public class TitleBarBase extends LinearLayout { } } + // UrlInputListener implementation + + /** + * callback from suggestion dropdown + * user selected a suggestion + */ + @Override + public void onAction(String text, String extra, String source) { + mUiController.getCurrentTopWebView().requestFocus(); + mBaseUi.hideTitleBar(); + Intent i = new Intent(); + String action = null; + if (UrlInputView.VOICE.equals(source)) { + action = RecognizerResultsIntent.ACTION_VOICE_SEARCH_RESULTS; + source = null; + } else { + action = Intent.ACTION_SEARCH; + } + i.setAction(action); + i.putExtra(SearchManager.QUERY, text); + if (extra != null) { + i.putExtra(SearchManager.EXTRA_DATA_KEY, extra); + } + if (source != null) { + Bundle appData = new Bundle(); + appData.putString(com.android.common.Search.SOURCE, source); + i.putExtra(SearchManager.APP_DATA, appData); + } + mUiController.handleNewIntent(i); + setDisplayTitle(text); + } + + @Override + public void onDismiss() { + final Tab currentTab = mBaseUi.getActiveTab(); + mBaseUi.hideTitleBar(); + post(new Runnable() { + public void run() { + clearFocus(); + if ((currentTab != null) && !mInVoiceMode) { + setDisplayTitle(currentTab.getUrl()); + } + } + }); + } + + /** + * callback from the suggestion dropdown + * copy text to input field and stay in edit mode + */ + @Override + public void onCopySuggestion(String text) { + mUrlInput.setText(text, true); + if (text != null) { + mUrlInput.setSelection(text.length()); + } + } + } |