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/PieStackView.java | |
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/PieStackView.java')
-rw-r--r-- | src/com/android/browser/view/PieStackView.java | 104 |
1 files changed, 104 insertions, 0 deletions
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; + } + +} |