diff options
Diffstat (limited to 'src/com/android/camera/IconListPreference.java')
-rw-r--r-- | src/com/android/camera/IconListPreference.java | 38 |
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) { |