diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/com/android/browser/PieControl.java | 16 | ||||
| -rw-r--r-- | src/com/android/browser/TitleBarXLarge.java | 14 | ||||
| -rw-r--r-- | src/com/android/browser/UrlInputView.java | 6 | ||||
| -rw-r--r-- | src/com/android/browser/XLargeUi.java | 17 | ||||
| -rw-r--r-- | src/com/android/browser/view/PieMenu.java | 70 |
5 files changed, 93 insertions, 30 deletions
diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java index 23dcced69..2e2eba433 100644 --- a/src/com/android/browser/PieControl.java +++ b/src/com/android/browser/PieControl.java @@ -64,22 +64,22 @@ public class PieControl implements OnClickListener, PieMenu.PieController { LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); mPie.setLayoutParams(lp); - mForward = makeMenuView(R.drawable.ic_pie_forward); - mPie.addItem(mForward); - mRefresh = makeMenuView(R.drawable.ic_pie_refresh); - mPie.addItem(mRefresh); + mNewTab = makeMenuView(R.drawable.ic_pie_new_tab); + mPie.addItem(mNewTab); mBack = makeMenuView(R.drawable.ic_pie_back); mPie.addItem(mBack); mUrl = makeMenuView(R.drawable.ic_pie_web); mPie.addItem(mUrl); mBookmarks = makeMenuView(R.drawable.ic_pie_bookmarks); mPie.addItem(mBookmarks); - mNewTab = makeMenuView(R.drawable.ic_pie_new_tab); - mPie.addItem(mNewTab); mOptions = makeMenuView(R.drawable.ic_pie_more); mPie.addItem(mOptions); - setClickListener(mBack, mForward, mRefresh, mUrl, mOptions, - mBookmarks, mNewTab); + setClickListener(mBack, + mUrl, + mOptions, + mBookmarks, + mNewTab + ); mPie.setController(this); } container.addView(mPie); diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java index 14e7c7207..d5a6f9735 100644 --- a/src/com/android/browser/TitleBarXLarge.java +++ b/src/com/android/browser/TitleBarXLarge.java @@ -170,17 +170,6 @@ public class TitleBarXLarge extends TitleBarBase mUseQuickControls = useQuickControls; mUrlInput.setUseQuickControls(mUseQuickControls); setLayoutParams(makeLayoutParams()); - if (mUseQuickControls) { - mBackButton.setVisibility(View.GONE); - mForwardButton.setVisibility(View.GONE); - mStopButton.setVisibility(View.GONE); - mAllButton.setVisibility(View.GONE); - } else { - mBackButton.setVisibility(View.VISIBLE); - mForwardButton.setVisibility(View.VISIBLE); - mStopButton.setVisibility(View.VISIBLE); - mAllButton.setVisibility(View.VISIBLE); - } } void setShowProgressOnly(boolean progress) { @@ -207,6 +196,9 @@ public class TitleBarXLarge extends TitleBarBase } else if (!mUrlInput.needsUpdate()) { mUrlInput.dismissDropDown(); mUrlInput.hideIME(); + if (mUseQuickControls) { + mUi.hideTitleBar(); + } } mUrlInput.clearNeedsUpdate(); } diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java index 2ec21111b..c9f4c6a9d 100644 --- a/src/com/android/browser/UrlInputView.java +++ b/src/com/android/browser/UrlInputView.java @@ -57,7 +57,6 @@ public class UrlInputView extends AutoCompleteTextView private View mContainer; private boolean mLandscape; private boolean mIncognitoMode; - private int mVOffset; private boolean mNeedsUpdate; public UrlInputView(Context context, AttributeSet attrs, int defStyle) { @@ -84,7 +83,6 @@ public class UrlInputView extends AutoCompleteTextView onConfigurationChanged(ctx.getResources().getConfiguration()); setThreshold(1); setOnItemClickListener(this); - mVOffset = 0; mNeedsUpdate = false; } @@ -109,9 +107,6 @@ public class UrlInputView extends AutoCompleteTextView } void setUseQuickControls(boolean useQuickControls) { - mVOffset = (useQuickControls - ? (int) getResources().getDimension(R.dimen.dropdown_offset) - : 0); mAdapter.setReverseResults(useQuickControls); } @@ -159,7 +154,6 @@ public class UrlInputView extends AutoCompleteTextView if (getLeft() != -getDropDownHorizontalOffset()) { setDropDownHorizontalOffset(-getLeft()); } - setDropDownVerticalOffset(mVOffset); } @Override diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java index 8c7756b62..d3f83f9ad 100644 --- a/src/com/android/browser/XLargeUi.java +++ b/src/com/android/browser/XLargeUi.java @@ -32,6 +32,7 @@ import android.view.KeyEvent; import android.view.View; import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebView; +import android.widget.FrameLayout; import java.util.List; @@ -333,7 +334,6 @@ public class XLargeUi extends BaseUi implements ScrollListener { protected void showTitleBar() { if (canShowTitleBar()) { if (mUseQuickControls) { - setTitleGravity(Gravity.BOTTOM); mContentView.addView(mTitleBar); } else { setTitleGravity(Gravity.TOP); @@ -347,9 +347,10 @@ public class XLargeUi extends BaseUi implements ScrollListener { protected void hideTitleBar() { if (isTitleBarShowing()) { mTabBar.onHideTitleBar(); - setTitleGravity(Gravity.NO_GRAVITY); if (mUseQuickControls) { mContentView.removeView(mTitleBar); + } else { + setTitleGravity(Gravity.NO_GRAVITY); } super.hideTitleBar(); } @@ -364,6 +365,18 @@ public class XLargeUi extends BaseUi implements ScrollListener { return mTitleBar; } + @Override + protected void setTitleGravity(int gravity) { + if (mUseQuickControls) { + FrameLayout.LayoutParams lp = + (FrameLayout.LayoutParams) mTitleBar.getLayoutParams(); + lp.gravity = gravity; + mTitleBar.setLayoutParams(lp); + } else { + super.setTitleGravity(gravity); + } + } + // action mode callbacks @Override diff --git a/src/com/android/browser/view/PieMenu.java b/src/com/android/browser/view/PieMenu.java index 5185adbbf..080c2579a 100644 --- a/src/com/android/browser/view/PieMenu.java +++ b/src/com/android/browser/view/PieMenu.java @@ -20,15 +20,21 @@ import com.android.browser.R; import android.content.Context; 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.Point; import android.graphics.PointF; import android.graphics.Rect; import android.graphics.RectF; +import android.graphics.Shader; +import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.MotionEvent; +import android.view.SoundEffectConstants; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; @@ -64,6 +70,17 @@ public class PieMenu extends FrameLayout { private boolean mDirty; + private Drawable mActiveDrawable; + private Drawable mInactiveDrawable; + private final Paint mActiveShaderPaint = new Paint(); + private final Paint mInactiveShaderPaint = new Paint(); + private final Matrix mActiveMatrix = new Matrix(); + private final Matrix mInactiveMatrix = new Matrix(); + + private BitmapShader mActiveShader; + private BitmapShader mInactiveShader; + + /** * @param context * @param attrs @@ -111,6 +128,37 @@ public class PieMenu extends FrameLayout { setDrawingCacheEnabled(false); mCenter = new Point(0,0); mDirty = true; + mActiveShaderPaint.setStyle(Paint.Style.FILL); + mActiveShaderPaint.setAntiAlias(true); + + mInactiveShaderPaint.setStyle(Paint.Style.FILL); + mInactiveShaderPaint.setAntiAlias(true); + mActiveDrawable = res.getDrawable(R.drawable.qc_background_selected); + mInactiveDrawable = res.getDrawable(R.drawable.qc_background_normal); + + Bitmap activeTexture = getDrawableAsBitmap(mActiveDrawable, + mActiveDrawable.getIntrinsicWidth(), + mActiveDrawable.getIntrinsicHeight()); + Bitmap inactiveTexture = getDrawableAsBitmap(mInactiveDrawable, + mInactiveDrawable.getIntrinsicWidth(), + mInactiveDrawable.getIntrinsicHeight()); + + mActiveShader = new BitmapShader(activeTexture, + Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + mActiveShaderPaint.setShader(mActiveShader); + + mInactiveShader = new BitmapShader(inactiveTexture, + Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + mInactiveShaderPaint.setShader(mInactiveShader); + + } + + private static Bitmap getDrawableAsBitmap(Drawable drawable, int width, int height) { + Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas c = new Canvas(b); + drawable.setBounds(0, 0, width, height); + drawable.draw(c); + return b; } public void setController(PieController ctl) { @@ -268,10 +316,15 @@ public class PieMenu extends FrameLayout { tag.sweep = sweep; tag.inner = inner; tag.outer = outer; - - Paint p = item.isPressed() ? mSelectedPaint : mPaint; - canvas.drawPath(slice, p); int state = canvas.save(); + int[] topLeft = new int[2]; + getLocationInWindow(topLeft); + topLeft[0] = mCenter.x - outer; + topLeft[1] = mCenter.y - outer; + Paint paint = item.isPressed() ? mActiveShaderPaint : mInactiveShaderPaint; + drawClipped(canvas, paint, slice, topLeft, item.isPressed()); + canvas.restoreToCount(state); + state = canvas.save(); if (onTheLeft()) { canvas.scale(-1, 1); } @@ -287,6 +340,16 @@ public class PieMenu extends FrameLayout { return newanchor; } + private void drawClipped(Canvas canvas, Paint paint, Path clipPath, int[] pos, + boolean selected) { + // TODO: We should change the matrix/shader only when needed + final Matrix matrix = selected ? mActiveMatrix : mInactiveMatrix; + matrix.setTranslate(pos[0], pos[1]); + (selected ? mActiveShader : mInactiveShader).setLocalMatrix(matrix); + canvas.drawPath(clipPath, paint); + } + + /** * converts a * @param angle from 0..PI to Android degrees (clockwise starting at 3 o'clock) @@ -391,6 +454,7 @@ public class PieMenu extends FrameLayout { } if (view != null) { // clear up stack + playSoundEffect(SoundEffectConstants.CLICK); MenuTag tag = (MenuTag) view.getTag(); int i = mStack.size() - 1; while (i > 0) { |
