NavigationBarTablet.java revision 7cdc4906fc5852297a9a254c3251ad2f4dead6ee
1571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins/* 2571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * Copyright (C) 2010 The Android Open Source Project 3571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * 4571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * Licensed under the Apache License, Version 2.0 (the "License"); 5571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * you may not use this file except in compliance with the License. 6571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * You may obtain a copy of the License at 7571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * 8571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * http://www.apache.org/licenses/LICENSE-2.0 9571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * 10571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * Unless required by applicable law or agreed to in writing, software 11571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * distributed under the License is distributed on an "AS IS" BASIS, 12571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * See the License for the specific language governing permissions and 14571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins * limitations under the License. 15571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins */ 16571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins 17571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scrogginspackage com.android.browser; 18571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins 19c7485ae06c6d5d33c57a03d02bbeed54edb3c66fMichael Kolbimport com.android.browser.UrlInputView.UrlInputListener; 20793e05e5f64dba439922304e3b95c29969b36fd5Michael Kolbimport com.android.browser.search.SearchEngine; 21c7485ae06c6d5d33c57a03d02bbeed54edb3c66fMichael Kolb 228233facddcc51865d612a919d450db6954aa48e3Michael Kolbimport android.app.Activity; 23fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolbimport android.app.SearchManager; 24571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scrogginsimport android.content.Context; 25fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolbimport android.content.Intent; 26571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scrogginsimport android.content.res.Resources; 27fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolbimport android.graphics.Bitmap; 28571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scrogginsimport android.graphics.drawable.Drawable; 29257cc2c8fcdd7117317e89861d4509955a622be8Michael Kolbimport android.os.Bundle; 30bd2dd64dda88ca8a7c2b148d88c5a44e73e1c331Michael Kolbimport android.speech.RecognizerResultsIntent; 3131d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolbimport android.text.Editable; 321ce7813e6a0e42510fc1b3db5f5bb35999e1e87aMichael Kolbimport android.text.TextUtils; 3331d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolbimport android.text.TextWatcher; 34571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scrogginsimport android.view.LayoutInflater; 35571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scrogginsimport android.view.View; 36a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolbimport android.view.View.OnClickListener; 3731d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolbimport android.view.View.OnFocusChangeListener; 387cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolbimport android.view.ViewGroup; 39b6bc32c9c6ed3ec90d602a729a7bfa7741896cf4Michael Kolbimport android.webkit.WebView; 407cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolbimport android.widget.AbsoluteLayout; 417cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolbimport android.widget.FrameLayout; 425a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolbimport android.widget.ImageButton; 43571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scrogginsimport android.widget.ImageView; 44571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins 45cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolbimport java.util.List; 46cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb 47571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins/** 48fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb * tabbed title bar for xlarge screen browser 49571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins */ 50fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolbpublic class TitleBarXLarge extends TitleBarBase 5131d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb implements UrlInputListener, OnClickListener, OnFocusChangeListener, 5231d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb TextWatcher { 53fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb 54fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb private static final int PROGRESS_MAX = 100; 55fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb 568233facddcc51865d612a919d450db6954aa48e3Michael Kolb private UiController mUiController; 576670653d355fea0ae20dc51f6c693f994c4cbb54Michael Kolb private XLargeUi mUi; 588233facddcc51865d612a919d450db6954aa48e3Michael Kolb 59a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb private Drawable mStopDrawable; 60a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb private Drawable mReloadDrawable; 61c7485ae06c6d5d33c57a03d02bbeed54edb3c66fMichael Kolb 623f65c3831ff82a20f6f0edb08df2d7edae540044Michael Kolb private View mContainer; 635a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb private ImageButton mBackButton; 645a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb private ImageButton mForwardButton; 6531d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb private ImageView mStar; 665b2299cc2fd9c8ca9c8ea2574d15dc867fa1e793Michael Kolb private ImageView mWebIcon; 67a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb private View mSearchButton; 6831d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb private View mUrlContainer; 69513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb private View mGoButton; 70a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb private ImageView mStopButton; 71a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb private View mAllButton; 72b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb private View mClearButton; 7331d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb private View mVoiceSearch; 74cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb private View mVoiceSearchIndicator; 75c7485ae06c6d5d33c57a03d02bbeed54edb3c66fMichael Kolb private PageProgressView mProgressView; 7631d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb private UrlInputView mUrlInput; 77cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb private Drawable mFocusDrawable; 78cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb private Drawable mUnfocusDrawable; 79cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb private boolean mInVoiceMode; 8081b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb 81a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb private boolean mInLoad; 82376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb private boolean mUseQuickControls; 83a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb 8481b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb public TitleBarXLarge(Activity activity, UiController controller, 856670653d355fea0ae20dc51f6c693f994c4cbb54Michael Kolb XLargeUi ui) { 868233facddcc51865d612a919d450db6954aa48e3Michael Kolb super(activity); 878233facddcc51865d612a919d450db6954aa48e3Michael Kolb mUiController = controller; 8881b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb mUi = ui; 898233facddcc51865d612a919d450db6954aa48e3Michael Kolb Resources resources = activity.getResources(); 905a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb mStopDrawable = resources.getDrawable(R.drawable.ic_stop_holo_dark); 915a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb mReloadDrawable = resources.getDrawable(R.drawable.ic_refresh_holo_dark); 92cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mFocusDrawable = resources.getDrawable( 93cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb R.drawable.textfield_active_holo_dark); 94cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mUnfocusDrawable = resources.getDrawable( 95cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb R.drawable.textfield_default_holo_dark); 961605bef4e1f99805a801308f97ade622b907dc7aJohn Reck initLayout(activity); 97cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mInVoiceMode = false; 98fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb } 99571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins 1007cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb @Override 1017cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb void setTitleGravity(int gravity) { 1027cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb if (mUseQuickControls) { 1037cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb FrameLayout.LayoutParams lp = 1047cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb (FrameLayout.LayoutParams) getLayoutParams(); 1057cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb lp.gravity = gravity; 1067cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb setLayoutParams(lp); 1077cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb } else { 1087cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb super.setTitleGravity(gravity); 1097cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb } 1107cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb } 1117cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb 1121605bef4e1f99805a801308f97ade622b907dc7aJohn Reck private void initLayout(Context context) { 113fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb LayoutInflater factory = LayoutInflater.from(context); 114a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb factory.inflate(R.layout.url_bar, this); 115571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins 1163f65c3831ff82a20f6f0edb08df2d7edae540044Michael Kolb mContainer = findViewById(R.id.taburlbar); 11731d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput = (UrlInputView) findViewById(R.id.url_focused); 118fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb mAllButton = findViewById(R.id.all_btn); 119fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb // TODO: Change enabled states based on whether you can go 120571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins // back/forward. Probably should be done inside onPageStarted. 1215a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb mBackButton = (ImageButton) findViewById(R.id.back); 1225a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb mForwardButton = (ImageButton) findViewById(R.id.forward); 1235b2299cc2fd9c8ca9c8ea2574d15dc867fa1e793Michael Kolb mWebIcon = (ImageView) findViewById(R.id.web_icon); 12431d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mStar = (ImageView) findViewById(R.id.star); 125a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mStopButton = (ImageView) findViewById(R.id.stop); 126a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mSearchButton = findViewById(R.id.search); 127a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mLockIcon = (ImageView) findViewById(R.id.lock); 128513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb mGoButton = findViewById(R.id.go); 129b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb mClearButton = findViewById(R.id.clear); 13031d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mVoiceSearch = findViewById(R.id.voicesearch); 131c7485ae06c6d5d33c57a03d02bbeed54edb3c66fMichael Kolb mProgressView = (PageProgressView) findViewById(R.id.progress); 13231d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlContainer = findViewById(R.id.urlbar_focused); 133cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mVoiceSearchIndicator = findViewById(R.id.voice_icon); 134a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mBackButton.setOnClickListener(this); 135a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mForwardButton.setOnClickListener(this); 136a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mStar.setOnClickListener(this); 137a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mAllButton.setOnClickListener(this); 138a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mStopButton.setOnClickListener(this); 139a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mSearchButton.setOnClickListener(this); 140513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb mGoButton.setOnClickListener(this); 141b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb mClearButton.setOnClickListener(this); 142cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mVoiceSearch.setOnClickListener(this); 14331d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput.setUrlInputListener(this); 14431d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput.setContainer(mUrlContainer); 14531d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput.setController(mUiController); 14631d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput.setOnFocusChangeListener(this); 14731d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput.setSelectAllOnFocus(true); 14831d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput.addTextChangedListener(this); 14947171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb setEditMode(false); 15031d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb } 15131d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb 1525a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb void updateNavigationState(Tab tab) { 1535a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb WebView web = tab.getWebView(); 1545a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb if (web != null) { 1555a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb mBackButton.setImageResource(web.canGoBack() 1565a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb ? R.drawable.ic_back_holo_dark 1575a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb : R.drawable.ic_back_disabled_holo_dark); 1585a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb mForwardButton.setImageResource(web.canGoForward() 1595a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb ? R.drawable.ic_forward_holo_dark 1605a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb : R.drawable.ic_forward_disabled_holo_dark); 1615a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb } 1625a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb } 1635a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb 1647cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb private ViewGroup.LayoutParams makeLayoutParams() { 1657cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb if (mUseQuickControls) { 1667cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb return new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, 1677cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb LayoutParams.WRAP_CONTENT); 168cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb } else { 1697cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb return new AbsoluteLayout.LayoutParams( 1707cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1717cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb 0, 0); 172cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb } 173cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb } 174cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb 175376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb void setUseQuickControls(boolean useQuickControls) { 176376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mUseQuickControls = useQuickControls; 17791902d5db3dcbd161bf824620567e210d6f4fcbeMichael Kolb mUrlInput.setUseQuickControls(mUseQuickControls); 1787cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb setLayoutParams(makeLayoutParams()); 179376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb if (mUseQuickControls) { 180376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mBackButton.setVisibility(View.GONE); 181376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mForwardButton.setVisibility(View.GONE); 182376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mStopButton.setVisibility(View.GONE); 183376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mAllButton.setVisibility(View.GONE); 184376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb } else { 185376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mBackButton.setVisibility(View.VISIBLE); 186376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mForwardButton.setVisibility(View.VISIBLE); 187376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mStopButton.setVisibility(View.VISIBLE); 188376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mAllButton.setVisibility(View.VISIBLE); 189376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb } 190376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb } 191376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb 192376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb void setShowProgressOnly(boolean progress) { 193376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb if (progress) { 194376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mContainer.setVisibility(View.GONE); 195376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb } else { 196376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mContainer.setVisibility(View.VISIBLE); 197376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb } 198376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb } 199376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb 20031d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb @Override 20131d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb public void onFocusChange(View view, boolean hasFocus) { 2027cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb setEditMode(hasFocus); 203cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mUrlContainer.setBackgroundDrawable(hasFocus 204cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb ? mFocusDrawable : mUnfocusDrawable); 205c7485ae06c6d5d33c57a03d02bbeed54edb3c66fMichael Kolb } 206b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb 2074cd97793901e8f5681cf642d0b2684697964a37aLeon Scroggins public void setCurrentUrlIsBookmark(boolean isBookmark) { 20831d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mStar.setActivated(isBookmark); 2094cd97793901e8f5681cf642d0b2684697964a37aLeon Scroggins } 2104cd97793901e8f5681cf642d0b2684697964a37aLeon Scroggins 21181b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb /** 21281b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb * called from the Ui when the user wants to edit 21381b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb * @param clearInput clear the input field 21481b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb */ 21581b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb void onEditUrl(boolean clearInput) { 216bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb // editing takes preference of progress 217bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb mContainer.setVisibility(View.VISIBLE); 218bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb if (mUseQuickControls) { 219bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb mProgressView.setVisibility(View.GONE); 220bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb } 221cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb if (!mUrlInput.hasFocus()) { 222cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mUrlInput.requestFocus(); 223cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb } 22481b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb if (clearInput) { 22581b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb mUrlInput.setText(""); 226cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb } else if (mInVoiceMode) { 227cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mUrlInput.showDropDown(); 22881b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb } 22981b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb } 23081b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb 23181b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb boolean isEditingUrl() { 23281b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb return mUrlInput.hasFocus(); 23381b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb } 23481b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb 2357cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb void stopEditingUrl() { 2367cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb mUrlInput.clearFocus(); 2377cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb } 2387cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb 239a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb @Override 240a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb public void onClick(View v) { 2417cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb if (mBackButton == v) { 2428233facddcc51865d612a919d450db6954aa48e3Michael Kolb mUiController.getCurrentTopWebView().goBack(); 243a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb } else if (mForwardButton == v) { 2448233facddcc51865d612a919d450db6954aa48e3Michael Kolb mUiController.getCurrentTopWebView().goForward(); 245a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb } else if (mStar == v) { 2468233facddcc51865d612a919d450db6954aa48e3Michael Kolb mUiController.bookmarkCurrentPage( 24788d080394ca18120e05c6926b178fd6843ff9cecLeon Scroggins AddBookmarkPage.DEFAULT_FOLDER_ID); 248a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb } else if (mAllButton == v) { 2498233facddcc51865d612a919d450db6954aa48e3Michael Kolb mUiController.bookmarksOrHistoryPicker(false); 250a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb } else if (mSearchButton == v) { 25181b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb mUi.editUrl(true); 252a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb } else if (mStopButton == v) { 253a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb stopOrRefresh(); 254513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb } else if (mGoButton == v) { 25531d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb if (!TextUtils.isEmpty(mUrlInput.getText())) { 25631d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb onAction(mUrlInput.getText().toString(), null, 257257cc2c8fcdd7117317e89861d4509955a622be8Michael Kolb UrlInputView.TYPED); 2581ce7813e6a0e42510fc1b3db5f5bb35999e1e87aMichael Kolb } 259b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb } else if (mClearButton == v) { 26031d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb clearOrClose(); 261cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb } else if (mVoiceSearch == v) { 262cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mUiController.startVoiceSearch(); 263fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb } 264fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb } 265fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb 266a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb @Override 267a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb void setFavicon(Bitmap icon) { } 268fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb 26931d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb private void clearOrClose() { 27031d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb if (TextUtils.isEmpty(mUrlInput.getText())) { 27131d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb // close 2727cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb mUrlInput.clearFocus(); 27331d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb } else { 27431d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb // clear 27531d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput.setText(""); 27631d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb } 27731d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb } 27831d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb 279fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb // UrlInputListener implementation 280fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb 28181b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb /** 28281b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb * callback from suggestion dropdown 28381b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb * user selected a suggestion 28481b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb */ 285fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb @Override 286257cc2c8fcdd7117317e89861d4509955a622be8Michael Kolb public void onAction(String text, String extra, String source) { 2878233facddcc51865d612a919d450db6954aa48e3Michael Kolb mUiController.getCurrentTopWebView().requestFocus(); 2887cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb mUi.hideTitleBar(); 289fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb Intent i = new Intent(); 290bd2dd64dda88ca8a7c2b148d88c5a44e73e1c331Michael Kolb String action = null; 291bd2dd64dda88ca8a7c2b148d88c5a44e73e1c331Michael Kolb if (UrlInputView.VOICE.equals(source)) { 292bd2dd64dda88ca8a7c2b148d88c5a44e73e1c331Michael Kolb action = RecognizerResultsIntent.ACTION_VOICE_SEARCH_RESULTS; 293bd2dd64dda88ca8a7c2b148d88c5a44e73e1c331Michael Kolb source = null; 294bd2dd64dda88ca8a7c2b148d88c5a44e73e1c331Michael Kolb } else { 295bd2dd64dda88ca8a7c2b148d88c5a44e73e1c331Michael Kolb action = Intent.ACTION_SEARCH; 296bd2dd64dda88ca8a7c2b148d88c5a44e73e1c331Michael Kolb } 297bd2dd64dda88ca8a7c2b148d88c5a44e73e1c331Michael Kolb i.setAction(action); 298fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb i.putExtra(SearchManager.QUERY, text); 29940f720ecfd4ef7ebb657f0fc1906a9982b3bafbdJohn Reck if (extra != null) { 30040f720ecfd4ef7ebb657f0fc1906a9982b3bafbdJohn Reck i.putExtra(SearchManager.EXTRA_DATA_KEY, extra); 30140f720ecfd4ef7ebb657f0fc1906a9982b3bafbdJohn Reck } 302257cc2c8fcdd7117317e89861d4509955a622be8Michael Kolb if (source != null) { 303257cc2c8fcdd7117317e89861d4509955a622be8Michael Kolb Bundle appData = new Bundle(); 304257cc2c8fcdd7117317e89861d4509955a622be8Michael Kolb appData.putString(com.android.common.Search.SOURCE, source); 305257cc2c8fcdd7117317e89861d4509955a622be8Michael Kolb i.putExtra(SearchManager.APP_DATA, appData); 306257cc2c8fcdd7117317e89861d4509955a622be8Michael Kolb } 3078233facddcc51865d612a919d450db6954aa48e3Michael Kolb mUiController.handleNewIntent(i); 308513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb setDisplayTitle(text); 309fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb } 310fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb 311fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb @Override 312fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb public void onDismiss() { 31347171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb final Tab currentTab = mUi.getActiveTab(); 3147cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb mUi.hideTitleBar(); 31547171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb post(new Runnable() { 31647171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb public void run() { 31747171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb TitleBarXLarge.this.clearFocus(); 31847171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb if ((currentTab != null) && !mInVoiceMode) { 31947171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb setDisplayTitle(currentTab.getUrl()); 32047171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb } 32147171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb } 32247171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb }); 323513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb } 324513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb 32581b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb /** 32681b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb * callback from the suggestion dropdown 32781b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb * copy text to input field and stay in edit mode 32881b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb */ 329513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb @Override 3307cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb public void onCopySuggestion(String text) { 3314851f9e1ad82f87bad3e7c88880be2936b242dd2John Reck mUrlInput.setText(text, true); 332513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb if (text != null) { 33331d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput.setSelection(text.length()); 334513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb } 335513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb } 336513286f421ad4aadc4d016d455ea7c520a0f2f59Michael Kolb 3377cdc4906fc5852297a9a254c3251ad2f4dead6eeMichael Kolb private void setEditMode(boolean edit) { 33847171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb if (edit) { 33931d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput.setDropDownWidth(mUrlContainer.getWidth()); 34031d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mUrlInput.setDropDownHorizontalOffset(-mUrlInput.getLeft()); 341b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb mSearchButton.setVisibility(View.GONE); 34231d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mStar.setVisibility(View.GONE); 34331d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mClearButton.setVisibility(View.VISIBLE); 344cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb if (mInVoiceMode) { 345cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mVoiceSearchIndicator.setVisibility(View.VISIBLE); 346cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb } 3475b2299cc2fd9c8ca9c8ea2574d15dc867fa1e793Michael Kolb mWebIcon.setImageResource(R.drawable.ic_search_holo_dark); 34831d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb updateSearchMode(); 349b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb } else { 350b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb mGoButton.setVisibility(View.GONE); 35131d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mVoiceSearch.setVisibility(View.GONE); 35231d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mStar.setVisibility(View.VISIBLE); 35331d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mClearButton.setVisibility(View.GONE); 354cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mVoiceSearchIndicator.setVisibility(View.GONE); 355376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb if (mUseQuickControls) { 356376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mSearchButton.setVisibility(View.GONE); 357376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb } else { 358376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb mSearchButton.setVisibility(View.VISIBLE); 359376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb } 3605b2299cc2fd9c8ca9c8ea2574d15dc867fa1e793Michael Kolb mWebIcon.setImageResource(R.drawable.ic_web_holo_dark); 361b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb } 362b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb } 363b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb 364a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb private void stopOrRefresh() { 365a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb if (mInLoad) { 3668233facddcc51865d612a919d450db6954aa48e3Michael Kolb mUiController.stopLoading(); 367571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins } else { 3688233facddcc51865d612a919d450db6954aa48e3Michael Kolb mUiController.getCurrentTopWebView().reload(); 369571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins } 370571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins } 371571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins 372571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins /** 373a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb * Update the progress, from 0 to 100. 374fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb */ 375fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb @Override 376a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb void setProgress(int newProgress) { 377bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb boolean blockvisuals = mUseQuickControls && isEditingUrl(); 378a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb if (newProgress >= PROGRESS_MAX) { 379bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb if (!blockvisuals) { 380bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb mProgressView.setProgress(PageProgressView.MAX_PROGRESS); 381bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb mProgressView.setVisibility(View.GONE); 382bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb mStopButton.setImageDrawable(mReloadDrawable); 383bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb } 384a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mInLoad = false; 385a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb } else { 386a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb if (!mInLoad) { 387bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb if (!blockvisuals) { 388bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb mProgressView.setVisibility(View.VISIBLE); 389bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb mStopButton.setImageDrawable(mStopDrawable); 390bd018d44c193f7afe5f3c0839766ff1ab19712b9Michael Kolb } 391a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb mInLoad = true; 392fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb } 393b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb mProgressView.setProgress(newProgress * PageProgressView.MAX_PROGRESS 394b7b115e301334f813275aa13e7a2cc27bf15fe6aMichael Kolb / PROGRESS_MAX); 395fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb } 396fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb } 397fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb 39831d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb private void updateSearchMode() { 39931d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb setSearchMode(TextUtils.isEmpty(mUrlInput.getText())); 40031d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb } 40131d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb 40231d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb private void setSearchMode(boolean voiceSearchEnabled) { 403793e05e5f64dba439922304e3b95c29969b36fd5Michael Kolb SearchEngine searchEngine = BrowserSettings.getInstance() 404793e05e5f64dba439922304e3b95c29969b36fd5Michael Kolb .getSearchEngine(); 405793e05e5f64dba439922304e3b95c29969b36fd5Michael Kolb boolean showvoicebutton = voiceSearchEnabled && 406793e05e5f64dba439922304e3b95c29969b36fd5Michael Kolb (searchEngine != null && searchEngine.supportsVoiceSearch()); 407793e05e5f64dba439922304e3b95c29969b36fd5Michael Kolb mVoiceSearch.setVisibility(showvoicebutton ? View.VISIBLE : 40831d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb View.GONE); 40931d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb mGoButton.setVisibility(voiceSearchEnabled ? View.GONE : 41031d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb View.VISIBLE); 41131d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb } 41231d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb 413fe25199a6f975c67d28afcc1de56b0f987b66cd8Michael Kolb @Override 414a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb /* package */ void setDisplayTitle(String title) { 4154851f9e1ad82f87bad3e7c88880be2936b242dd2John Reck if (!isEditingUrl()) { 4164851f9e1ad82f87bad3e7c88880be2936b242dd2John Reck mUrlInput.setText(title, false); 4174851f9e1ad82f87bad3e7c88880be2936b242dd2John Reck } 4187b20ddd4f03d59cca8fdd4aee790784421570aabMichael Kolb } 4197b20ddd4f03d59cca8fdd4aee790784421570aabMichael Kolb 42031d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb // UrlInput text watcher 4214cd97793901e8f5681cf642d0b2684697964a37aLeon Scroggins 42231d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb @Override 42331d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb public void afterTextChanged(Editable s) { 42431d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb if (mUrlInput.hasFocus()) { 42581b6f83b7032f22fdaaa514afda2448f801b73daMichael Kolb // check if input field is empty and adjust voice search state 42631d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb updateSearchMode(); 427cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb // clear voice mode when user types 428cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb setInVoiceMode(false, null); 4294cd97793901e8f5681cf642d0b2684697964a37aLeon Scroggins } 43031d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb } 4314cd97793901e8f5681cf642d0b2684697964a37aLeon Scroggins 43231d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb @Override 43331d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb public void beforeTextChanged(CharSequence s, int start, int count, int after) { 43431d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb } 4354cd97793901e8f5681cf642d0b2684697964a37aLeon Scroggins 43631d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb @Override 43731d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb public void onTextChanged(CharSequence s, int start, int before, int count) { 4384cd97793901e8f5681cf642d0b2684697964a37aLeon Scroggins } 43931d469bca6f6d5a8b444b7dac8038a1b75cd7e43Michael Kolb 440cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb // voicesearch 441cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb 442cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb @Override 443cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb public void setInVoiceMode(boolean voicemode) { 444cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb setInVoiceMode(voicemode, null); 445cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb } 446cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb 447cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb public void setInVoiceMode(boolean voicemode, List<String> voiceResults) { 448cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mInVoiceMode = voicemode; 449cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mUrlInput.setVoiceResults(voiceResults); 450cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb mVoiceSearchIndicator.setVisibility(mInVoiceMode 451cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb ? View.VISIBLE : View.GONE); 452cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb } 453cfa3af5c59abb38c895416a80ef16da0ec1b5287Michael Kolb 454117f07d08e3e25e3c920a1dabe31dcd7643bacb2John Reck @Override 455117f07d08e3e25e3c920a1dabe31dcd7643bacb2John Reck void setIncognitoMode(boolean incognito) { 456117f07d08e3e25e3c920a1dabe31dcd7643bacb2John Reck mUrlInput.setIncognitoMode(incognito); 457117f07d08e3e25e3c920a1dabe31dcd7643bacb2John Reck } 45847171d85e40b3d89e347f950d157036f6b0c1d8dMichael Kolb 459571b3762a5eb9e492283e0a1e437edd209fdc0deLeon Scroggins} 460