• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of 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,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.messaging.ui.mediapicker.camerafocus;
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 {
onClick(PieItem item)33         void onClick(PieItem item);
34     }
35 
36     private Drawable mDrawable;
37     private int level;
38     private float mCenter;
39     private float start;
40     private float sweep;
41     private float animate;
42     private int inner;
43     private int outer;
44     private boolean mSelected;
45     private boolean mEnabled;
46     private List<PieItem> mItems;
47     private Path mPath;
48     private OnClickListener mOnClickListener;
49     private float mAlpha;
50 
51     // Gray out the view when disabled
52     private static final float ENABLED_ALPHA = 1;
53     private static final float DISABLED_ALPHA = (float) 0.3;
54     private boolean mChangeAlphaWhenDisabled = true;
55 
PieItem(Drawable drawable, int level)56     public PieItem(Drawable drawable, int level) {
57         mDrawable = drawable;
58         this.level = level;
59         setAlpha(1f);
60         mEnabled = true;
61         setAnimationAngle(getAnimationAngle());
62         start = -1;
63         mCenter = -1;
64     }
65 
hasItems()66     public boolean hasItems() {
67         return mItems != null;
68     }
69 
getItems()70     public List<PieItem> getItems() {
71         return mItems;
72     }
73 
addItem(PieItem item)74     public void addItem(PieItem item) {
75         if (mItems == null) {
76             mItems = new ArrayList<PieItem>();
77         }
78         mItems.add(item);
79     }
80 
setPath(Path p)81     public void setPath(Path p) {
82         mPath = p;
83     }
84 
getPath()85     public Path getPath() {
86         return mPath;
87     }
88 
setChangeAlphaWhenDisabled(boolean enable)89     public void setChangeAlphaWhenDisabled (boolean enable) {
90         mChangeAlphaWhenDisabled = enable;
91     }
92 
setAlpha(float alpha)93     public void setAlpha(float alpha) {
94         mAlpha = alpha;
95         mDrawable.setAlpha((int) (255 * alpha));
96     }
97 
setAnimationAngle(float a)98     public void setAnimationAngle(float a) {
99         animate = a;
100     }
101 
getAnimationAngle()102     public float getAnimationAngle() {
103         return animate;
104     }
105 
setEnabled(boolean enabled)106     public void setEnabled(boolean enabled) {
107         mEnabled = enabled;
108         if (mChangeAlphaWhenDisabled) {
109             if (mEnabled) {
110                 setAlpha(ENABLED_ALPHA);
111             } else {
112                 setAlpha(DISABLED_ALPHA);
113             }
114         }
115     }
116 
isEnabled()117     public boolean isEnabled() {
118         return mEnabled;
119     }
120 
setSelected(boolean s)121     public void setSelected(boolean s) {
122         mSelected = s;
123     }
124 
isSelected()125     public boolean isSelected() {
126         return mSelected;
127     }
128 
getLevel()129     public int getLevel() {
130         return level;
131     }
132 
setGeometry(float st, float sw, int inside, int outside)133     public void setGeometry(float st, float sw, int inside, int outside) {
134         start = st;
135         sweep = sw;
136         inner = inside;
137         outer = outside;
138     }
139 
setFixedSlice(float center, float sweep)140     public void setFixedSlice(float center, float sweep) {
141         mCenter = center;
142         this.sweep = sweep;
143     }
144 
getCenter()145     public float getCenter() {
146         return mCenter;
147     }
148 
getStart()149     public float getStart() {
150         return start;
151     }
152 
getStartAngle()153     public float getStartAngle() {
154         return start + animate;
155     }
156 
getSweep()157     public float getSweep() {
158         return sweep;
159     }
160 
getInnerRadius()161     public int getInnerRadius() {
162         return inner;
163     }
164 
getOuterRadius()165     public int getOuterRadius() {
166         return outer;
167     }
168 
setOnClickListener(OnClickListener listener)169     public void setOnClickListener(OnClickListener listener) {
170         mOnClickListener = listener;
171     }
172 
performClick()173     public void performClick() {
174         if (mOnClickListener != null) {
175             mOnClickListener.onClick(this);
176         }
177     }
178 
getIntrinsicWidth()179     public int getIntrinsicWidth() {
180         return mDrawable.getIntrinsicWidth();
181     }
182 
getIntrinsicHeight()183     public int getIntrinsicHeight() {
184         return mDrawable.getIntrinsicHeight();
185     }
186 
setBounds(int left, int top, int right, int bottom)187     public void setBounds(int left, int top, int right, int bottom) {
188         mDrawable.setBounds(left, top, right, bottom);
189     }
190 
draw(Canvas canvas)191     public void draw(Canvas canvas) {
192         mDrawable.draw(canvas);
193     }
194 
setImageResource(Context context, int resId)195     public void setImageResource(Context context, int resId) {
196         Drawable d = context.getResources().getDrawable(resId).mutate();
197         d.setBounds(mDrawable.getBounds());
198         mDrawable = d;
199         setAlpha(mAlpha);
200     }
201 
202 }