summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEnrico Ros <eros@codeaurora.org>2014-11-18 20:15:48 -0800
committerWebTech Code Review <code-review@localhost>2014-12-01 09:53:43 -0800
commit1f5a0952599285350be6b1351110518086047fd1 (patch)
tree6af2ffdb24ad21ad6cb567efb415e635de937daf /src
parent49b7925ec66faf5015fdd1862eada2978ddd5fde (diff)
downloadandroid_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')
-rw-r--r--src/com/android/browser/BaseUi.java40
-rw-r--r--src/com/android/browser/BrowserActivity.java2
-rw-r--r--src/com/android/browser/BrowserWebView.java20
-rw-r--r--src/com/android/browser/Controller.java5
-rwxr-xr-xsrc/com/android/browser/GeolocationPermissionsPrompt.java6
-rw-r--r--src/com/android/browser/LocationButton.java8
-rw-r--r--src/com/android/browser/NavScreen.java44
-rw-r--r--src/com/android/browser/NavTabScroller.java2
-rw-r--r--src/com/android/browser/NavigationBarBase.java80
-rw-r--r--src/com/android/browser/NavigationBarPhone.java112
-rw-r--r--src/com/android/browser/NavigationBarTablet.java26
-rw-r--r--src/com/android/browser/PhoneUi.java151
-rw-r--r--src/com/android/browser/SuggestionsAdapter.java8
-rw-r--r--src/com/android/browser/TabBar.java28
-rw-r--r--src/com/android/browser/TabControl.java14
-rw-r--r--src/com/android/browser/TitleBar.java2
-rw-r--r--src/com/android/browser/XLargeUi.java24
-rw-r--r--src/com/android/browser/appmenu/AppMenu.java3
-rw-r--r--src/com/android/browser/appmenu/AppMenuAdapter.java7
-rw-r--r--src/com/android/browser/preferences/WebsiteSettingsFragment.java4
-rw-r--r--src/com/android/browser/provider/BrowserProvider.java6
-rw-r--r--src/com/android/browser/search/OpenSearchSearchEngine.java2
-rw-r--r--src/com/android/browser/view/StopProgressView.java98
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;
- }
-
-}