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
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index a04f5e0..9dbfe24 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -63,7 +63,7 @@
*/
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 @@
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 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 @@
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 3b95ee9..4b9f48c 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -305,7 +305,7 @@
@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 5d71ce3..e2348a5 100644
--- a/src/com/android/browser/BrowserWebView.java
+++ b/src/com/android/browser/BrowserWebView.java
@@ -30,6 +30,7 @@
* 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 @@
@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 @@
@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 b0657c9..77f4032 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -2281,7 +2281,7 @@
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 @@
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 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 d0e94ad..cab6deb 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.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 4136d6e..c80c0e8 100644
--- a/src/com/android/browser/LocationButton.java
+++ b/src/com/android/browser/LocationButton.java
@@ -208,10 +208,10 @@
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 @@
@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 64243e3..0962449 100644
--- a/src/com/android/browser/NavScreen.java
+++ b/src/com/android/browser/NavScreen.java
@@ -27,20 +27,14 @@
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 @@
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 @@
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 @@
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 @@
@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 @@
}
}
+ 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 a23ebe9..39c73ac 100644
--- a/src/com/android/browser/NavTabScroller.java
+++ b/src/com/android/browser/NavTabScroller.java
@@ -135,7 +135,7 @@
}
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 ec18786..01435b6 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.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 @@
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 @@
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 @@
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 @@
@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 void onProgressStopped() {
}
- public boolean isMenuShowing() {
- return false;
- }
-
public void onTabDataChanged(Tab tab) {
mLocationButton.onTabDataChanged(tab);
}
@@ -411,4 +444,41 @@
@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 fe5ca28..f528e8f 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 @@
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 @@
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 @@
}
} 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 @@
}
@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 @@
@Override
public void onStateChanged(int state) {
+ super.onStateChanged(state);
mVoiceButton.setVisibility(View.GONE);
switch(state) {
case StateListener.STATE_NORMAL:
@@ -225,8 +204,7 @@
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 @@
}
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 @@
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 @@
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 a965e0a..17f7398 100644
--- a/src/com/android/browser/NavigationBarTablet.java
+++ b/src/com/android/browser/NavigationBarTablet.java
@@ -31,7 +31,6 @@
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 @@
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 @@
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 @@
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 @@
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 @@
}
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 @@
mSearchButton.setVisibility(View.VISIBLE);
updateUrlIcon();
}
- mUrlContainer.setBackgroundDrawable(focus
- ? mFocusDrawable : mUnfocusDrawable);
}
private void stopOrRefresh() {
@@ -324,6 +311,7 @@
@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 ca478c2..5dc87f3 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -23,12 +23,10 @@
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.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 @@
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 @@
mAnimScreen = new AnimScreen(mActivity);
} else {
mAnimScreen.mMain.setAlpha(1f);
- mAnimScreen.mTitle.setAlpha(1f);
mAnimScreen.setScaleFactor(1f);
}
mAnimScreen.set(getTitleBar(), viewportBitmap);
@@ -295,37 +284,40 @@
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();
- 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);
+ 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);
- inanim.playTogether(tx, ty, tr, tb, sx, title);
+ AnimatorSet inanim = new AnimatorSet();
+ 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 @@
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 @@
}
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 @@
mUiController.setBlockEvents(false);
}
});
+ otheralpha.setInterpolator(new DecelerateInterpolator());
otheralpha.start();
}
@@ -509,16 +501,18 @@
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 @@
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 41d2b74..78c454f 100644
--- a/src/com/android/browser/SuggestionsAdapter.java
+++ b/src/com/android/browser/SuggestionsAdapter.java
@@ -178,16 +178,16 @@
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 a4e039d..c8a4815 100644
--- a/src/com/android/browser/TabBar.java
+++ b/src/com/android/browser/TabBar.java
@@ -25,12 +25,10 @@
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.List;
import java.util.Map;
-import com.android.browser.R;
-
/**
* tabbed title bar for xlarge screen browser
*/
@@ -71,8 +67,8 @@
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 @@
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 @@
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 @@
TextView mTitle;
View mIncognito;
View mSnapshot;
- ImageView mIconView;
+ ImageView mFaviconView;
ImageView mLock;
ImageView mClose;
boolean mSelected;
@@ -250,7 +246,7 @@
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 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 @@
}
void setFavicon(Drawable d) {
- mIconView.setImageDrawable(d);
+ mFaviconView.setImageDrawable(d);
}
void setLock(Drawable d) {
@@ -341,7 +337,7 @@
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 @@
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 84330c1..0d16b59 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -21,6 +21,7 @@
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 @@
private OnThumbnailUpdatedListener mOnThumbnailUpdatedListener;
+ private Observable mTabCountObservable;
+
/**
* Construct a new TabControl object
*/
@@ -64,12 +67,18 @@
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 @@
}
}
mTabs.add(tab);
+ mTabCountObservable.set(mTabs.size());
tab.setController(mController);
mController.onSetWebView(tab, tab.getWebView());
tab.putInBackground();
@@ -207,6 +217,7 @@
// 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 @@
SnapshotTab createSnapshotTab(long snapshotId) {
SnapshotTab t = new SnapshotTab(mController, snapshotId);
mTabs.add(t);
+ mTabCountObservable.set(mTabs.size());
return t;
}
@@ -253,6 +265,7 @@
// 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 @@
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 4fc56c6..741dc41 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -34,8 +34,6 @@
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 83d7439..a87b045 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -104,6 +104,9 @@
if (bm != null) {
bm.setVisible(false);
}
+
+ menu.setGroupVisible(R.id.NAV_MENU, false);
+
return true;
}
@@ -262,16 +265,19 @@
@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 a0ff710..66ddc9f 100644
--- a/src/com/android/browser/appmenu/AppMenu.java
+++ b/src/com/android/browser/appmenu/AppMenu.java
@@ -235,6 +235,9 @@
// 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 6a8cdb4..425e91c 100644
--- a/src/com/android/browser/appmenu/AppMenuAdapter.java
+++ b/src/com/android/browser/appmenu/AppMenuAdapter.java
@@ -292,7 +292,6 @@
} 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 @@
}
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 38c1926..020492c 100644
--- a/src/com/android/browser/preferences/WebsiteSettingsFragment.java
+++ b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
@@ -227,9 +227,9 @@
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 0d27d8d..c86ae84 100644
--- a/src/com/android/browser/provider/BrowserProvider.java
+++ b/src/com/android/browser/provider/BrowserProvider.java
@@ -608,16 +608,16 @@
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 2cd4670..eb7c97e 100644
--- a/src/com/android/browser/search/OpenSearchSearchEngine.java
+++ b/src/com/android/browser/search/OpenSearchSearchEngine.java
@@ -246,7 +246,7 @@
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 3df099d..0000000
--- 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;
- }
-
-}