summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/IconListPreference.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/IconListPreference.java')
-rw-r--r--src/com/android/camera/IconListPreference.java38
1 files changed, 31 insertions, 7 deletions
diff --git a/src/com/android/camera/IconListPreference.java b/src/com/android/camera/IconListPreference.java
index 25c641c..54a101f 100644
--- a/src/com/android/camera/IconListPreference.java
+++ b/src/com/android/camera/IconListPreference.java
@@ -24,32 +24,56 @@ import android.util.AttributeSet;
/** A {@code ListPreference} where each entry has a corresponding icon. */
public class IconListPreference extends ListPreference {
+
+ private final int mIconIds[];
+ private final int mLargeIconIds[];
+
private Drawable mIcons[];
- private Resources mResources;
+ private final Resources mResources;
public IconListPreference(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(
attrs, R.styleable.IconListPreference, 0, 0);
mResources = context.getResources();
- setIcons(a.getResourceId(R.styleable.IconListPreference_icons, 0));
+ mIconIds = getIconIds(a.getResourceId(
+ R.styleable.IconListPreference_icons, 0));
+ mLargeIconIds = getIconIds(a.getResourceId(
+ R.styleable.IconListPreference_largeIcons, 0));
a.recycle();
}
public Drawable[] getIcons() {
+ if (mIcons == null) {
+ int n = mIconIds.length;
+ Drawable[] drawable = new Drawable[n];
+ int[] id = mIconIds;
+ for (int i = 0; i < n; ++i) {
+ drawable[i] = id[i] == 0 ? null : mResources.getDrawable(id[i]);
+ }
+ mIcons = drawable;
+ }
return mIcons;
}
- private void setIcons(int iconsRes) {
+ public int[] getLargeIconIds() {
+ return mLargeIconIds;
+ }
+
+ public int[] getIconIds() {
+ return mIconIds;
+ }
+
+ private int[] getIconIds(int iconsRes) {
+ if (iconsRes == 0) return null;
TypedArray array = mResources.obtainTypedArray(iconsRes);
int n = array.length();
- Drawable drawable[] = new Drawable[n];
+ int ids[] = new int[n];
for (int i = 0; i < n; ++i) {
- int id = array.getResourceId(i, 0);
- drawable[i] = id == 0 ? null : mResources.getDrawable(id);
+ ids[i] = array.getResourceId(i, 0);
}
array.recycle();
- mIcons = drawable;
+ return ids;
}
public void setIcons(Drawable[] icons) {