| /* |
| * 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.graphics.Paint; |
| import android.view.View; |
| |
| /** |
| * shows views in a menu style list |
| */ |
| public class PieListView extends BasePieView { |
| |
| private Paint mBgPaint; |
| |
| public PieListView(Context ctx) { |
| mBgPaint = new Paint(); |
| mBgPaint.setColor(ctx.getResources().getColor(R.color.qcMenuBackground)); |
| } |
| |
| /** |
| * this will be called before the first draw call |
| */ |
| @Override |
| public void layout(int anchorX, int anchorY, boolean left, float angle, |
| int pHeight) { |
| super.layout(anchorX, anchorY, left, angle, pHeight); |
| buildViews(); |
| mWidth = mChildWidth; |
| mHeight = mChildHeight * mAdapter.getCount(); |
| mLeft = anchorX + (left ? 0 : - mChildWidth); |
| mTop = Math.max(anchorY - mHeight / 2, 0); |
| if (mTop + mHeight > pHeight) { |
| mTop = pHeight - mHeight; |
| } |
| if (mViews != null) { |
| layoutChildrenLinear(); |
| } |
| } |
| |
| protected void layoutChildrenLinear() { |
| final int n = mViews.size(); |
| int top = mTop; |
| for (View view : mViews) { |
| view.layout(mLeft, top, mLeft + mChildWidth, top + mChildHeight); |
| top += mChildHeight; |
| } |
| } |
| |
| @Override |
| public void draw(Canvas canvas) { |
| canvas.drawRect(mLeft, mTop, mLeft + mWidth, mTop + mHeight, mBgPaint); |
| if (mViews != null) { |
| for (View view : mViews) { |
| drawView(view, canvas); |
| } |
| } |
| } |
| |
| @Override |
| protected int findChildAt(int y) { |
| final int ix = (y - mTop) * mViews.size() / mHeight; |
| return ix; |
| } |
| |
| } |