Home | History | Annotate | Download | only in ui
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
      5  * use this file except in compliance with the License. You may obtain a copy of
      6  * the License at
      7  *
      8  * http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
     13  * License for the specific language governing permissions and limitations under
     14  * the License.
     15  */
     16 
     17 package com.android.camera.ui;
     18 
     19 import android.content.Context;
     20 import android.graphics.Canvas;
     21 import android.graphics.Path;
     22 import android.graphics.drawable.Drawable;
     23 
     24 import java.util.ArrayList;
     25 import java.util.List;
     26 
     27 /**
     28  * Pie menu item
     29  */
     30 public class PieItem {
     31 
     32     public static interface OnClickListener {
     33         void onClick(PieItem item);
     34     }
     35 
     36     private Drawable mDrawable;
     37     private int level;
     38 
     39     private boolean mSelected;
     40     private boolean mEnabled;
     41     private List<PieItem> mItems;
     42     private Path mPath;
     43     private OnClickListener mOnClickListener;
     44     private float mAlpha;
     45     private CharSequence mLabel;
     46 
     47     // Gray out the view when disabled
     48     private static final float ENABLED_ALPHA = 1;
     49     private static final float DISABLED_ALPHA = (float) 0.3;
     50     private boolean mChangeAlphaWhenDisabled = true;
     51 
     52     public PieItem(Drawable drawable, int level) {
     53         mDrawable = drawable;
     54         this.level = level;
     55         if (drawable != null) {
     56             setAlpha(1f);
     57         }
     58         mEnabled = true;
     59     }
     60 
     61     public void setLabel(CharSequence txt) {
     62         mLabel = txt;
     63     }
     64 
     65     public CharSequence getLabel() {
     66         return mLabel;
     67     }
     68 
     69     public boolean hasItems() {
     70         return mItems != null;
     71     }
     72 
     73     public List<PieItem> getItems() {
     74         return mItems;
     75     }
     76 
     77     public void addItem(PieItem item) {
     78         if (mItems == null) {
     79             mItems = new ArrayList<PieItem>();
     80         }
     81         mItems.add(item);
     82     }
     83 
     84     public void clearItems() {
     85         mItems = null;
     86     }
     87 
     88     public void setLevel(int level) {
     89         this.level = level;
     90     }
     91 
     92     public void setPath(Path p) {
     93         mPath = p;
     94     }
     95 
     96     public Path getPath() {
     97         return mPath;
     98     }
     99 
    100     public void setChangeAlphaWhenDisabled (boolean enable) {
    101         mChangeAlphaWhenDisabled = enable;
    102     }
    103 
    104     public void setAlpha(float alpha) {
    105         mAlpha = alpha;
    106         mDrawable.setAlpha((int) (255 * alpha));
    107     }
    108 
    109     public void setEnabled(boolean enabled) {
    110         mEnabled = enabled;
    111         if (mChangeAlphaWhenDisabled) {
    112             if (mEnabled) {
    113                 setAlpha(ENABLED_ALPHA);
    114             } else {
    115                 setAlpha(DISABLED_ALPHA);
    116             }
    117         }
    118     }
    119 
    120     public boolean isEnabled() {
    121         return mEnabled;
    122     }
    123 
    124     public void setSelected(boolean s) {
    125         mSelected = s;
    126     }
    127 
    128     public boolean isSelected() {
    129         return mSelected;
    130     }
    131 
    132     public int getLevel() {
    133         return level;
    134     }
    135 
    136 
    137     public void setOnClickListener(OnClickListener listener) {
    138         mOnClickListener = listener;
    139     }
    140 
    141     public void performClick() {
    142         if (mOnClickListener != null) {
    143             mOnClickListener.onClick(this);
    144         }
    145     }
    146 
    147     public int getIntrinsicWidth() {
    148         return mDrawable.getIntrinsicWidth();
    149     }
    150 
    151     public int getIntrinsicHeight() {
    152         return mDrawable.getIntrinsicHeight();
    153     }
    154 
    155     public void setBounds(int left, int top, int right, int bottom) {
    156         mDrawable.setBounds(left, top, right, bottom);
    157     }
    158 
    159     public void draw(Canvas canvas) {
    160         mDrawable.draw(canvas);
    161     }
    162 
    163     public void setImageResource(Context context, int resId) {
    164         Drawable d = context.getResources().getDrawable(resId).mutate();
    165         d.setBounds(mDrawable.getBounds());
    166         mDrawable = d;
    167         setAlpha(mAlpha);
    168     }
    169 
    170 }
    171