/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.browser; import com.android.browser.ScrollWebView.ScrollListener; import android.app.ActionBar; import android.app.Activity; import android.graphics.Bitmap; import android.view.ActionMode; import android.webkit.WebView; import java.util.List; /** * Ui for xlarge screen sizes */ public class XLargeUi extends BaseUi implements ScrollListener { private static final String LOGTAG = "XLargeUi"; private TabBar mTabBar; private TitleBarXLarge mTitleBar; private TitleBarXLarge mFakeTitleBar; /** * @param browser * @param controller */ public XLargeUi(Activity browser, UiController controller) { super(browser, controller); mTitleBar = new TitleBarXLarge(mActivity, mUiController, this); mTitleBar.setProgress(100); mTitleBar.setEditable(false); mFakeTitleBar = new TitleBarXLarge(mActivity, mUiController, this); mFakeTitleBar.setEditable(true); ActionBar actionBar = mActivity.getActionBar(); mTabBar = new TabBar(mActivity, mUiController, this); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setCustomView(mTabBar); } @Override public void onDestroy() { hideFakeTitleBar(); } // webview factory @Override public WebView createWebView(boolean privateBrowsing) { // Create a new WebView ScrollWebView w = new ScrollWebView(mActivity, null, android.R.attr.webViewStyle, privateBrowsing); initWebViewSettings(w); w.setScrollListener(this); w.getSettings().setDisplayZoomControls(false); return w; } @Override public WebView createSubWebView(boolean privateBrowsing) { ScrollWebView web = (ScrollWebView) createWebView(privateBrowsing); // no scroll listener for subview web.setScrollListener(null); return web; } @Override public void onScroll(int visibleTitleHeight) { mTabBar.onScroll(visibleTitleHeight); } void stopWebViewScrolling() { ScrollWebView web = (ScrollWebView) mUiController.getCurrentWebView(); if (web != null) { web.stopScroll(); } } // WebView callbacks @Override public void onPageStarted(Tab tab, String url, Bitmap favicon) { super.onPageStarted(tab, url, favicon); mTabBar.onPageStarted(tab, url, favicon); } @Override public void bookmarkedStatusHasChanged(Tab tab) { if (tab.inForeground()) { boolean isBookmark = tab.isBookmarkedSite(); mTitleBar.setCurrentUrlIsBookmark(isBookmark); mFakeTitleBar.setCurrentUrlIsBookmark(isBookmark); } } @Override public void onPageFinished(Tab tab, String url) { mTabBar.onPageFinished(tab); super.onPageFinished(tab, url); } @Override public void onProgressChanged(Tab tab, int progress) { mTabBar.onProgress(tab, progress); if (tab.inForeground()) { mFakeTitleBar.setProgress(progress); if (progress == 100) { hideFakeTitleBar(); } else { showFakeTitleBar(); } } } @Override public boolean needsRestoreAllTabs() { return true; } @Override public void addTab(Tab tab) { mTabBar.onNewTab(tab); } @Override public void setActiveTab(Tab tab) { super.setActiveTab(tab); mTabBar.onSetActiveTab(tab); } @Override public void updateTabs(List tabs) { mTabBar.updateTabs(tabs); } @Override public void removeTab(Tab tab) { super.removeTab(tab); mTabBar.onRemoveTab(tab); } int getTitleBarWidth() { if (mTitleBar != null) { return mTitleBar.getWidth(); } return 0; } void editUrl(boolean clearInput) { showFakeTitleBar(); mFakeTitleBar.onEditUrl(clearInput); } @Override protected void attachFakeTitleBar(WebView mainView) { mContentView.addView(mFakeTitleBar); mTabBar.onShowTitleBar(); } @Override protected void hideFakeTitleBar() { if (isFakeTitleBarShowing()) { mContentView.removeView(mFakeTitleBar); mTabBar.onHideTitleBar(); } } @Override protected boolean isFakeTitleBarShowing() { return (mFakeTitleBar.getParent() != null); } @Override protected TitleBarBase getFakeTitleBar() { return mFakeTitleBar; } @Override protected TitleBarBase getEmbeddedTitleBar() { return mTitleBar; } // action mode callbacks @Override public void onActionModeStarted(ActionMode mode) { if (mFakeTitleBar.isEditingUrl()) { // hide the fake title bar when CAB is shown hideFakeTitleBar(); } } @Override public void setUrlTitle(Tab tab, String url, String title) { super.setUrlTitle(tab, url, title); mTabBar.onUrlAndTitle(tab, url, title); } // Set the favicon in the title bar. @Override public void setFavicon(Tab tab, Bitmap icon) { super.setFavicon(tab, icon); mTabBar.onFavicon(tab, icon); } @Override public void showVoiceTitleBar(String title) { List vsresults = null; if (getActiveTab() != null) { vsresults = getActiveTab().getVoiceSearchResults(); } mTitleBar.setInVoiceMode(true, null); mTitleBar.setDisplayTitle(title); mFakeTitleBar.setInVoiceMode(true, vsresults); mFakeTitleBar.setDisplayTitle(title); } @Override public void revertVoiceTitleBar(Tab tab) { mTitleBar.setInVoiceMode(false, null); String url = tab.getCurrentUrl(); mTitleBar.setDisplayTitle(url); mFakeTitleBar.setInVoiceMode(false, null); mFakeTitleBar.setDisplayTitle(url); } }