diff options
author | Michael Kolb <kolby@google.com> | 2011-03-03 10:38:40 -0800 |
---|---|---|
committer | Michael Kolb <kolby@google.com> | 2011-03-10 16:35:58 -0800 |
commit | eb95db48b01b3db935601f25bd1a2358674b76da (patch) | |
tree | e7af47e901a24152ae21e09ef3521d7aa4702929 /src/com/android/browser/view | |
parent | 9141437ca3f1fc44051d66df1b7379466f915895 (diff) | |
download | packages_apps_Browser-eb95db48b01b3db935601f25bd1a2358674b76da.zip packages_apps_Browser-eb95db48b01b3db935601f25bd1a2358674b76da.tar.gz packages_apps_Browser-eb95db48b01b3db935601f25bd1a2358674b76da.tar.bz2 |
add tabs to QuickControls
Bug: 4084343
The final act in a 3 act drama.
Adds tab thumbnails to QuickControls menu and
removes the tab bar.
Change-Id: Id667e8020745c3d77920858fcd9dd7f510973dd9
Diffstat (limited to 'src/com/android/browser/view')
-rw-r--r-- | src/com/android/browser/view/BasePieView.java | 13 | ||||
-rw-r--r-- | src/com/android/browser/view/PieListView.java | 1 | ||||
-rw-r--r-- | src/com/android/browser/view/PieMenu.java | 6 | ||||
-rw-r--r-- | src/com/android/browser/view/PieStackView.java | 104 |
4 files changed, 123 insertions, 1 deletions
diff --git a/src/com/android/browser/view/BasePieView.java b/src/com/android/browser/view/BasePieView.java index 515545a..2120215 100644 --- a/src/com/android/browser/view/BasePieView.java +++ b/src/com/android/browser/view/BasePieView.java @@ -33,6 +33,8 @@ public abstract class BasePieView implements PieMenu.PieView { private DataSetObserver mObserver; protected ArrayList<View> mViews; + protected OnLayoutListener mListener; + protected int mCurrent; protected int mChildWidth; protected int mChildHeight; @@ -44,6 +46,10 @@ public abstract class BasePieView implements PieMenu.PieView { public BasePieView() { } + public void setLayoutListener(OnLayoutListener l) { + mListener = l; + } + public void setAdapter(Adapter adapter) { mAdapter = adapter; if (adapter == null) { @@ -103,7 +109,12 @@ public abstract class BasePieView implements PieMenu.PieView { * needs to set top, left, width, height */ @Override - public abstract void layout(int anchorX, int anchorY, boolean left); + public void layout(int anchorX, int anchorY, boolean left) { + if (mListener != null) { + mListener.onLayout(anchorX, anchorY, left); + } + } + @Override public abstract void draw(Canvas canvas); diff --git a/src/com/android/browser/view/PieListView.java b/src/com/android/browser/view/PieListView.java index 5fee51d..8cd8a4e 100644 --- a/src/com/android/browser/view/PieListView.java +++ b/src/com/android/browser/view/PieListView.java @@ -40,6 +40,7 @@ public class PieListView extends BasePieView { */ @Override public void layout(int anchorX, int anchorY, boolean left) { + super.layout(anchorX, anchorY, left); buildViews(); mWidth = mChildWidth; mHeight = mChildHeight * mAdapter.getCount(); diff --git a/src/com/android/browser/view/PieMenu.java b/src/com/android/browser/view/PieMenu.java index 22ebd18..e494d19 100644 --- a/src/com/android/browser/view/PieMenu.java +++ b/src/com/android/browser/view/PieMenu.java @@ -51,6 +51,12 @@ public class PieMenu extends FrameLayout { */ public interface PieView { + public interface OnLayoutListener { + public void onLayout(int ax, int ay, boolean left); + } + + public void setLayoutListener(OnLayoutListener l); + public void layout(int anchorX, int anchorY, boolean onleft); public void draw(Canvas c); diff --git a/src/com/android/browser/view/PieStackView.java b/src/com/android/browser/view/PieStackView.java new file mode 100644 index 0000000..df387ad --- /dev/null +++ b/src/com/android/browser/view/PieStackView.java @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.browser.view; + +import com.android.browser.R; + +import android.content.Context; +import android.graphics.Canvas; +import android.view.View; + +/** + * shows views in a stack + */ +public class PieStackView extends BasePieView { + + private static final int SLOP = 5; + + private OnCurrentListener mCurrentListener; + private int mMinHeight; + + public interface OnCurrentListener { + public void onSetCurrent(int index); + } + + public PieStackView(Context ctx) { + mMinHeight = (int) ctx.getResources() + .getDimension(R.dimen.qc_tab_title_height); + } + + public void setOnCurrentListener(OnCurrentListener l) { + mCurrentListener = l; + } + + @Override + public void setCurrent(int ix) { + super.setCurrent(ix); + if (mCurrentListener != null) { + mCurrentListener.onSetCurrent(ix); + buildViews(); + layoutChildrenLinear(); + } + } + + /** + * this will be called before the first draw call + */ + @Override + public void layout(int anchorX, int anchorY, boolean left) { + super.layout(anchorX, anchorY, left); + buildViews(); + mWidth = mChildWidth; + mHeight = mChildHeight + (mViews.size() - 1) * mMinHeight; + mLeft = anchorX + (left ? SLOP : -(SLOP + mChildWidth)); + mTop = anchorY - mHeight / 2; + if (mViews != null) { + layoutChildrenLinear(); + } + } + + private void layoutChildrenLinear() { + final int n = mViews.size(); + int top = mTop; + int dy = (n == 1) ? 0 : (mHeight - mChildHeight) / (n - 1); + for (View view : mViews) { + view.layout(mLeft, top, mLeft + mChildWidth, top + mChildHeight); + top += dy; + } + } + + @Override + public void draw(Canvas canvas) { + if (mViews != null) { + final int n = mViews.size(); + for (int i = 0; i < mCurrent; i++) { + drawView(mViews.get(i), canvas); + } + for (int i = n - 1; i > mCurrent; i--) { + drawView(mViews.get(i), canvas); + } + drawView(mViews.get(mCurrent), canvas); + } + } + + @Override + protected int findChildAt(int y) { + final int ix = (y - mTop) * mViews.size() / mHeight; + return ix; + } + +} |