/* * Copyright (C) 2012 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.camera.ui; import android.content.Context; import android.graphics.Canvas; import android.graphics.Path; import android.graphics.drawable.Drawable; import java.util.ArrayList; import java.util.List; /** * Pie menu item */ public class PieItem { public static interface OnClickListener { void onClick(PieItem item); } private Drawable mDrawable; private int level; private boolean mSelected; private boolean mEnabled; private List mItems; private Path mPath; private OnClickListener mOnClickListener; private float mAlpha; private CharSequence mLabel; // Gray out the view when disabled private static final float ENABLED_ALPHA = 1; private static final float DISABLED_ALPHA = (float) 0.3; private boolean mChangeAlphaWhenDisabled = true; public PieItem(Drawable drawable, int level) { mDrawable = drawable; this.level = level; if (drawable != null) { setAlpha(1f); } mEnabled = true; } public void setLabel(CharSequence txt) { mLabel = txt; } public CharSequence getLabel() { return mLabel; } public boolean hasItems() { return mItems != null; } public List getItems() { return mItems; } public void addItem(PieItem item) { if (mItems == null) { mItems = new ArrayList(); } mItems.add(item); } public void clearItems() { mItems = null; } public void setLevel(int level) { this.level = level; } public void setPath(Path p) { mPath = p; } public Path getPath() { return mPath; } public void setChangeAlphaWhenDisabled (boolean enable) { mChangeAlphaWhenDisabled = enable; } public void setAlpha(float alpha) { mAlpha = alpha; mDrawable.setAlpha((int) (255 * alpha)); } public void setEnabled(boolean enabled) { mEnabled = enabled; if (mChangeAlphaWhenDisabled) { if (mEnabled) { setAlpha(ENABLED_ALPHA); } else { setAlpha(DISABLED_ALPHA); } } } public boolean isEnabled() { return mEnabled; } public void setSelected(boolean s) { mSelected = s; } public boolean isSelected() { return mSelected; } public int getLevel() { return level; } public void setOnClickListener(OnClickListener listener) { mOnClickListener = listener; } public void performClick() { if (mOnClickListener != null) { mOnClickListener.onClick(this); } } public int getIntrinsicWidth() { return mDrawable.getIntrinsicWidth(); } public int getIntrinsicHeight() { return mDrawable.getIntrinsicHeight(); } public void setBounds(int left, int top, int right, int bottom) { mDrawable.setBounds(left, top, right, bottom); } public void draw(Canvas canvas) { mDrawable.draw(canvas); } public void setImageResource(Context context, int resId) { Drawable d = context.getResources().getDrawable(resId).mutate(); d.setBounds(mDrawable.getBounds()); mDrawable = d; setAlpha(mAlpha); } }