diff options
author | Enrico Ros <eros@codeaurora.org> | 2014-11-18 20:15:48 -0800 |
---|---|---|
committer | WebTech Code Review <code-review@localhost> | 2014-12-01 09:53:43 -0800 |
commit | 1f5a0952599285350be6b1351110518086047fd1 (patch) | |
tree | 6af2ffdb24ad21ad6cb567efb415e635de937daf /src | |
parent | 49b7925ec66faf5015fdd1862eada2978ddd5fde (diff) | |
download | android_packages_apps_Gello-1f5a0952599285350be6b1351110518086047fd1.tar.gz android_packages_apps_Gello-1f5a0952599285350be6b1351110518086047fd1.tar.bz2 android_packages_apps_Gello-1f5a0952599285350be6b1351110518086047fd1.zip |
Clean visual style: move to Light, add Material support, change Drawables (progress, icons).
This code alters the visual style moving the APP to a Light theme.
Parents of the theme are either Theme.Holo.Light or Theme.Material.Light
depending on which API we start the APK from. Needs SDK 21 to build.
Other than the visual changes, this commit changes:
- name of the APP to 'Browser'
- animations and sequencing of the Tab switcher in {nav/anim}_screen
- removal of the warning icon from the Exit dialog
- change of the favicon appearance (removal of the double border)
Vast amount of unused resources are removed from the APK. Just XHDPI
drawables have been synthesized for now, and the Primary color was
used for the icons and is accessible in R.color.Primary.
Change-Id: If75cc051c5d4015383e96066cdb6507484e625d8
Diffstat (limited to 'src')
23 files changed, 309 insertions, 383 deletions
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index a04f5e01..9dbfe246 100644 --- a/src/com/android/browser/BaseUi.java +++ b/src/com/android/browser/BaseUi.java @@ -63,7 +63,7 @@ import java.util.List; */ public abstract class BaseUi implements UI { - private static final String LOGTAG = "BaseUi"; + protected static final boolean ENABLE_BORDER_AROUND_FAVICON = false; protected static final FrameLayout.LayoutParams COVER_SCREEN_PARAMS = new FrameLayout.LayoutParams( @@ -117,9 +117,10 @@ public abstract class BaseUi implements UI { mActivity = browser; mUiController = controller; mTabControl = controller.getTabControl(); - Resources res = mActivity.getResources(); mInputManager = (InputMethodManager) browser.getSystemService(Activity.INPUT_METHOD_SERVICE); + // This assumes that the top-level root of our layout has the 'android.R.id.content' id + // it's used in place of setContentView because we're attaching a <merge> here. FrameLayout frameLayout = (FrameLayout) mActivity.getWindow() .getDecorView().findViewById(android.R.id.content); LayoutInflater.from(mActivity) @@ -856,19 +857,22 @@ public abstract class BaseUi implements UI { } public Drawable getFaviconDrawable(Bitmap icon) { - Drawable[] array = new Drawable[3]; - array[0] = new PaintDrawable(Color.BLACK); - PaintDrawable p = new PaintDrawable(Color.WHITE); - array[1] = p; - if (icon == null) { - array[2] = getGenericFavicon(); - } else { - array[2] = new BitmapDrawable(icon); + if (ENABLE_BORDER_AROUND_FAVICON) { + Drawable[] array = new Drawable[3]; + array[0] = new PaintDrawable(Color.BLACK); + PaintDrawable p = new PaintDrawable(Color.WHITE); + array[1] = p; + if (icon == null) { + array[2] = getGenericFavicon(); + } else { + array[2] = new BitmapDrawable(mActivity.getResources(), icon); + } + LayerDrawable d = new LayerDrawable(array); + d.setLayerInset(1, 1, 1, 1, 1); + d.setLayerInset(2, 2, 2, 2, 2); + return d; } - LayerDrawable d = new LayerDrawable(array); - d.setLayerInset(1, 1, 1, 1, 1); - d.setLayerInset(2, 2, 2, 2, 2); - return d; + return icon == null ? getGenericFavicon() : new BitmapDrawable(mActivity.getResources(), icon); } public boolean isLoading() { @@ -897,6 +901,14 @@ public abstract class BaseUi implements UI { mHandler.sendMessageDelayed(msg, duration); } + protected void setMenuItemVisibility(Menu menu, int id, + boolean visibility) { + MenuItem item = menu.findItem(id); + if (item != null) { + item.setVisible(visibility); + } + } + protected Handler mHandler = new Handler() { @Override diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java index 3b95ee90..4b9f48c4 100644 --- a/src/com/android/browser/BrowserActivity.java +++ b/src/com/android/browser/BrowserActivity.java @@ -305,7 +305,7 @@ public class BrowserActivity extends Activity implements ViewTreeObserver.OnPreD @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - return mController.onPrepareOptionsMenu(menu); + return false; } @Override diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java index 5d71ce30..e2348a53 100644 --- a/src/com/android/browser/BrowserWebView.java +++ b/src/com/android/browser/BrowserWebView.java @@ -30,6 +30,7 @@ import java.util.Map; * Manage WebView scroll events */ public class BrowserWebView extends WebView implements WebView.TitleBarDelegate { + private static final boolean ENABLE_ROOTVIEW_BACKREMOVAL_OPTIMIZATION = true; public interface OnScrollChangedListener { void onScrollChanged(int l, int t, int oldl, int oldt); @@ -121,13 +122,17 @@ public class BrowserWebView extends WebView implements WebView.TitleBarDelegate @Override public void onDraw(Canvas c) { super.onDraw(c); - if (!mBackgroundRemoved && getRootView().getBackground() != null) { - mBackgroundRemoved = true; - post(new Runnable() { - public void run() { - getRootView().setBackgroundDrawable(null); - } - }); + + // if enabled, removes the background from the main view (assumes coverage with opaqueness) + if (ENABLE_ROOTVIEW_BACKREMOVAL_OPTIMIZATION) { + if (!mBackgroundRemoved && getRootView().getBackground() != null) { + mBackgroundRemoved = true; + post(new Runnable() { + public void run() { + getRootView().setBackgroundDrawable(null); + } + }); + } } } @@ -137,6 +142,7 @@ public class BrowserWebView extends WebView implements WebView.TitleBarDelegate @Override public void onScrollChanged(int l, int t, int oldl, int oldt) { + // NOTE: this function seems to not be called when the WebView is scrolled (it may be fine) super.onScrollChanged(l, t, oldl, oldt); if (mTitleBar != null) { mTitleBar.onScrollChanged(); diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index b0657c96..77f4032a 100644 --- a/src/com/android/browser/Controller.java +++ b/src/com/android/browser/Controller.java @@ -2281,7 +2281,7 @@ public class Controller private void showExitDialog(final Activity activity) { new AlertDialog.Builder(activity) .setTitle(R.string.exit_browser_title) - .setIcon(android.R.drawable.ic_dialog_alert) + /* disabled, was worrying people: .setIcon(android.R.drawable.ic_dialog_alert) */ .setMessage(R.string.exit_browser_msg) .setNegativeButton(R.string.exit_minimize, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { @@ -2295,7 +2295,6 @@ public class Controller mHandler.postDelayed(new Runnable() { @Override public void run() { - // TODO Auto-generated method stub mCrashRecoveryHandler.clearState(true); int pid = android.os.Process.myPid(); android.os.Process.killProcess(pid); @@ -3216,7 +3215,7 @@ public class Controller public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU && event.getRepeatCount() == 0) { // Hardware menu key - mAppMenuHandler.showAppMenu(mActivity.findViewById(R.id.more_browser_settings), + mAppMenuHandler.showAppMenu(mActivity.findViewById(R.id.taburlbar), true, false); return true; } diff --git a/src/com/android/browser/GeolocationPermissionsPrompt.java b/src/com/android/browser/GeolocationPermissionsPrompt.java index d0e94ad2..cab6deb1 100755 --- a/src/com/android/browser/GeolocationPermissionsPrompt.java +++ b/src/com/android/browser/GeolocationPermissionsPrompt.java @@ -16,8 +16,6 @@ package com.android.browser; -import com.android.browser.R; - import org.codeaurora.swe.GeolocationPermissions; import org.json.JSONArray; @@ -29,11 +27,11 @@ import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; -import android.widget.RelativeLayout; +import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; -public class GeolocationPermissionsPrompt extends RelativeLayout { +public class GeolocationPermissionsPrompt extends LinearLayout { private TextView mMessage; private Button mShareButton; private Button mShareForLimitedTimeButton; diff --git a/src/com/android/browser/LocationButton.java b/src/com/android/browser/LocationButton.java index 4136d6e3..c80c0e8e 100644 --- a/src/com/android/browser/LocationButton.java +++ b/src/com/android/browser/LocationButton.java @@ -208,10 +208,10 @@ public class LocationButton extends ImageButton public void onReceiveValue(Boolean allowed) { if (allowed != null) { if (allowed.booleanValue()) { - LocationButton.this.setImageResource(R.drawable.ic_gps_on_holo_dark); + LocationButton.this.setImageResource(R.drawable.ic_action_gps_on); LocationButton.this.setVisibility(VISIBLE); } else { - LocationButton.this.setImageResource(R.drawable.ic_gps_denied_holo_dark); + LocationButton.this.setImageResource(R.drawable.ic_action_gps_off); LocationButton.this.setVisibility(VISIBLE); } } @@ -230,8 +230,8 @@ public class LocationButton extends ImageButton @Override public void onGeolocationPolicyAdded(String origin, boolean allow) { if (mCurrentOrigin != null && mCurrentOrigin.equals(origin)) { - this.setImageResource(allow ? R.drawable.ic_gps_on_holo_dark : - R.drawable.ic_gps_denied_holo_dark); + this.setImageResource(allow ? R.drawable.ic_action_gps_on : + R.drawable.ic_action_gps_off); this.setVisibility(VISIBLE); } } diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java index 64243e32..0962449f 100644 --- a/src/com/android/browser/NavScreen.java +++ b/src/com/android/browser/NavScreen.java @@ -27,20 +27,14 @@ import android.view.View.OnClickListener; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.widget.BaseAdapter; -import android.widget.FrameLayout; import android.widget.ImageButton; -import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.PopupMenu; import android.widget.PopupMenu.OnMenuItemClickListener; import android.widget.RelativeLayout; -import android.widget.TextView; -import com.android.browser.R; -import com.android.browser.NavTabScroller.OnLayoutListener; import com.android.browser.NavTabScroller.OnRemoveListener; import com.android.browser.TabControl.OnThumbnailUpdatedListener; -import com.android.browser.UI.ComboViews; import java.util.HashMap; @@ -50,19 +44,12 @@ public class NavScreen extends RelativeLayout UiController mUiController; PhoneUi mUi; - Tab mTab; Activity mActivity; - ImageButton mRefresh; - ImageButton mForward; - ImageButton mBookmarks; + View mToolbarLayout; ImageButton mMore; ImageButton mNewTab; - FrameLayout mHolder; - - TextView mTitle; - ImageView mFavicon; - ImageButton mCloseTab; + ImageButton mNewIncognitoTab; NavTabScroller mScroller; TabAdapter mAdapter; @@ -94,10 +81,6 @@ public class NavScreen extends RelativeLayout return mUiController.onOptionsItemSelected(item); } - protected float getToolbarHeight() { - return mActivity.getResources().getDimension(R.dimen.toolbar_height); - } - @Override protected void onConfigurationChanged(Configuration newconfig) { if (newconfig.orientation != mOrientation) { @@ -119,10 +102,11 @@ public class NavScreen extends RelativeLayout LayoutInflater.from(getContext()).inflate(R.layout.nav_screen, this); setContentDescription(getContext().getResources().getString( R.string.accessibility_transition_navscreen)); - mBookmarks = (ImageButton) findViewById(R.id.bookmarks); + mToolbarLayout = findViewById(R.id.nav_toolbar_animate); + mNewIncognitoTab = (ImageButton) findViewById(R.id.newincognitotab); mNewTab = (ImageButton) findViewById(R.id.newtab); mMore = (ImageButton) findViewById(R.id.more); - mBookmarks.setOnClickListener(this); + mNewIncognitoTab.setOnClickListener(this); mNewTab.setOnClickListener(this); mMore.setOnClickListener(this); mScroller = (NavTabScroller) findViewById(R.id.scroller); @@ -148,10 +132,10 @@ public class NavScreen extends RelativeLayout @Override public void onClick(View v) { - if (mBookmarks == v) { - mUiController.bookmarksOrHistoryPicker(ComboViews.Bookmarks); - } else if (mNewTab == v) { + if (mNewTab == v) { openNewTab(); + } else if (mNewIncognitoTab == v) { + openNewIncognitoTab(); } else if (mMore == v) { showMenu(); } @@ -168,6 +152,18 @@ public class NavScreen extends RelativeLayout } } + private void openNewIncognitoTab() { + final Tab tab = mUiController.openIncognitoTab(); + if (tab != null) { + mUiController.setBlockEvents(true); + final int tix = mUi.mTabControl.getTabPosition(tab); + switchToTab(tab); + mUi.hideNavScreen(tix, true); + mScroller.handleDataChanged(tix); + mUiController.setBlockEvents(false); + } + } + private void openNewTab() { // need to call openTab explicitely with setactive false final Tab tab = mUiController.openTab(BrowserSettings.getInstance().getHomePage(), diff --git a/src/com/android/browser/NavTabScroller.java b/src/com/android/browser/NavTabScroller.java index a23ebe95..39c73ac1 100644 --- a/src/com/android/browser/NavTabScroller.java +++ b/src/com/android/browser/NavTabScroller.java @@ -135,7 +135,7 @@ public class NavTabScroller extends ScrollerView { } private void calcPadding() { - if (mAdapter.getCount() > 0) { + if (mAdapter != null && mAdapter.getCount() > 0) { View v = mContentView.getChildAt(0); if (mHorizontal) { int pad = (getMeasuredWidth() - v.getMeasuredWidth()) / 2 + 2; diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java index ec187861..01435b61 100644 --- a/src/com/android/browser/NavigationBarBase.java +++ b/src/com/android/browser/NavigationBarBase.java @@ -15,6 +15,7 @@ */ package com.android.browser; +import android.app.Activity; import android.app.SearchManager; import android.content.ActivityNotFoundException; import android.content.Context; @@ -28,11 +29,15 @@ import android.text.TextWatcher; import android.util.AttributeSet; import android.util.Log; import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; +import android.view.ViewConfiguration; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.PopupMenu; import android.widget.Toast; import com.android.browser.R; @@ -45,7 +50,8 @@ import org.codeaurora.swe.WebView; public class NavigationBarBase extends LinearLayout implements OnClickListener, UrlInputListener, OnFocusChangeListener, - TextWatcher { + TextWatcher, UrlInputView.StateListener, + PopupMenu.OnMenuItemClickListener, PopupMenu.OnDismissListener { private final static String TAG = "NavigationBarBase"; @@ -58,6 +64,10 @@ public class NavigationBarBase extends LinearLayout implements private ImageView mFavicon; private ImageView mLockIcon; + private View mMore; + private PopupMenu mPopupMenu; + private boolean mOverflowMenuShowing; + private boolean mNeedsMenu; public NavigationBarBase(Context context) { super(context); @@ -82,6 +92,9 @@ public class NavigationBarBase extends LinearLayout implements mUrlInput.setOnFocusChangeListener(this); mUrlInput.setSelectAllOnFocus(true); mUrlInput.addTextChangedListener(this); + mMore = findViewById(R.id.more_browser_settings); + mMore.setOnClickListener(this); + mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey(); } public void setTitleBar(TitleBar titleBar) { @@ -108,6 +121,30 @@ public class NavigationBarBase extends LinearLayout implements @Override public void onClick(View v) { + if (mMore == v) { + showMenu(mMore); + } + } + + void showMenu(View anchor) { + Activity activity = mUiController.getActivity(); + if (mPopupMenu == null) { + mPopupMenu = new PopupMenu(getContext(), anchor); + mPopupMenu.setOnMenuItemClickListener(this); + mPopupMenu.setOnDismissListener(this); + if (!activity.onCreateOptionsMenu(mPopupMenu.getMenu())) { + mPopupMenu = null; + return; + } + } + Menu menu = mPopupMenu.getMenu(); + + if (mUiController instanceof Controller) { + Controller controller = (Controller) mUiController; + if (controller.onPrepareOptionsMenu(menu)) { + mOverflowMenuShowing = true; + } + } } @Override @@ -389,10 +426,6 @@ public class NavigationBarBase extends LinearLayout implements public void onProgressStopped() { } - public boolean isMenuShowing() { - return false; - } - public void onTabDataChanged(Tab tab) { mLocationButton.onTabDataChanged(tab); } @@ -411,4 +444,41 @@ public class NavigationBarBase extends LinearLayout implements @Override public void afterTextChanged(Editable s) { } + @Override + public void onStateChanged(int state) { + switch(state) { + case STATE_NORMAL: + mMore.setVisibility(mNeedsMenu ? View.VISIBLE : View.GONE); + break; + case STATE_HIGHLIGHTED: + mMore.setVisibility(View.GONE); + break; + case STATE_EDITED: + mMore.setVisibility(View.GONE); + break; + } + } + + public boolean isMenuShowing() { + return mOverflowMenuShowing; + } + + + @Override + public void onDismiss(PopupMenu popupMenu) { + if (popupMenu == mPopupMenu) { + onMenuHidden(); + } + } + + private void onMenuHidden() { + mOverflowMenuShowing = false; + mBaseUi.showTitleBarForDuration(); + } + + + @Override + public boolean onMenuItemClick(MenuItem item) { + return mUiController.onOptionsItemSelected(item); + } } diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java index fe5ca281..f528e8fc 100644 --- a/src/com/android/browser/NavigationBarPhone.java +++ b/src/com/android/browser/NavigationBarPhone.java @@ -15,26 +15,22 @@ */ package com.android.browser; -import android.app.Activity; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.util.AttributeSet; -import android.view.Menu; -import android.view.MenuItem; +import android.util.TypedValue; import android.view.View; -import android.view.ViewConfiguration; import org.codeaurora.swe.WebView; -import android.widget.ImageView; -import android.widget.PopupMenu; -import android.widget.PopupMenu.OnDismissListener; -import android.widget.PopupMenu.OnMenuItemClickListener; +import org.codeaurora.swe.util.Activator; +import org.codeaurora.swe.util.Observable; -import com.android.browser.R; +import android.widget.ImageView; +import android.widget.TextView; import com.android.browser.UrlInputView.StateListener; public class NavigationBarPhone extends NavigationBarBase implements - StateListener, OnMenuItemClickListener, OnDismissListener { + StateListener { private ImageView mStopButton; private ImageView mMagnify; @@ -45,14 +41,12 @@ public class NavigationBarPhone extends NavigationBarBase implements private String mStopDescription; private String mRefreshDescription; private View mTabSwitcher; + private TextView mTabText; private View mComboIcon; - private View mTitleContainer; - private View mMore; - private Drawable mTextfieldBgDrawable; - private PopupMenu mPopupMenu; - private boolean mOverflowMenuShowing; - private boolean mNeedsMenu; private View mIncognitoIcon; + private float mTabSwitcherInitialTextSize = 0; + private float mTabSwitcherCompressedTextSize = 0; + public NavigationBarPhone(Context context) { super(context); @@ -78,22 +72,42 @@ public class NavigationBarPhone extends NavigationBarBase implements mMagnify = (ImageView) findViewById(R.id.magnify); mTabSwitcher = findViewById(R.id.tab_switcher); mTabSwitcher.setOnClickListener(this); - mMore = findViewById(R.id.more_browser_settings); - mMore.setOnClickListener(this); + mTabText = (TextView) findViewById(R.id.tab_switcher_text); mComboIcon = findViewById(R.id.iconcombo); mComboIcon.setOnClickListener(this); - mTitleContainer = findViewById(R.id.title_bg); setFocusState(false); Resources res = getContext().getResources(); - mStopDrawable = res.getDrawable(R.drawable.ic_stop_holo_dark); - mRefreshDrawable = res.getDrawable(R.drawable.ic_refresh_holo_dark); + mStopDrawable = res.getDrawable(R.drawable.ic_action_stop); + mRefreshDrawable = res.getDrawable(R.drawable.ic_action_reload); mStopDescription = res.getString(R.string.accessibility_button_stop); mRefreshDescription = res.getString(R.string.accessibility_button_refresh); - mTextfieldBgDrawable = res.getDrawable(R.drawable.textfield_active_holo_dark); mUrlInput.setContainer(this); mUrlInput.setStateListener(this); - mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey(); mIncognitoIcon = findViewById(R.id.incognito_icon); + + if (mTabSwitcherInitialTextSize == 0) { + mTabSwitcherInitialTextSize = mTabText.getTextSize(); + mTabSwitcherCompressedTextSize = (float) (mTabSwitcherInitialTextSize / 1.2); + } + } + + @Override + public void setTitleBar(TitleBar titleBar) { + super.setTitleBar(titleBar); + Activator.activate( + new Observable.Observer() { + @Override + public void onChange(Object... params) { + if ((Integer)params[0] > 9) { + mTabText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTabSwitcherCompressedTextSize); + } else { + mTabText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTabSwitcherInitialTextSize); + } + + mTabText.setText(Integer.toString((Integer) params[0])); + } + }, + mUiController.getTabControl().getTabCountObservable()); } @Override @@ -160,8 +174,6 @@ public class NavigationBarPhone extends NavigationBarBase implements } } else if (v == mTabSwitcher) { ((PhoneUi) mBaseUi).toggleNavScreen(); - } else if (mMore == v) { - showMenu(mMore); } else if (mClearButton == v) { mUrlInput.setText(""); } else if (mComboIcon == v) { @@ -174,40 +186,6 @@ public class NavigationBarPhone extends NavigationBarBase implements } @Override - public boolean isMenuShowing() { - return super.isMenuShowing() || mOverflowMenuShowing; - } - - void showMenu(View anchor) { - Activity activity = mUiController.getActivity(); - if (mPopupMenu == null) { - mPopupMenu = new PopupMenu(getContext(), anchor); - mPopupMenu.setOnMenuItemClickListener(this); - mPopupMenu.setOnDismissListener(this); - if (!activity.onCreateOptionsMenu(mPopupMenu.getMenu())) { - mPopupMenu = null; - return; - } - } - Menu menu = mPopupMenu.getMenu(); - if (activity.onPrepareOptionsMenu(menu)) { - mOverflowMenuShowing = true; - } - } - - @Override - public void onDismiss(PopupMenu menu) { - if (menu == mPopupMenu) { - onMenuHidden(); - } - } - - private void onMenuHidden() { - mOverflowMenuShowing = false; - mBaseUi.showTitleBarForDuration(); - } - - @Override public void onFocusChange(View view, boolean hasFocus) { if (view == mUrlInput && !hasFocus) { setDisplayTitle(mUrlInput.getText().toString()); @@ -217,6 +195,7 @@ public class NavigationBarPhone extends NavigationBarBase implements @Override public void onStateChanged(int state) { + super.onStateChanged(state); mVoiceButton.setVisibility(View.GONE); switch(state) { case StateListener.STATE_NORMAL: @@ -225,8 +204,7 @@ public class NavigationBarPhone extends NavigationBarBase implements mClearButton.setVisibility(View.GONE); mMagnify.setVisibility(View.GONE); mTabSwitcher.setVisibility(View.VISIBLE); - mTitleContainer.setBackgroundDrawable(null); - mMore.setVisibility(mNeedsMenu ? View.VISIBLE : View.GONE); + mTabText.setVisibility(View.VISIBLE); if (mUiController != null) { mUiController.setWindowDimming(0f); } @@ -240,8 +218,7 @@ public class NavigationBarPhone extends NavigationBarBase implements } mMagnify.setVisibility(View.GONE); mTabSwitcher.setVisibility(View.GONE); - mMore.setVisibility(View.GONE); - mTitleContainer.setBackgroundDrawable(mTextfieldBgDrawable); + mTabText.setVisibility(View.GONE); if (!mUrlInput.getText().toString().equals(mUrlInput.getTag())) { // only change text if different @@ -259,8 +236,7 @@ public class NavigationBarPhone extends NavigationBarBase implements mClearButton.setVisibility(View.VISIBLE); mMagnify.setVisibility(View.VISIBLE); mTabSwitcher.setVisibility(View.GONE); - mMore.setVisibility(View.GONE); - mTitleContainer.setBackgroundDrawable(mTextfieldBgDrawable); + mTabText.setVisibility(View.GONE); break; } } @@ -271,10 +247,4 @@ public class NavigationBarPhone extends NavigationBarBase implements mIncognitoIcon.setVisibility(tab.isPrivateBrowsingEnabled() ? View.VISIBLE : View.GONE); } - - @Override - public boolean onMenuItemClick(MenuItem item) { - return mUiController.onOptionsItemSelected(item); - } - } diff --git a/src/com/android/browser/NavigationBarTablet.java b/src/com/android/browser/NavigationBarTablet.java index a965e0a7..17f7398e 100644 --- a/src/com/android/browser/NavigationBarTablet.java +++ b/src/com/android/browser/NavigationBarTablet.java @@ -31,7 +31,6 @@ import android.view.View; import android.widget.ImageButton; import android.widget.ImageView; -import com.android.browser.R; import com.android.browser.UI.ComboViews; import com.android.browser.UrlInputView.StateListener; @@ -53,8 +52,6 @@ public class NavigationBarTablet extends NavigationBarBase implements StateListe private View mClearButton; private View mVoiceButton; private View mNavButtons; - private Drawable mFocusDrawable; - private Drawable mUnfocusDrawable; private boolean mHideNavButtons; private Drawable mFaviconDrawable; @@ -75,14 +72,10 @@ public class NavigationBarTablet extends NavigationBarBase implements StateListe private void init(Context context) { Resources resources = context.getResources(); - mStopDrawable = resources.getDrawable(R.drawable.ic_stop_holo_dark); - mReloadDrawable = resources.getDrawable(R.drawable.ic_refresh_holo_dark); + mStopDrawable = resources.getDrawable(R.drawable.ic_action_stop); + mReloadDrawable = resources.getDrawable(R.drawable.ic_action_reload); mStopDescription = resources.getString(R.string.accessibility_button_stop); mRefreshDescription = resources.getString(R.string.accessibility_button_refresh); - mFocusDrawable = resources.getDrawable( - R.drawable.textfield_active_holo_dark); - mUnfocusDrawable = resources.getDrawable( - R.drawable.textfield_default_holo_dark); mHideNavButtons = resources.getBoolean(R.bool.hide_nav_buttons); } @@ -140,12 +133,8 @@ public class NavigationBarTablet extends NavigationBarBase implements StateListe void updateNavigationState(Tab tab) { if (tab != null) { - mBackButton.setImageResource(tab.canGoBack() - ? R.drawable.ic_back_holo_dark - : R.drawable.ic_back_disabled_holo_dark); - mForwardButton.setImageResource(tab.canGoForward() - ? R.drawable.ic_forward_holo_dark - : R.drawable.ic_forward_disabled_holo_dark); + mBackButton.setEnabled(tab.canGoBack()); + mForwardButton.setEnabled(tab.canGoBack()); } updateUrlIcon(); } @@ -205,7 +194,7 @@ public class NavigationBarTablet extends NavigationBarBase implements StateListe void updateUrlIcon() { if (mUrlInput.hasFocus()) { - mUrlIcon.setImageResource(R.drawable.ic_search_holo_dark); + mUrlIcon.setImageResource(R.drawable.ic_action_search_normal); } else { if (mFaviconDrawable == null) { mFaviconDrawable = mBaseUi.getFaviconDrawable(null); @@ -223,7 +212,7 @@ public class NavigationBarTablet extends NavigationBarBase implements StateListe } mSearchButton.setVisibility(View.GONE); mStar.setVisibility(View.GONE); - mUrlIcon.setImageResource(R.drawable.ic_search_holo_dark); + mUrlIcon.setImageResource(R.drawable.ic_action_search_normal); } else { if (mHideNavButtons) { showNavButtons(); @@ -232,8 +221,6 @@ public class NavigationBarTablet extends NavigationBarBase implements StateListe mSearchButton.setVisibility(View.VISIBLE); updateUrlIcon(); } - mUrlContainer.setBackgroundDrawable(focus - ? mFocusDrawable : mUnfocusDrawable); } private void stopOrRefresh() { @@ -324,6 +311,7 @@ public class NavigationBarTablet extends NavigationBarBase implements StateListe @Override public void onStateChanged(int state) { + super.onStateChanged(state); mVoiceButton.setVisibility(View.GONE); switch(state) { case STATE_NORMAL: diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java index ca478c20..5dc87f31 100644 --- a/src/com/android/browser/PhoneUi.java +++ b/src/com/android/browser/PhoneUi.java @@ -23,12 +23,10 @@ import android.animation.ObjectAnimator; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; -import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Rect; import android.os.Message; import android.util.Log; -import android.util.TypedValue; import android.view.ActionMode; import android.view.KeyEvent; import android.view.LayoutInflater; @@ -36,11 +34,11 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.accessibility.AccessibilityEvent; +import android.view.animation.DecelerateInterpolator; import android.webkit.ValueCallback; import org.codeaurora.swe.WebView; import android.widget.ImageView; -import com.android.browser.R; import com.android.browser.UrlInputView.StateListener; /** @@ -160,14 +158,6 @@ public class PhoneUi extends BaseUi { return true; } - private void setMenuItemVisibility(Menu menu, int id, - boolean visibility) { - MenuItem item = menu.findItem(id); - if (item != null) { - item.setVisible(visibility); - } - } - @Override public void updateMenuState(Tab tab, Menu menu) { MenuItem bm = menu.findItem(R.id.bookmarks_menu_id); @@ -273,7 +263,6 @@ public class PhoneUi extends BaseUi { mAnimScreen = new AnimScreen(mActivity); } else { mAnimScreen.mMain.setAlpha(1f); - mAnimScreen.mTitle.setAlpha(1f); mAnimScreen.setScaleFactor(1f); } mAnimScreen.set(getTitleBar(), viewportBitmap); @@ -295,37 +284,40 @@ public class PhoneUi extends BaseUi { int toTop = ((fromBottom - (ntth + height)) / 2 + ntth); int toRight = toLeft + width; int toBottom = toTop + height; - float scaleFactor = width / (float) mContentView.getWidth(); - mContentView.setVisibility(View.GONE); - AnimatorSet set1 = new AnimatorSet(); + float toScaleFactor = width / (float) mContentView.getWidth(); + ObjectAnimator tx = ObjectAnimator.ofInt(mAnimScreen.mContent, "left", fromLeft, toLeft); + ObjectAnimator ty = ObjectAnimator.ofInt(mAnimScreen.mContent, "top", fromTop, toTop); + ObjectAnimator tr = ObjectAnimator.ofInt(mAnimScreen.mContent, "right", fromRight, toRight); + ObjectAnimator tb = ObjectAnimator.ofInt(mAnimScreen.mContent, "bottom", fromBottom, toBottom); + ObjectAnimator sx = ObjectAnimator.ofFloat(mAnimScreen, "scaleFactor", 1f, toScaleFactor); + ObjectAnimator navTabsIn = ObjectAnimator.ofFloat(mNavScreen.mToolbarLayout, "translationY", + -mNavScreen.getResources().getDimensionPixelSize(R.dimen.toolbar_height), 0f); + mAnimScreen.mContent.layout(fromLeft, fromTop, fromRight, fromBottom); + mAnimScreen.setScaleFactor(1f); + AnimatorSet inanim = new AnimatorSet(); - ObjectAnimator tx = ObjectAnimator.ofInt(mAnimScreen.mContent, "left", - fromLeft, toLeft); - ObjectAnimator ty = ObjectAnimator.ofInt(mAnimScreen.mContent, "top", - fromTop, toTop); - ObjectAnimator tr = ObjectAnimator.ofInt(mAnimScreen.mContent, "right", - fromRight, toRight); - ObjectAnimator tb = ObjectAnimator.ofInt(mAnimScreen.mContent, "bottom", - fromBottom, toBottom); - ObjectAnimator title = ObjectAnimator.ofFloat(mAnimScreen.mTitle, "alpha", - 1f, 0f); - ObjectAnimator sx = ObjectAnimator.ofFloat(mAnimScreen, "scaleFactor", - 1f, scaleFactor); - ObjectAnimator blend1 = ObjectAnimator.ofFloat(mAnimScreen.mMain, - "alpha", 1f, 0f); - blend1.setDuration(100); - - inanim.playTogether(tx, ty, tr, tb, sx, title); + inanim.playTogether(tx, ty, tr, tb, sx, navTabsIn); + inanim.setInterpolator(new DecelerateInterpolator()); inanim.setDuration(200); + + ObjectAnimator disappear = ObjectAnimator.ofFloat(mAnimScreen.mMain, "alpha", 1f, 0f); + disappear.setInterpolator(new DecelerateInterpolator()); + disappear.setDuration(100); + + AnimatorSet set1 = new AnimatorSet(); set1.addListener(new AnimatorListenerAdapter() { @Override + public void onAnimationStart(Animator animation) { + mContentView.setVisibility(View.GONE); + } + @Override public void onAnimationEnd(Animator anim) { mCustomViewContainer.removeView(mAnimScreen.mMain); finishAnimationIn(); mUiController.setBlockEvents(false); } }); - set1.playSequentially(inanim, blend1); + set1.playSequentially(inanim, disappear); set1.start(); mUiController.setBlockEvents(false); } @@ -396,39 +388,33 @@ public class PhoneUi extends BaseUi { mAnimScreen.mContent.setRight(fromRight); mAnimScreen.mContent.setBottom(fromBottom); mAnimScreen.setScaleFactor(1f); - AnimatorSet set1 = new AnimatorSet(); - ObjectAnimator fade2 = ObjectAnimator.ofFloat(mAnimScreen.mMain, "alpha", 0f, 1f); - ObjectAnimator fade1 = ObjectAnimator.ofFloat(mNavScreen, "alpha", 1f, 0f); - set1.playTogether(fade1, fade2); - set1.setDuration(100); - AnimatorSet set2 = new AnimatorSet(); - ObjectAnimator l = ObjectAnimator.ofInt(mAnimScreen.mContent, "left", - fromLeft, toLeft); - ObjectAnimator t = ObjectAnimator.ofInt(mAnimScreen.mContent, "top", - fromTop, toTop); - ObjectAnimator r = ObjectAnimator.ofInt(mAnimScreen.mContent, "right", - fromRight, toRight); - ObjectAnimator b = ObjectAnimator.ofInt(mAnimScreen.mContent, "bottom", - fromBottom, toBottom); - ObjectAnimator scale = ObjectAnimator.ofFloat(mAnimScreen, "scaleFactor", - 1f, scaleFactor); - set2.playTogether(l, t, r, b, scale); - set2.setDuration(200); - AnimatorSet combo = new AnimatorSet(); - combo.playSequentially(set1, set2); - combo.addListener(new AnimatorListenerAdapter() { + //ObjectAnimator fade2 = ObjectAnimator.ofFloat(mNavScreen, "alpha", 1f, 0f); + //fade2.setDuration(100); + AnimatorSet set = new AnimatorSet(); + ObjectAnimator animAppear = ObjectAnimator.ofFloat(mAnimScreen.mMain, "alpha", 0f, 1f); + animAppear.setDuration(100); + ObjectAnimator l = ObjectAnimator.ofInt(mAnimScreen.mContent, "left", fromLeft, toLeft); + ObjectAnimator t = ObjectAnimator.ofInt(mAnimScreen.mContent, "top", fromTop, toTop); + ObjectAnimator r = ObjectAnimator.ofInt(mAnimScreen.mContent, "right", fromRight, toRight); + ObjectAnimator b = ObjectAnimator.ofInt(mAnimScreen.mContent, "bottom", fromBottom, toBottom); + ObjectAnimator scale = ObjectAnimator.ofFloat(mAnimScreen, "scaleFactor", 1f, scaleFactor); + set.playTogether(animAppear, l, t, r, b, scale); + set.setInterpolator(new DecelerateInterpolator()); + set.setDuration(200); + set.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator anim) { checkTabReady(); } }); - combo.start(); + set.start(); } private int mNumTries = 0; private void checkTabReady() { boolean isready = true; + boolean zeroTries = mNumTries == 0; Tab tab = mUiController.getTabControl().getCurrentTab(); BrowserWebView webview = null; if (tab == null) @@ -456,11 +442,16 @@ public class PhoneUi extends BaseUi { } mNumTries = 0; final boolean hasCrashed = (webview == null) ? false : webview.hasCrashed(); + // fast path: don't wait if we've been ready for a while + if (zeroTries) { + fadeOutCustomViewContainer(hasCrashed); + return; + } mCustomViewContainer.postDelayed(new Runnable() { - public void run() { - fadeOutCustomViewContainer(hasCrashed); - } - }, 33); //WebView is ready, but give it extra 2 frame's time to display and finish the swaps + public void run() { + fadeOutCustomViewContainer(hasCrashed); + } + }, 32); //WebView is ready, but give it extra 2 frame's time to display and finish the swaps } private void fadeOutCustomViewContainer(boolean hasCrashed) { @@ -477,6 +468,7 @@ public class PhoneUi extends BaseUi { mUiController.setBlockEvents(false); } }); + otheralpha.setInterpolator(new DecelerateInterpolator()); otheralpha.start(); } @@ -509,16 +501,18 @@ public class PhoneUi extends BaseUi { static class AnimScreen { private View mMain; - private ImageView mTitle; private ImageView mContent; private float mScale; - private Bitmap mTitleBarBitmap; public AnimScreen(Context ctx) { - mMain = LayoutInflater.from(ctx).inflate(R.layout.anim_screen, - null); - mTitle = (ImageView) mMain.findViewById(R.id.title); - mContent = (ImageView) mMain.findViewById(R.id.content); + mMain = LayoutInflater.from(ctx).inflate(R.layout.anim_screen, null); + mMain.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + // just eat clicks when this view is visible + } + }); + mContent = (ImageView) mMain.findViewById(R.id.anim_screen_content); mContent.setScaleType(ImageView.ScaleType.MATRIX); mContent.setImageMatrix(new Matrix()); mScale = 1.0f; @@ -529,47 +523,26 @@ public class PhoneUi extends BaseUi { if (tbar == null) { return; } - int embTbarHeight = tbar.getEmbeddedHeight(); - int tbarHeight = tbar.isFixed() ? tbar.calculateEmbeddedHeight() : embTbarHeight; - if (tbar.getWidth() > 0 && tbarHeight > 0) { - if (mTitleBarBitmap == null - || mTitleBarBitmap.getWidth() != tbar.getWidth() - || mTitleBarBitmap.getHeight() != tbarHeight) { - mTitleBarBitmap = safeCreateBitmap(tbar.getWidth(), - tbarHeight); - } - if (mTitleBarBitmap != null) { - Canvas c = new Canvas(mTitleBarBitmap); - tbar.draw(c); - c.setBitmap(null); - } - } else { - mTitleBarBitmap = null; - } - mTitle.setImageBitmap(mTitleBarBitmap); - mTitle.setVisibility(View.VISIBLE); - mContent.setImageBitmap(viewportBitmap); } - private Bitmap safeCreateBitmap(int width, int height) { + /*private Bitmap safeCreateBitmap(int width, int height) { if (width <= 0 || height <= 0) { Log.w(LOGTAG, "safeCreateBitmap failed! width: " + width + ", height: " + height); return null; } return Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); - } + }*/ public void set(Bitmap image) { - mTitle.setVisibility(View.GONE); mContent.setImageBitmap(image); } private void setScaleFactor(float sf) { mScale = sf; Matrix m = new Matrix(); - m.postScale(sf,sf); + m.postScale(sf, sf); mContent.setImageMatrix(m); } diff --git a/src/com/android/browser/SuggestionsAdapter.java b/src/com/android/browser/SuggestionsAdapter.java index 41d2b748..78c454f9 100644 --- a/src/com/android/browser/SuggestionsAdapter.java +++ b/src/com/android/browser/SuggestionsAdapter.java @@ -178,16 +178,16 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, switch (item.type) { case TYPE_SUGGEST: case TYPE_SEARCH: - id = R.drawable.ic_search_category_suggest; + id = R.drawable.ic_suggest_search_normal; break; case TYPE_BOOKMARK: - id = R.drawable.ic_search_category_bookmark; + id = R.drawable.ic_suggest_bookmark_normal; break; case TYPE_HISTORY: - id = R.drawable.ic_search_category_history; + id = R.drawable.ic_suggest_history_normal; break; case TYPE_SUGGEST_URL: - id = R.drawable.ic_search_category_browser; + id = R.drawable.ic_suggest_browser_normal; break; default: id = -1; diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java index a4e039dc..c8a48156 100644 --- a/src/com/android/browser/TabBar.java +++ b/src/com/android/browser/TabBar.java @@ -25,12 +25,10 @@ import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; -import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; -import android.graphics.Shader; import android.graphics.drawable.Drawable; import android.view.Gravity; import android.view.LayoutInflater; @@ -45,8 +43,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.android.browser.R; - /** * tabbed title bar for xlarge screen browser */ @@ -71,8 +67,8 @@ public class TabBar extends LinearLayout implements OnClickListener { private int mCurrentTextureWidth = 0; private int mCurrentTextureHeight = 0; - private Drawable mActiveDrawable; - private Drawable mInactiveDrawable; + ///private Drawable mActiveDrawable; + ///private Drawable mInactiveDrawable; private final Paint mActiveShaderPaint = new Paint(); private final Paint mInactiveShaderPaint = new Paint(); @@ -80,8 +76,8 @@ public class TabBar extends LinearLayout implements OnClickListener { private final Matrix mActiveMatrix = new Matrix(); private final Matrix mInactiveMatrix = new Matrix(); - private BitmapShader mActiveShader; - private BitmapShader mInactiveShader; + ///private BitmapShader mActiveShader; + ///private BitmapShader mInactiveShader; private int mTabOverlap; private int mAddTabOverlap; @@ -95,8 +91,8 @@ public class TabBar extends LinearLayout implements OnClickListener { mUi = ui; Resources res = activity.getResources(); mTabWidth = (int) res.getDimension(R.dimen.tab_width); - mActiveDrawable = res.getDrawable(R.drawable.bg_urlbar); - mInactiveDrawable = res.getDrawable(R.drawable.browsertab_inactive); + ///mActiveDrawable = res.getDrawable(R.drawable.bg_urlbar); + ///mInactiveDrawable = res.getDrawable(R.drawable.browsertab_inactive); mTabMap = new HashMap<Tab, TabView>(); LayoutInflater factory = LayoutInflater.from(activity); @@ -226,7 +222,7 @@ public class TabBar extends LinearLayout implements OnClickListener { TextView mTitle; View mIncognito; View mSnapshot; - ImageView mIconView; + ImageView mFaviconView; ImageView mLock; ImageView mClose; boolean mSelected; @@ -250,7 +246,7 @@ public class TabBar extends LinearLayout implements OnClickListener { LayoutInflater inflater = LayoutInflater.from(getContext()); mTabContent = inflater.inflate(R.layout.tab_title, this, true); mTitle = (TextView) mTabContent.findViewById(R.id.title); - mIconView = (ImageView) mTabContent.findViewById(R.id.favicon); + mFaviconView = (ImageView) mTabContent.findViewById(R.id.favicon); mLock = (ImageView) mTabContent.findViewById(R.id.lock); mClose = (ImageView) mTabContent.findViewById(R.id.close); mClose.setOnClickListener(this); @@ -292,7 +288,7 @@ public class TabBar extends LinearLayout implements OnClickListener { public void setActivated(boolean selected) { mSelected = selected; mClose.setVisibility(mSelected ? View.VISIBLE : View.GONE); - mIconView.setVisibility(mSelected ? View.GONE : View.VISIBLE); + mFaviconView.setVisibility(mSelected ? View.GONE : View.VISIBLE); mTitle.setTextAppearance(mActivity, mSelected ? R.style.TabTitleSelected : R.style.TabTitleUnselected); setHorizontalFadingEdgeEnabled(!mSelected); @@ -314,7 +310,7 @@ public class TabBar extends LinearLayout implements OnClickListener { } void setFavicon(Drawable d) { - mIconView.setImageDrawable(d); + mFaviconView.setImageDrawable(d); } void setLock(Drawable d) { @@ -341,7 +337,7 @@ public class TabBar extends LinearLayout implements OnClickListener { setFocusPath(mFocusPath, 0, 0, r - l, b - t); } - @Override + /*@Override protected void dispatchDraw(Canvas canvas) { if (mCurrentTextureWidth != mUi.getContentWidth() || mCurrentTextureHeight != getHeight()) { @@ -383,7 +379,7 @@ public class TabBar extends LinearLayout implements OnClickListener { if (isFocused()) { canvas.drawPath(mFocusPath, mFocusPaint); } - } + }*/ private void setTabPath(Path path, int l, int t, int r, int b) { path.reset(); diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java index 84330c13..0d16b594 100644 --- a/src/com/android/browser/TabControl.java +++ b/src/com/android/browser/TabControl.java @@ -21,6 +21,7 @@ import android.util.Log; import org.codeaurora.swe.GeolocationPermissions; import org.codeaurora.swe.WebView; +import org.codeaurora.swe.util.Observable; import java.util.ArrayList; import java.util.HashMap; @@ -56,6 +57,8 @@ class TabControl { private OnThumbnailUpdatedListener mOnThumbnailUpdatedListener; + private Observable mTabCountObservable; + /** * Construct a new TabControl object */ @@ -64,12 +67,18 @@ class TabControl { mMaxTabs = mController.getMaxTabs(); mTabs = new ArrayList<Tab>(mMaxTabs); mTabQueue = new ArrayList<Tab>(mMaxTabs); + mTabCountObservable = new Observable(); + mTabCountObservable.set(0); } synchronized static long getNextId() { return sNextId++; } + Observable getTabCountObservable() { + return mTabCountObservable; + } + /** * Return the current tab's main WebView. This will always return the main * WebView for a given tab and not a subwindow. @@ -181,6 +190,7 @@ class TabControl { } } mTabs.add(tab); + mTabCountObservable.set(mTabs.size()); tab.setController(mController); mController.onSetWebView(tab, tab.getWebView()); tab.putInBackground(); @@ -207,6 +217,7 @@ class TabControl { // Create a new tab and add it to the tab list Tab t = new Tab(mController, w, state); mTabs.add(t); + mTabCountObservable.set(mTabs.size()); if (privateBrowsing) { mNumIncognito += 1; } @@ -226,6 +237,7 @@ class TabControl { SnapshotTab createSnapshotTab(long snapshotId) { SnapshotTab t = new SnapshotTab(mController, snapshotId); mTabs.add(t); + mTabCountObservable.set(mTabs.size()); return t; } @@ -253,6 +265,7 @@ class TabControl { // Remove t from our list of tabs. mTabs.remove(t); + mTabCountObservable.set(mTabs.size()); //Clear incognito geolocation state if this is the last incognito tab. if (t.isPrivateBrowsingEnabled()) { @@ -435,6 +448,7 @@ class TabControl { Tab t = new Tab(mController, state); tabMap.put(id, t); mTabs.add(t); + mTabCountObservable.set(mTabs.size()); // added the tab to the front as they are not current mTabQueue.add(0, t); } diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java index 4fc56c60..741dc41f 100644 --- a/src/com/android/browser/TitleBar.java +++ b/src/com/android/browser/TitleBar.java @@ -34,8 +34,6 @@ import android.view.animation.AnimationUtils; import android.view.animation.DecelerateInterpolator; import org.codeaurora.swe.WebView; -import com.android.browser.R; - import android.widget.FrameLayout; import android.widget.RelativeLayout; diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java index 83d74398..a87b0451 100644 --- a/src/com/android/browser/XLargeUi.java +++ b/src/com/android/browser/XLargeUi.java @@ -104,6 +104,9 @@ public class XLargeUi extends BaseUi { if (bm != null) { bm.setVisible(false); } + + menu.setGroupVisible(R.id.NAV_MENU, false); + return true; } @@ -262,16 +265,19 @@ public class XLargeUi extends BaseUi { @Override public Drawable getFaviconDrawable(Bitmap icon) { - Drawable[] array = new Drawable[2]; - array[0] = getFaviconBackground(); - if (icon == null) { - array[1] = getGenericFavicon(); - } else { - array[1] = new BitmapDrawable(mActivity.getResources(), icon); + if (ENABLE_BORDER_AROUND_FAVICON) { + Drawable[] array = new Drawable[2]; + array[0] = getFaviconBackground(); + if (icon == null) { + array[1] = getGenericFavicon(); + } else { + array[1] = new BitmapDrawable(mActivity.getResources(), icon); + } + LayerDrawable d = new LayerDrawable(array); + d.setLayerInset(1, 2, 2, 2, 2); + return d; } - LayerDrawable d = new LayerDrawable(array); - d.setLayerInset(1, 2, 2, 2, 2); - return d; + return icon == null ? getGenericFavicon() : new BitmapDrawable(mActivity.getResources(), icon); } } diff --git a/src/com/android/browser/appmenu/AppMenu.java b/src/com/android/browser/appmenu/AppMenu.java index a0ff7107..66ddc9f3 100644 --- a/src/com/android/browser/appmenu/AppMenu.java +++ b/src/com/android/browser/appmenu/AppMenu.java @@ -235,6 +235,9 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { // The menu is displayed above the anchored view, so shift the menu up by the bottom // padding of the background. int verticalOffset = appRect.height() - popup.getHeight() + padding.bottom; + if (anchorLocation[1] > 0) { + verticalOffset -= anchorHeight; + } popup.setVerticalOffset(verticalOffset); } else { // The menu is displayed over and below the anchored view, so shift the menu up by the diff --git a/src/com/android/browser/appmenu/AppMenuAdapter.java b/src/com/android/browser/appmenu/AppMenuAdapter.java index 6a8cdb4c..425e91c9 100644 --- a/src/com/android/browser/appmenu/AppMenuAdapter.java +++ b/src/com/android/browser/appmenu/AppMenuAdapter.java @@ -292,7 +292,6 @@ class AppMenuAdapter extends BaseAdapter { } else { holder = (FourButtonMenuItemViewHolder) convertView.getTag(); } - setupImageButton(holder.buttons[0], item.getSubMenu().getItem(0)); setupImageButton(holder.buttons[1], item.getSubMenu().getItem(1)); setupImageButton(holder.buttons[2], item.getSubMenu().getItem(2)); @@ -391,17 +390,13 @@ class AppMenuAdapter extends BaseAdapter { } private void setupMenuButton(ImageButton button) { - button.setImageResource(R.drawable.ic_menu_overflow); - button.setEnabled(true); - button.setFocusable(true); + button.setSelected(true); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mAppMenu.dismiss(); } }); - - button.setScaleType(ScaleType.CENTER); } /** diff --git a/src/com/android/browser/preferences/WebsiteSettingsFragment.java b/src/com/android/browser/preferences/WebsiteSettingsFragment.java index 38c19260..020492c1 100644 --- a/src/com/android/browser/preferences/WebsiteSettingsFragment.java +++ b/src/com/android/browser/preferences/WebsiteSettingsFragment.java @@ -227,9 +227,9 @@ public class WebsiteSettingsFragment extends ListFragment implements OnClickList mUsageHighIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_list_data_large); mLocationAllowedIcon = BitmapFactory.decodeResource(getResources(), - R.drawable.ic_gps_on_holo_dark); + R.drawable.ic_action_gps_on); mLocationDisallowedIcon = BitmapFactory.decodeResource(getResources(), - R.drawable.ic_gps_denied_holo_dark); + R.drawable.ic_action_gps_off); mCurrentSite = site; if (mCurrentSite == null) { askForOrigins(); diff --git a/src/com/android/browser/provider/BrowserProvider.java b/src/com/android/browser/provider/BrowserProvider.java index 0d27d8d6..c86ae844 100644 --- a/src/com/android/browser/provider/BrowserProvider.java +++ b/src/com/android/browser/provider/BrowserProvider.java @@ -608,16 +608,16 @@ public class BrowserProvider extends ContentProvider { if (type == 1) { if (mHistoryCursor.getInt(3) == 1) { return Integer.valueOf( - R.drawable.ic_search_category_bookmark) + R.drawable.ic_suggest_bookmark_normal) .toString(); } else { return Integer.valueOf( - R.drawable.ic_search_category_history) + R.drawable.ic_suggest_history_normal) .toString(); } } else { return Integer.valueOf( - R.drawable.ic_search_category_suggest) + R.drawable.ic_suggest_search_normal) .toString(); } diff --git a/src/com/android/browser/search/OpenSearchSearchEngine.java b/src/com/android/browser/search/OpenSearchSearchEngine.java index 2cd4670d..eb7c97ed 100644 --- a/src/com/android/browser/search/OpenSearchSearchEngine.java +++ b/src/com/android/browser/search/OpenSearchSearchEngine.java @@ -246,7 +246,7 @@ public class OpenSearchSearchEngine implements SearchEngine { Log.w(TAG, "Error", e); } } else if (column == COLUMN_INDEX_ICON) { - return String.valueOf(R.drawable.magnifying_glass); + return String.valueOf(R.drawable.ic_action_search_normal); } } return null; diff --git a/src/com/android/browser/view/StopProgressView.java b/src/com/android/browser/view/StopProgressView.java deleted file mode 100644 index 3df099de..00000000 --- a/src/com/android/browser/view/StopProgressView.java +++ /dev/null @@ -1,98 +0,0 @@ - -package com.android.browser.view; - -import com.android.browser.R; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.widget.ProgressBar; - - -public class StopProgressView extends ProgressBar { - - Drawable mOverlayDrawable; - Drawable mProgressDrawable; - int mWidth; - int mHeight; - - /** - * @param context - * @param attrs - * @param defStyle - * @param styleRes - */ - public StopProgressView(Context context, AttributeSet attrs, int defStyle, int styleRes) { - super(context, attrs, defStyle); - init(attrs); - } - - /** - * @param context - * @param attrs - * @param defStyle - */ - public StopProgressView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - init(attrs); - } - - /** - * @param context - * @param attrs - */ - public StopProgressView(Context context, AttributeSet attrs) { - super(context, attrs); - init(attrs); - } - - /** - * @param context - */ - public StopProgressView(Context context) { - super(context); - init(null); - } - - private void init(AttributeSet attrs) { - mProgressDrawable = getIndeterminateDrawable(); - setImageDrawable(getContext().getResources() - .getDrawable(R.drawable.ic_stop_holo_dark)); - } - - public void hideProgress() { - setIndeterminateDrawable(null); - } - - public void showProgress() { - setIndeterminateDrawable(mProgressDrawable); - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - super.onLayout(changed, left, top, right, bottom); - mWidth = (right - left) * 2 / 3; - mHeight = (bottom - top) * 2 / 3; - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - if (mOverlayDrawable != null) { - int l = (getWidth() - mWidth) / 2; - int t = (getHeight() - mHeight) / 2; - mOverlayDrawable.setBounds(l, t, l + mWidth, t + mHeight); - mOverlayDrawable.draw(canvas); - } - } - - public Drawable getDrawable() { - return mOverlayDrawable; - } - - public void setImageDrawable(Drawable d) { - mOverlayDrawable = d; - } - -} |