diff options
author | Michael Kolb <kolby@google.com> | 2011-02-14 10:34:07 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-02-14 10:34:07 -0800 |
commit | b3b653b821c2e7ef948925992b6bb6a83c2f923b (patch) | |
tree | bc1de256ea5fe9e20fd2245460fbc19e58980229 /src/com | |
parent | 2f24e991b167b7ed6742d39d941c16ade899e14c (diff) | |
parent | 7cdc4906fc5852297a9a254c3251ad2f4dead6ee (diff) | |
download | packages_apps_Browser-b3b653b821c2e7ef948925992b6bb6a83c2f923b.zip packages_apps_Browser-b3b653b821c2e7ef948925992b6bb6a83c2f923b.tar.gz packages_apps_Browser-b3b653b821c2e7ef948925992b6bb6a83c2f923b.tar.bz2 |
Merge "Remove second url bar"
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/browser/BaseUi.java | 78 | ||||
-rw-r--r-- | src/com/android/browser/PhoneUi.java | 88 | ||||
-rw-r--r-- | src/com/android/browser/PieControl.java | 4 | ||||
-rw-r--r-- | src/com/android/browser/TabBar.java | 30 | ||||
-rw-r--r-- | src/com/android/browser/TitleBarBase.java | 22 | ||||
-rw-r--r-- | src/com/android/browser/TitleBarXLarge.java | 69 | ||||
-rw-r--r-- | src/com/android/browser/UrlInputView.java | 15 | ||||
-rw-r--r-- | src/com/android/browser/XLargeUi.java | 126 |
8 files changed, 191 insertions, 241 deletions
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index 756f8b8..025482b 100644 --- a/src/com/android/browser/BaseUi.java +++ b/src/com/android/browser/BaseUi.java @@ -32,7 +32,6 @@ import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; -import android.view.View.OnKeyListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; @@ -86,6 +85,8 @@ public abstract class BaseUi implements UI, WebViewFactory { private Toast mStopToast; + private boolean mTitleShowing; + // the default <video> poster private Bitmap mDefaultVideoPoster; // the video progress view @@ -114,6 +115,7 @@ public abstract class BaseUi implements UI, WebViewFactory { mCustomViewContainer = (FrameLayout) mBrowserFrameLayout .findViewById(R.id.fullscreen_custom_content); frameLayout.addView(mBrowserFrameLayout, COVER_SCREEN_PARAMS); + mTitleShowing = false; } /** @@ -222,8 +224,7 @@ public abstract class BaseUi implements UI, WebViewFactory { onTabDataChanged(tab); onProgressChanged(tab); boolean incognito = mActiveTab.getWebView().isPrivateBrowsingEnabled(); - getEmbeddedTitleBar().setIncognitoMode(incognito); - getFakeTitleBar().setIncognitoMode(incognito); + getTitleBar().setIncognitoMode(incognito); } Tab getActiveTab() { @@ -292,7 +293,7 @@ public abstract class BaseUi implements UI, WebViewFactory { } private void removeTabFromContentView(Tab tab) { - hideFakeTitleBar(); + hideTitleBar(); // Remove the container that contains the main WebView. WebView mainView = tab.getWebView(); View container = tab.getViewContainer(); @@ -381,49 +382,47 @@ public abstract class BaseUi implements UI, WebViewFactory { mContentView.addView(container, COVER_SCREEN_PARAMS); } - void showFakeTitleBar() { - if (!isFakeTitleBarShowing() && !isActivityPaused()) { - WebView mainView = mUiController.getCurrentWebView(); - // if there is no current WebView, don't show the faked title bar; - if (mainView == null) { - return; - } - // Do not need to check for null, since the current tab will have - // at least a main WebView, or we would have returned above. - if (mUiController.isInCustomActionMode()) { - // Do not show the fake title bar, while a custom ActionMode - // (i.e. find or select) is showing. - return; - } - attachFakeTitleBar(mainView); - } + boolean canShowTitleBar() { + return !isTitleBarShowing() + && !isActivityPaused() + && (getActiveTab() != null) + && (getActiveTab().getWebView() != null) + && !mUiController.isInCustomActionMode(); } - protected abstract void attachFakeTitleBar(WebView mainView); + void showTitleBar() { + mTitleShowing = true; + } - protected abstract void hideFakeTitleBar(); + protected void hideTitleBar() { + mTitleShowing = false; + } - protected abstract boolean isFakeTitleBarShowing(); + protected boolean isTitleBarShowing() { + return mTitleShowing; + } - protected abstract TitleBarBase getFakeTitleBar(); + protected abstract TitleBarBase getTitleBar(); - protected abstract TitleBarBase getEmbeddedTitleBar(); + protected void setTitleGravity(int gravity) { + getTitleBar().setTitleGravity(gravity); + Tab tab = getActiveTab(); + if ((tab != null) && (tab.getWebView() != null)) { + tab.getWebView().setTitleBarGravity(gravity); + } + } @Override public void showVoiceTitleBar(String title) { - getEmbeddedTitleBar().setInVoiceMode(true); - getEmbeddedTitleBar().setDisplayTitle(title); - getFakeTitleBar().setInVoiceMode(true); - getFakeTitleBar().setDisplayTitle(title); + getTitleBar().setInVoiceMode(true); + getTitleBar().setDisplayTitle(title); } @Override public void revertVoiceTitleBar(Tab tab) { - getEmbeddedTitleBar().setInVoiceMode(false); + getTitleBar().setInVoiceMode(false); String url = tab.getUrl(); - getEmbeddedTitleBar().setDisplayTitle(url); - getFakeTitleBar().setInVoiceMode(false); - getFakeTitleBar().setDisplayTitle(url); + getTitleBar().setDisplayTitle(url); } @Override @@ -440,7 +439,7 @@ public abstract class BaseUi implements UI, WebViewFactory { FrameLayout wrapper = (FrameLayout) mContentView.findViewById(R.id.webview_wrapper); wrapper.setVisibility(View.GONE); - hideFakeTitleBar(); + hideTitleBar(); dismissIME(); if (mActiveTab != null) { WebView web = mActiveTab.getWebView(); @@ -547,8 +546,7 @@ public abstract class BaseUi implements UI, WebViewFactory { } else if (lockIconType == LockIcon.LOCK_ICON_MIXED) { d = mMixLockIcon; } - getEmbeddedTitleBar().setLock(d); - getFakeTitleBar().setLock(d); + getTitleBar().setLock(d); } protected void setUrlTitle(Tab tab) { @@ -559,8 +557,7 @@ public abstract class BaseUi implements UI, WebViewFactory { } if (tab.isInVoiceSearchMode()) return; if (tab.inForeground()) { - getEmbeddedTitleBar().setDisplayTitle(url); - getFakeTitleBar().setDisplayTitle(url); + getTitleBar().setDisplayTitle(url); } } @@ -568,8 +565,7 @@ public abstract class BaseUi implements UI, WebViewFactory { protected void setFavicon(Tab tab) { if (tab.inForeground()) { Bitmap icon = tab.getFavicon(); - getEmbeddedTitleBar().setFavicon(icon); - getFakeTitleBar().setFavicon(icon); + getTitleBar().setFavicon(icon); } } @@ -578,7 +574,7 @@ public abstract class BaseUi implements UI, WebViewFactory { if (inLoad) { // the titlebar was removed when the CAB was shown // if the page is loading, show it again - showFakeTitleBar(); + showTitleBar(); } } diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java index 4119c29..7463ca5 100644 --- a/src/com/android/browser/PhoneUi.java +++ b/src/com/android/browser/PhoneUi.java @@ -17,16 +17,12 @@ package com.android.browser; import android.app.Activity; -import android.content.Context; -import android.graphics.PixelFormat; import android.util.Log; import android.view.ActionMode; import android.view.Gravity; import android.view.KeyEvent; import android.view.Menu; import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; import android.webkit.WebView; /** @@ -37,7 +33,6 @@ public class PhoneUi extends BaseUi { private static final String LOGTAG = "PhoneUi"; private TitleBar mTitleBar; - private TitleBar mFakeTitleBar; private ActiveTabsPage mActiveTabsPage; boolean mExtendedMenuOpen; @@ -53,7 +48,6 @@ public class PhoneUi extends BaseUi { // mTitleBar will be always be shown in the fully loaded mode on // phone mTitleBar.setProgress(100); - mFakeTitleBar = new TitleBar(mActivity, mUiController); } @@ -90,7 +84,7 @@ public class PhoneUi extends BaseUi { @Override public void onDestroy() { - hideFakeTitleBar(); + hideTitleBar(); } @Override @@ -107,14 +101,14 @@ public class PhoneUi extends BaseUi { public void onProgressChanged(Tab tab) { if (tab.inForeground()) { int progress = tab.getLoadProgress(); - mFakeTitleBar.setProgress(progress); + mTitleBar.setProgress(progress); if (progress == 100) { if (!mOptionsMenuOpen || !mExtendedMenuOpen) { - hideFakeTitleBar(); + hideTitleBar(); } } else { if (!mOptionsMenuOpen || mExtendedMenuOpen) { - showFakeTitleBar(); + showTitleBar(); } } } @@ -130,7 +124,7 @@ public class PhoneUi extends BaseUi { Log.e(LOGTAG, "active tab with no webview detected"); return; } - view.setEmbeddedTitleBar(getEmbeddedTitleBar()); + view.setEmbeddedTitleBar(getTitleBar()); if (tab.isInVoiceSearchMode()) { showVoiceTitleBar(tab.getVoiceDisplayTitle()); } else { @@ -140,57 +134,23 @@ public class PhoneUi extends BaseUi { } @Override - protected void attachFakeTitleBar(WebView mainView) { - WindowManager manager = (WindowManager) - mActivity.getSystemService(Context.WINDOW_SERVICE); - - // Add the title bar to the window manager so it can receive - // touches while the menu is up - WindowManager.LayoutParams params = - new WindowManager.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT, - WindowManager.LayoutParams.TYPE_APPLICATION, - WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, - PixelFormat.TRANSLUCENT); - params.gravity = Gravity.TOP; - boolean atTop = mainView.getScrollY() == 0; - params.windowAnimations = atTop ? 0 : R.style.TitleBar; - manager.addView(mFakeTitleBar, params); - } - - @Override - protected void hideFakeTitleBar() { - if (!isFakeTitleBarShowing()) return; - WindowManager.LayoutParams params = - (WindowManager.LayoutParams) mFakeTitleBar.getLayoutParams(); - WebView mainView = mUiController.getCurrentWebView(); - // Although we decided whether or not to animate based on the - // current - // scroll position, the scroll position may have changed since the - // fake title bar was displayed. Make sure it has the appropriate - // animation/lack thereof before removing. - params.windowAnimations = - mainView != null && mainView.getScrollY() == 0 ? - 0 : R.style.TitleBar; - WindowManager manager = (WindowManager) mActivity - .getSystemService(Context.WINDOW_SERVICE); - manager.updateViewLayout(mFakeTitleBar, params); - manager.removeView(mFakeTitleBar); - } - - @Override - protected boolean isFakeTitleBarShowing() { - return (mFakeTitleBar.getParent() != null); + void showTitleBar() { + if (canShowTitleBar()) { + setTitleGravity(Gravity.TOP); + super.showTitleBar(); + } } @Override - protected TitleBarBase getFakeTitleBar() { - return mFakeTitleBar; + protected void hideTitleBar() { + if (isTitleBarShowing()) { + setTitleGravity(Gravity.NO_GRAVITY); + super.hideTitleBar(); + } } @Override - protected TitleBarBase getEmbeddedTitleBar() { + protected TitleBarBase getTitleBar() { return mTitleBar; } @@ -200,7 +160,7 @@ public class PhoneUi extends BaseUi { public void showActiveTabsPage() { mActiveTabsPage = new ActiveTabsPage(mActivity, mUiController); mTitleBar.setVisibility(View.GONE); - hideFakeTitleBar(); + hideTitleBar(); mContentView.addView(mActiveTabsPage, COVER_SCREEN_PARAMS); mActiveTabsPage.requestFocus(); } @@ -226,7 +186,7 @@ public class PhoneUi extends BaseUi { public void onOptionsMenuOpened() { mOptionsMenuOpen = true; // options menu opened, show fake title bar - showFakeTitleBar(); + showTitleBar(); } @Override @@ -234,32 +194,32 @@ public class PhoneUi extends BaseUi { // Switching the menu to expanded view, so hide the // title bar. mExtendedMenuOpen = true; - hideFakeTitleBar(); + hideTitleBar(); } @Override public void onOptionsMenuClosed(boolean inLoad) { mOptionsMenuOpen = false; if (!inLoad) { - hideFakeTitleBar(); + hideTitleBar(); } } @Override public void onExtendedMenuClosed(boolean inLoad) { mExtendedMenuOpen = false; - showFakeTitleBar(); + showTitleBar(); } @Override public void onContextMenuCreated(Menu menu) { - hideFakeTitleBar(); + hideTitleBar(); } @Override public void onContextMenuClosed(Menu menu, boolean inLoad) { if (inLoad) { - showFakeTitleBar(); + showTitleBar(); } } @@ -267,7 +227,7 @@ public class PhoneUi extends BaseUi { @Override public void onActionModeStarted(ActionMode mode) { - hideFakeTitleBar(); + hideTitleBar(); } @Override diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java index 6326f2e..23dcced 100644 --- a/src/com/android/browser/PieControl.java +++ b/src/com/android/browser/PieControl.java @@ -126,14 +126,14 @@ public class PieControl implements OnClickListener, PieMenu.PieController { web.reload(); } } else if (mUrl == v) { - mUi.showFakeTitleBarAndEdit(); + mUi.showTitleBarAndEdit(); } else if (mOptions == v) { mActivity.openOptionsMenu(); } else if (mBookmarks == v) { mUiController.bookmarksOrHistoryPicker(false); } else if (mNewTab == v) { mUiController.openTabToHomePage(); - mUi.showFakeTitleBarAndEdit(); + mUi.showTitleBarAndEdit(); } else if (mClose == v) { mUiController.closeCurrentTab(); } else { diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java index d115f1a..c00e1f5 100644 --- a/src/com/android/browser/TabBar.java +++ b/src/com/android/browser/TabBar.java @@ -75,8 +75,6 @@ public class TabBar extends LinearLayout private Map<Tab, TabView> mTabMap; - private int mVisibleTitleHeight; - private Drawable mGenericFavicon; private int mCurrentTextureWidth = 0; @@ -96,7 +94,6 @@ public class TabBar extends LinearLayout private int mTabOverlap; private int mAddTabOverlap; private int mTabSliceWidth; - private int mTabPadding; private boolean mUseQuickControls; public TabBar(Activity activity, UiController controller, XLargeUi ui) { @@ -122,14 +119,11 @@ public class TabBar extends LinearLayout mGenericFavicon = res.getDrawable(R.drawable.app_web_browser_sm); updateTabs(mUiController.getTabs()); - - mVisibleTitleHeight = 1; mButtonWidth = -1; // tab dimensions mTabOverlap = (int) res.getDimension(R.dimen.tab_overlap); mAddTabOverlap = (int) res.getDimension(R.dimen.tab_addoverlap); mTabSliceWidth = (int) res.getDimension(R.dimen.tab_slice); - mTabPadding = (int) res.getDimension(R.dimen.tab_padding); mActiveShaderPaint.setStyle(Paint.Style.FILL); mActiveShaderPaint.setAntiAlias(true); @@ -198,14 +192,16 @@ public class TabBar extends LinearLayout mUiController.openTabToHomePage(); } else if (mTabs.getSelectedTab() == view) { if (mUseQuickControls) { - if (mUi.isFakeTitleBarShowing() && !isLoading()) { - mUi.hideFakeTitleBar(); + if (mUi.isTitleBarShowing() && !isLoading()) { + mUi.stopEditingUrl(); + mUi.hideTitleBar(); } else { mUi.stopWebViewScrolling(); - mUi.showFakeTitleBarAndEdit(); + mUi.showTitleBarAndEdit(); } - } else if (mUi.isFakeTitleBarShowing() && !isLoading()) { - mUi.hideFakeTitleBar(); + } else if (mUi.isTitleBarShowing() && !isLoading()) { + mUi.stopEditingUrl(); + mUi.hideTitleBar(); } else { showUrlBar(); } @@ -220,7 +216,7 @@ public class TabBar extends LinearLayout private void showUrlBar() { mUi.stopWebViewScrolling(); - mUi.showFakeTitleBar(); + mUi.showTitleBar(); } void showTitleBarIndicator(boolean show) { @@ -251,9 +247,11 @@ public class TabBar extends LinearLayout // callback after fake titlebar is hidden void onHideTitleBar() { - showTitleBarIndicator(mVisibleTitleHeight == 0); Tab tab = mTabControl.getCurrentTab(); - tab.getWebView().requestFocus(); + WebView w = tab.getWebView(); + if (w != null) { + showTitleBarIndicator(w.getVisibleTitleHeight() == 0); + } } // webview scroll listener @@ -266,7 +264,7 @@ public class TabBar extends LinearLayout && !isLoading()) { if (visibleTitleHeight == 0) { if (!showsTitleBarIndicator()) { - mUi.hideFakeTitleBar(); + mUi.hideTitleBar(); showTitleBarIndicator(true); } } else { @@ -275,7 +273,6 @@ public class TabBar extends LinearLayout } } } - mVisibleTitleHeight = visibleTitleHeight; } @Override @@ -588,7 +585,6 @@ public class TabBar extends LinearLayout WebView webview = tab.getWebView(); if (webview != null) { int h = webview.getVisibleTitleHeight(); - mVisibleTitleHeight = h -1; onScroll(h); } } diff --git a/src/com/android/browser/TitleBarBase.java b/src/com/android/browser/TitleBarBase.java index 024f83c..1e944f1 100644 --- a/src/com/android/browser/TitleBarBase.java +++ b/src/com/android/browser/TitleBarBase.java @@ -23,7 +23,9 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.PaintDrawable; +import android.view.Gravity; import android.view.View; +import android.widget.AbsoluteLayout; import android.widget.ImageView; import android.widget.LinearLayout; @@ -76,4 +78,24 @@ public class TitleBarBase extends LinearLayout { /* package */ void setInVoiceMode(boolean inVoiceMode) {} /* package */ void setIncognitoMode(boolean incognito) {} + + void setTitleGravity(int gravity) { + int newTop = 0; + if (gravity != Gravity.NO_GRAVITY) { + View parent = (View) getParent(); + if (parent != null) { + if (gravity == Gravity.TOP) { + newTop = parent.getScrollY(); + } else if (gravity == Gravity.BOTTOM) { + newTop = parent.getScrollY() + parent.getHeight() - getHeight(); + } + } + } + AbsoluteLayout.LayoutParams lp = (AbsoluteLayout.LayoutParams) getLayoutParams(); + if (lp != null) { + lp.y = newTop; + setLayoutParams(lp); + } + } + } diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java index dcd2215..453e1b8 100644 --- a/src/com/android/browser/TitleBarXLarge.java +++ b/src/com/android/browser/TitleBarXLarge.java @@ -35,7 +35,10 @@ import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; +import android.view.ViewGroup; import android.webkit.WebView; +import android.widget.AbsoluteLayout; +import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; @@ -76,7 +79,6 @@ public class TitleBarXLarge extends TitleBarBase private boolean mInVoiceMode; private boolean mInLoad; - private boolean mEditable; private boolean mUseQuickControls; public TitleBarXLarge(Activity activity, UiController controller, @@ -95,6 +97,18 @@ public class TitleBarXLarge extends TitleBarBase mInVoiceMode = false; } + @Override + void setTitleGravity(int gravity) { + if (mUseQuickControls) { + FrameLayout.LayoutParams lp = + (FrameLayout.LayoutParams) getLayoutParams(); + lp.gravity = gravity; + setLayoutParams(lp); + } else { + super.setTitleGravity(gravity); + } + } + private void initLayout(Context context) { LayoutInflater factory = LayoutInflater.from(context); factory.inflate(R.layout.url_bar, this); @@ -126,7 +140,6 @@ public class TitleBarXLarge extends TitleBarBase mGoButton.setOnClickListener(this); mClearButton.setOnClickListener(this); mVoiceSearch.setOnClickListener(this); - mUrlContainer.setOnClickListener(this); mUrlInput.setUrlInputListener(this); mUrlInput.setContainer(mUrlContainer); mUrlInput.setController(mUiController); @@ -148,19 +161,21 @@ public class TitleBarXLarge extends TitleBarBase } } - public void setEditable(boolean editable) { - mEditable = editable; - mUrlInput.setFocusable(mEditable); - if (!mEditable) { - mUrlInput.setOnClickListener(this); + private ViewGroup.LayoutParams makeLayoutParams() { + if (mUseQuickControls) { + return new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, + LayoutParams.WRAP_CONTENT); } else { - mUrlContainer.setOnClickListener(null); + return new AbsoluteLayout.LayoutParams( + LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, + 0, 0); } } void setUseQuickControls(boolean useQuickControls) { mUseQuickControls = useQuickControls; mUrlInput.setUseQuickControls(mUseQuickControls); + setLayoutParams(makeLayoutParams()); if (mUseQuickControls) { mBackButton.setVisibility(View.GONE); mForwardButton.setVisibility(View.GONE); @@ -184,15 +199,7 @@ public class TitleBarXLarge extends TitleBarBase @Override public void onFocusChange(View view, boolean hasFocus) { - if (!mEditable && hasFocus) { - mUi.editUrl(false); - } else { - if (hasFocus) { - setEditMode(hasFocus); - } else { - mUrlInput.stopEditing(); - } - } + setEditMode(hasFocus); mUrlContainer.setBackgroundDrawable(hasFocus ? mFocusDrawable : mUnfocusDrawable); } @@ -203,8 +210,6 @@ public class TitleBarXLarge extends TitleBarBase /** * called from the Ui when the user wants to edit - * Note: only the fake titlebar will get this callback - * independent of which input field started the edit mode * @param clearInput clear the input field */ void onEditUrl(boolean clearInput) { @@ -227,15 +232,13 @@ public class TitleBarXLarge extends TitleBarBase return mUrlInput.hasFocus(); } + void stopEditingUrl() { + mUrlInput.clearFocus(); + } + @Override public void onClick(View v) { - if (mUrlInput == v) { - mUi.editUrl(false); - } else if (mUrlContainer == v) { - if (!mUrlInput.hasFocus()) { - mUi.editUrl(false); - } - } else if (mBackButton == v) { + if (mBackButton == v) { mUiController.getCurrentTopWebView().goBack(); } else if (mForwardButton == v) { mUiController.getCurrentTopWebView().goForward(); @@ -260,17 +263,13 @@ public class TitleBarXLarge extends TitleBarBase } } - int getHeightWithoutProgress() { - return mContainer.getHeight(); - } - @Override void setFavicon(Bitmap icon) { } private void clearOrClose() { if (TextUtils.isEmpty(mUrlInput.getText())) { // close - mUrlInput.stopEditing(); + mUrlInput.clearFocus(); } else { // clear mUrlInput.setText(""); @@ -286,7 +285,7 @@ public class TitleBarXLarge extends TitleBarBase @Override public void onAction(String text, String extra, String source) { mUiController.getCurrentTopWebView().requestFocus(); - mUi.hideFakeTitleBar(); + mUi.hideTitleBar(); Intent i = new Intent(); String action = null; if (UrlInputView.VOICE.equals(source)) { @@ -312,7 +311,7 @@ public class TitleBarXLarge extends TitleBarBase @Override public void onDismiss() { final Tab currentTab = mUi.getActiveTab(); - mUi.hideFakeTitleBar(); + mUi.hideTitleBar(); post(new Runnable() { public void run() { TitleBarXLarge.this.clearFocus(); @@ -328,14 +327,14 @@ public class TitleBarXLarge extends TitleBarBase * copy text to input field and stay in edit mode */ @Override - public void onEdit(String text) { + public void onCopySuggestion(String text) { mUrlInput.setText(text, true); if (text != null) { mUrlInput.setSelection(text.length()); } } - void setEditMode(boolean edit) { + private void setEditMode(boolean edit) { if (edit) { mUrlInput.setDropDownWidth(mUrlContainer.getWidth()); mUrlInput.setDropDownHorizontalOffset(-mUrlInput.getLeft()); diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java index 23e412d..6817b36 100644 --- a/src/com/android/browser/UrlInputView.java +++ b/src/com/android/browser/UrlInputView.java @@ -166,16 +166,14 @@ public class UrlInputView extends AutoCompleteTextView performFiltering(getText().toString(), 0); showDropDown(); } + } else { + finishInput(null, null, null); } if (mWrappedFocusListener != null) { mWrappedFocusListener.onFocusChange(v, hasFocus); } } - void stopEditing() { - finishInput(null, null, null); - } - public void setUrlInputListener(UrlInputListener listener) { mListener = listener; } @@ -221,7 +219,7 @@ public class UrlInputView extends AutoCompleteTextView @Override public void onSearch(String search) { - mListener.onEdit(search); + mListener.onCopySuggestion(search); } @Override @@ -232,9 +230,10 @@ public class UrlInputView extends AutoCompleteTextView @Override public boolean onKeyPreIme(int keyCode, KeyEvent evt) { - if (keyCode == KeyEvent.KEYCODE_BACK) { + if ((evt.getAction() == KeyEvent.ACTION_DOWN) + && (keyCode == KeyEvent.KEYCODE_BACK)) { // catch back key in order to do slightly more cleanup than usual - finishInput(null, null, null); + clearFocus(); return true; } return super.onKeyPreIme(keyCode, evt); @@ -254,7 +253,7 @@ public class UrlInputView extends AutoCompleteTextView public void onAction(String text, String extra, String source); - public void onEdit(String text); + public void onCopySuggestion(String text); } diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java index 562705b..3e200ea 100644 --- a/src/com/android/browser/XLargeUi.java +++ b/src/com/android/browser/XLargeUi.java @@ -28,8 +28,6 @@ import android.view.KeyEvent; import android.view.View; import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebView; -import android.widget.FrameLayout; -import android.widget.FrameLayout.LayoutParams; import java.util.List; @@ -44,7 +42,6 @@ public class XLargeUi extends BaseUi implements ScrollListener { private TabBar mTabBar; private TitleBarXLarge mTitleBar; - private TitleBarXLarge mFakeTitleBar; private boolean mUseQuickControls; private PieControl mPieControl; @@ -57,9 +54,6 @@ public class XLargeUi extends BaseUi implements ScrollListener { super(browser, controller); mTitleBar = new TitleBarXLarge(mActivity, mUiController, this); mTitleBar.setProgress(100); - mTitleBar.setEditable(false); - mFakeTitleBar = new TitleBarXLarge(mActivity, mUiController, this); - mFakeTitleBar.setEditable(true); mTabBar = new TabBar(mActivity, mUiController, this); mActionBar = mActivity.getActionBar(); setupActionBar(); @@ -90,31 +84,28 @@ public class XLargeUi extends BaseUi implements ScrollListener { private void setUseQuickControls(boolean useQuickControls) { mUseQuickControls = useQuickControls; + mTitleBar.setUseQuickControls(mUseQuickControls); if (useQuickControls) { checkTabCount(); mPieControl = new PieControl(mActivity, mUiController, this); mPieControl.attachToContainer(mContentView); - setFakeTitleBarGravity(Gravity.BOTTOM); - - // remove embedded title bar if present - WebView web = mTabControl.getCurrentWebView(); - if ((web != null) && (web.getVisibleTitleHeight() > 0)) { - web.setEmbeddedTitleBar(null); + Tab tab = getActiveTab(); + if ((tab != null) && (tab.getWebView() != null)) { + tab.getWebView().setEmbeddedTitleBar(null); } + setTitleGravity(Gravity.BOTTOM); } else { mActivity.getActionBar().show(); if (mPieControl != null) { mPieControl.removeFromContainer(mContentView); } - setFakeTitleBarGravity(Gravity.TOP); - // remove embedded title bar if present + setTitleGravity(Gravity.TOP); WebView web = mTabControl.getCurrentWebView(); - if ((web != null) && (web.getVisibleTitleHeight() == 0)) { + if (web != null) { web.setEmbeddedTitleBar(mTitleBar); } } mTabBar.setUseQuickControls(mUseQuickControls); - mFakeTitleBar.setUseQuickControls(mUseQuickControls); } private void checkTabCount() { @@ -130,7 +121,7 @@ public class XLargeUi extends BaseUi implements ScrollListener { @Override public void onDestroy() { - hideFakeTitleBar(); + hideTitleBar(); } // webview factory @@ -174,7 +165,6 @@ public class XLargeUi extends BaseUi implements ScrollListener { if (tab.inForeground()) { boolean isBookmark = tab.isBookmarkedSite(); mTitleBar.setCurrentUrlIsBookmark(isBookmark); - mFakeTitleBar.setCurrentUrlIsBookmark(isBookmark); } } @@ -183,23 +173,23 @@ public class XLargeUi extends BaseUi implements ScrollListener { int progress = tab.getLoadProgress(); mTabBar.onProgress(tab, progress); if (tab.inForeground()) { - mFakeTitleBar.setProgress(progress); + mTitleBar.setProgress(progress); if (progress == 100) { - if (!mFakeTitleBar.isEditingUrl()) { - hideFakeTitleBar(); + if (!mTitleBar.isEditingUrl()) { + hideTitleBar(); if (mUseQuickControls) { - mFakeTitleBar.setShowProgressOnly(false); - setFakeTitleBarGravity(Gravity.BOTTOM); + mTitleBar.setShowProgressOnly(false); + setTitleGravity(Gravity.BOTTOM); } } } else { - if (mUseQuickControls && !mFakeTitleBar.isEditingUrl()) { - mFakeTitleBar.setShowProgressOnly(true); - if (!isFakeTitleBarShowing()) { - setFakeTitleBarGravity(Gravity.TOP); + if (!isTitleBarShowing()) { + if (mUseQuickControls && !mTitleBar.isEditingUrl()) { + mTitleBar.setShowProgressOnly(true); + setTitleGravity(Gravity.TOP); } + showTitleBar(); } - showFakeTitleBar(); } } } @@ -274,55 +264,48 @@ public class XLargeUi extends BaseUi implements ScrollListener { if (mUiController.isInCustomActionMode()) { mUiController.endActionMode(); } - showFakeTitleBar(); - mFakeTitleBar.onEditUrl(clearInput); + showTitleBar(); + mTitleBar.onEditUrl(clearInput); } - void setFakeTitleBarGravity(int gravity) { - FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) - mFakeTitleBar.getLayoutParams(); - if (lp == null) { - lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, - LayoutParams.WRAP_CONTENT); - } - lp.gravity = gravity; - mFakeTitleBar.setLayoutParams(lp); + void showTitleBarAndEdit() { + mTitleBar.setShowProgressOnly(false); + showTitleBar(); + mTitleBar.onEditUrl(false); } - void showFakeTitleBarAndEdit() { - mFakeTitleBar.setShowProgressOnly(false); - setFakeTitleBarGravity(Gravity.BOTTOM); - showFakeTitleBar(); - mFakeTitleBar.onEditUrl(false); + void stopEditingUrl() { + mTitleBar.stopEditingUrl(); } @Override - protected void attachFakeTitleBar(WebView mainView) { - mContentView.addView(mFakeTitleBar); - mTabBar.onShowTitleBar(); + protected void showTitleBar() { + if (canShowTitleBar()) { + if (mUseQuickControls) { + setTitleGravity(Gravity.BOTTOM); + mContentView.addView(mTitleBar); + } else { + setTitleGravity(Gravity.TOP); + } + super.showTitleBar(); + mTabBar.onShowTitleBar(); + } } @Override - protected void hideFakeTitleBar() { - if (isFakeTitleBarShowing()) { - mFakeTitleBar.setEditMode(false); + protected void hideTitleBar() { + if (isTitleBarShowing()) { mTabBar.onHideTitleBar(); - mContentView.removeView(mFakeTitleBar); + setTitleGravity(Gravity.NO_GRAVITY); + if (mUseQuickControls) { + mContentView.removeView(mTitleBar); + } + super.hideTitleBar(); } } @Override - protected boolean isFakeTitleBarShowing() { - return (mFakeTitleBar.getParent() != null); - } - - @Override - protected TitleBarBase getFakeTitleBar() { - return mFakeTitleBar; - } - - @Override - protected TitleBarBase getEmbeddedTitleBar() { + protected TitleBarBase getTitleBar() { return mTitleBar; } @@ -330,9 +313,9 @@ public class XLargeUi extends BaseUi implements ScrollListener { @Override public void onActionModeStarted(ActionMode mode) { - if (!mFakeTitleBar.isEditingUrl()) { + if (!mTitleBar.isEditingUrl()) { // hide the fake title bar when CAB is shown - hideFakeTitleBar(); + hideTitleBar(); } } @@ -342,18 +325,17 @@ public class XLargeUi extends BaseUi implements ScrollListener { if (inLoad) { // the titlebar was removed when the CAB was shown // if the page is loading, show it again - mFakeTitleBar.setShowProgressOnly(true); - if (!isFakeTitleBarShowing()) { - setFakeTitleBarGravity(Gravity.TOP); + mTitleBar.setShowProgressOnly(true); + if (!isTitleBarShowing()) { + setTitleGravity(Gravity.TOP); } - showFakeTitleBar(); + showTitleBar(); } } @Override protected void updateNavigationState(Tab tab) { mTitleBar.updateNavigationState(tab); - mFakeTitleBar.updateNavigationState(tab); } @Override @@ -377,8 +359,6 @@ public class XLargeUi extends BaseUi implements ScrollListener { } mTitleBar.setInVoiceMode(true, null); mTitleBar.setDisplayTitle(title); - mFakeTitleBar.setInVoiceMode(true, vsresults); - mFakeTitleBar.setDisplayTitle(title); } @Override @@ -386,8 +366,6 @@ public class XLargeUi extends BaseUi implements ScrollListener { mTitleBar.setInVoiceMode(false, null); String url = tab.getUrl(); mTitleBar.setDisplayTitle(url); - mFakeTitleBar.setInVoiceMode(false, null); - mFakeTitleBar.setDisplayTitle(url); } @Override @@ -419,7 +397,7 @@ public class XLargeUi extends BaseUi implements ScrollListener { } } boolean ctrl = event.hasModifiers(KeyEvent.META_CTRL_ON); - if (!ctrl && event.isPrintingKey() && !mFakeTitleBar.isEditingUrl()) { + if (!ctrl && event.isPrintingKey() && !mTitleBar.isEditingUrl()) { editUrl(true); return mContentView.dispatchKeyEvent(event); } |