summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser
diff options
context:
space:
mode:
authorMichael Kolb <kolby@google.com>2011-02-03 17:54:40 -0800
committerMichael Kolb <kolby@google.com>2011-02-11 15:32:03 -0800
commit7cdc4906fc5852297a9a254c3251ad2f4dead6ee (patch)
treebdfa62eaad0c01cb8fa861f9ccfbb0ff5453073b /src/com/android/browser
parent203d3806c45420c45e53c6b9f3d503a21bb9717e (diff)
downloadandroid_packages_apps_Gello-7cdc4906fc5852297a9a254c3251ad2f4dead6ee.tar.gz
android_packages_apps_Gello-7cdc4906fc5852297a9a254c3251ad2f4dead6ee.tar.bz2
android_packages_apps_Gello-7cdc4906fc5852297a9a254c3251ad2f4dead6ee.zip
Remove second url bar
Remove the overlay "fake" titlebar by telling the WebView where to render the embedded titlebar Simplify focus handling requires Ic979b641c8cc80acb83eeab49c4f700fc5c50e72 in frameworks/base Change-Id: I7896cd731949fdcc47cd18abfee5ef947b0e8cee
Diffstat (limited to 'src/com/android/browser')
-rw-r--r--src/com/android/browser/BaseUi.java78
-rw-r--r--src/com/android/browser/PhoneUi.java88
-rw-r--r--src/com/android/browser/PieControl.java4
-rw-r--r--src/com/android/browser/TabBar.java30
-rw-r--r--src/com/android/browser/TitleBarBase.java22
-rw-r--r--src/com/android/browser/TitleBarXLarge.java69
-rw-r--r--src/com/android/browser/UrlInputView.java15
-rw-r--r--src/com/android/browser/XLargeUi.java126
8 files changed, 191 insertions, 241 deletions
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 756f8b89..025482b4 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 4119c298..7463ca5d 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 6326f2e5..23dcced6 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 d115f1ac..c00e1f51 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 024f83c9..1e944f18 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 0dcece60..55347a04 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 23e412dd..6817b368 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 562705b3..3e200ea6 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);
}