summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/view/PieStackView.java
diff options
context:
space:
mode:
authorMichael Kolb <kolby@google.com>2011-03-03 10:38:40 -0800
committerMichael Kolb <kolby@google.com>2011-03-10 16:35:58 -0800
commiteb95db48b01b3db935601f25bd1a2358674b76da (patch)
treee7af47e901a24152ae21e09ef3521d7aa4702929 /src/com/android/browser/view/PieStackView.java
parent9141437ca3f1fc44051d66df1b7379466f915895 (diff)
downloadpackages_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.java104
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;
+ }
+
+}